Embulkプラグイン公開方法メモ(Hishidama's Embulk plugin release Memo) S-JIS[2015-10-12/2023-08-11] 変更履歴

Embulk プラグイン公開方法

Embulk自作プラグインの公開方法のメモ。


概要

Embulk(0.9以前)のプラグインはRubyGemsからダウンロードする方式になっているので、自作プラグインをリリース(公開)する場合は、このサイトに自作プラグインを登録(アップロード)する。
(RubyGemsはRubyのソフトウェアの配布用のサイトらしい)

RubyGemsに自作プラグインを登録する為には、アカウントを作成する必要がある。(メールアドレスだけあればいい。審査も何も無いようで、えらく簡単^^;)


RubyGemsのアカウント作成

  1. RubyGemsのサイトを開く。
  2. 右上の「SIGN UP」をクリックし、Sign up画面に移動する。
  3. メールアドレス・ハンドル(アカウント名)・パスワードを入力して「Sign up」ボタンを押す。

以上で登録は終了。
確認メールは送られて来ない模様(苦笑)


それから、このサイトへアップロードする為に、自分のマシン上に認証ファイルを配置する必要がある。

  1. RubyGemsのサイトを開き、サインイン(ログイン)する。
  2. 右上の自分のアカウント名のところをクリックし、自分の情報のページに移動する。
  3. 「Edit Profile」をクリックし、プロファイル設定画面に移動する。
  4. 下の方に「API ACCESS」という段落がある。
    そこに記載されている通り、APIキーファイルをダウンロードする。
    APIキーファイルのURLは「https://rubygems.org/api/v1/api_key.yaml」。ダウンロードする際はアカウントIDとパスワードを入力する必要がある。
  5. ダウンロードしたファイルを「~/.gem」の下に「credentials」というファイル名で配置する。
    Cygwin上でGradleを使って開発している場合、Cygwin内の自分のホームディレクトリーの下に配置すればよい)
    (Windowsの場合は%USERPROFILE%\.gemの下。[2020-09-12]
$ cd ~
$ mkdir .gem
$ curl -u アカウントID https://rubygems.org/api/v1/api_key.yaml > ~/.gem/credentials
$ chmod 0600 ~/.gem/credentials

自作プラグインのリリース

Embulkプラグイン(Java版)は以下のようにしてリリース(公開)する。

  1. build.gradleの中のプラグイン名や説明・作成者・メールアドレス等を変更する。
      spec.name          = "${project.name}"
      spec.version       = "${project.version}"
      spec.authors       = ["hishidama"]
      spec.summary       = %[Apache POI Excel parser plugin for Embulk]
      spec.description   = %[Parses Excel files(xls, xlsx) read by other file input plugins.]
      spec.email         = ["メールアドレス"]
      spec.licenses      = ["MIT"]
      spec.homepage      = "https://github.com/hishidama/embulk-parser-poi_excel"
    
  2. 念のためテストを実行して通ることを確認する。
    $ ./gradlew clean test
  3. アップロードコマンドを実行する。(RubyGemsにアカウント登録しておく必要がある)
    $ ./gradlew gemPush

インストールされているプラグインのバージョンアップ方法


久しぶりにリリースしようとしたら、エラーが出た^^;[2020-09-12]

$ ./gradlew gemPush
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:jar
:classpath
:gemspec
:gem
  Successfully built RubyGem
  Name: embulk-parser-poi_excel
  Version: 0.1.8
  File: embulk-parser-poi_excel-0.1.8.gem
:gemPushERROR:  While executing gem ... (RuntimeError)
    Can't find 'rubygems-update' in any repo. Check `gem source list`.


BUILD SUCCESSFUL

build.gradleを修正する必要がある。
(jruby-gradle.baseのバージョンを1.5.0にし、task gem, gemPushの内容を書き換える)

あと、Cygwin上でgemタスク(gemPushで実行される)を実行すると、生成されるgemファイルの中身が足りなくなった。
(この状態でembulk installしても、インストールは正常に終わるように見えるが、実際には認識されなくて実行できない)
コマンドプロンプトから「gradlew gemPush」を実行すればOK。


久しぶりにリリースしようとしたらまたエラーが出た。[2023-08-11]

> gradlew gemPush

> Task :gem
WARNING:  open-ended dependency on rake (>= 10.0, development) is not recommended
  if rake is semantically versioned, use:
    add_development_dependency 'rake', '~> 10.0'
WARNING:  See http://guides.rubygems.org/specification-reference/ for help
  Successfully built RubyGem
  Name: embulk-parser-poi_excel
  Version: 0.1.13
  File: embulk-parser-poi_excel-0.1.13.gem

> Task :gemPush
Enter your RubyGems.org credentials.
Don't have an account yet? Create one at https://rubygems.org/sign_up

HTTP Basic: Access denied.


FAILURE: Build failed with an exception.

RubyGems側で認証方法が変わったのか、APIキーを用意したらpushできた。

  1. https://rubygems.org/api/v1/api_key.yaml をダウンロードしてcredentialsというファイル名にする。
  2. ダウンロードしたファイルを $HOME/.gem/credentials に配置する

RubyGemsから特定のバージョンを非公開にする方法

RubyGemsにアップロードした特定バージョンを非公開にすることが出来る。[2020-09-12]

build.gradleにyankタスクを追加する。

task gemYank(type: JRubyExec) {
    jrubyArgs "-S"
    script "gem"
    scriptArgs "yank", "${project.name}", "-v", "0.1.8"	←非公開にしたいバージョンを指定する
}

そして、そのタスクを実行する。

$ ./gradlew gemYank

※RubyGems上で非公開になるだけで(削除されるわけではない模様)、同一バージョンをgemPushできるわけではないので注意。


gemファイルの中身を確認する方法

「gradlew gem」によってpkgディレクトリーの下にgemファイルが作られるが、その中を展開して確認する方法。[2020-09-12]

build.gradleにunpackタスクを追加する。

task gemUnpack(type: JRubyExec) {
    jrubyArgs "-S"
    script "gem"
    scriptArgs "unpack", "pkg/${project.name}-${project.version}.gem"
}

そして、そのタスクを実行する。

$ ./gradlew gemUnpack

プロジェクトディレクトリー直下に展開されたディレクトリーが作られる。


プラグイン作成へ戻る / Embulk目次へ戻る / 技術メモへ戻る
メールの送信先:ひしだま