LoginSignup
1
1

More than 5 years have passed since last update.

★非推奨 - Digdagからsh>でEmbulk起動時にプラグインバージョンを固定(ローカルgemあり版)

Last updated at Posted at 2017-04-04

ローカルgemなし版の続き

★この記事はEmbulk 0.8.24以降は使えない(「後日談」参照)のため非推奨★ → 改良版

基本的な考え方

  1. digdagサーバにpushするプロジェクトディレクトリ内にgemファイルを持っておく
  2. dig実行の度にその先頭で以下を実行する(※1)
    1. NFSディレクトリ(※2)にEmbulkプラグインインストールディレクトリを作成
    2. 当該ディレクトリにインストール済のEmbulkプラグインを一旦全てアンインストール(※3、※4)
    3. 当該ディレクトリにEmbulkプラグインをインストール(※4)
  3. dig内でのEmbulk実行時にEmbulkプラグインインストールディレクトリを指定(※4)

※1:2回目以降は無意味だが許容
※2:こちらの理由と似たような感じ
※3:何らかの理由でバージョンを戻したい時や不要になったプラグインがある時の為
※4:embulkコマンドにホームディレクトリを指定(-J-Duser.homeオプション)

実際の内容

$ embulk --version
embulk 0.8.18
$ digdag version
2017-04-04 13:01:55 +0900: Digdag v0.9.8
Client version: 0.9.8
Server version: 0.9.8
$ ls -F
daily.dig  embulk/ embulk_gem_install.dig  embulk_gems/  params/  scripts/
$ ls embulk/
export_data.yml.liquid  import_data.yml.liquid
$ ls embulk_gems/
embulk-output-XXX-0.1.0.gem
$ ls scripts/
embulk_run.sh
daily.dig
!include : params/common/timezone.dig

_export:
  !include : params/common/params.dig # embulk_home_dirの定義

+embulk_gem_install:
  call>: embulk_gem_install.dig
+import_data:
  sh>: scripts/embulk_run.sh ${embulk_home_dir} embulk/import_data.yml.liquid
+export_data:
  sh>: scripts/embulk_run.sh ${embulk_home_dir} embulk/export_data.yml.liquid
embulk_gem_install.dig
!include : params/common/timezone.dig

_export:
  !include : params/common/params.dig # embulk_home_dirの定義

+mkdir:
  sh>: mkdir -p ${embulk_home_dir} # -pをつけているので2回目以降もエラーにならない
+uninstall:
  sh>: >-
    /usr/local/bin/embulk -J-Duser.home=${embulk_home_dir} gem uninstall --all
+install:
  sh>: >-
    /usr/local/bin/embulk -J-Duser.home=${embulk_home_dir} gem install
    embulk-input-td:0.1.0 # 通常のリポジトリからのインストール
    embulk-output-td:0.3.13
    embulk-input-sftp:0.2.3
    embulk-output-sftp:0.0.9
    embulk-filter-column:0.6.0
    embulk-filter-timestamp_format:0.2.4
    embulk_gems/embulk-output-XXX-0.1.0.gem # ローカルgemのインストール
embulk_run.sh
#!/bin/bash

if [ $# -ne 2 ]; then
  echo "Usage: $0 embulk_home_dir embulk_file" 1>&2
  exit 1
fi

/usr/local/bin/embulk -J-Duser.home=$1 run $2
exit $?

後日談 - 使えなくなった-J-Duser.homeオプション

0.8.23までは当該オプションで指定したディレクトリにプラグインがインストールされる
0.8.24以降では当該オプションが無視されて$HOMEにインストールされてしまう
0.8.24のリリースノートにあったMake environment variables immutable in JRuby/Javaが原因か

当該オプションを使用しない改良版

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1