Secret Ninja Blog

Support Engineering Manager してます

GitBucketとTreasure Workflowの連携

GitBucket はご存知、takezoeさんを中心に開発されている素晴らしい GitHub クローンです。

gitbucket.github.io

同僚が作ってるプロダクトをトレジャーデータと連携させた記事がないのはあかん!と、ふと思い立ったので、 GitBucketでTreasure Workflow (Hosted Digdag)のソースコードをGitBucketで管理しつつ、GitBucketにPushしたら自動でTreasure WorkflowにPushされるようにしてみます。 GitBucketの他に、これまたtakezoeさんのGitBucket CI Pluginを組み合わせてTreasure WorkflowへのPushを実現します。

github.com

注意: 下記ブログにもある通り、GitBucket CI Pluginを用いた連携はあくまでお試しの設定です。あしからず。

また、このプラグインはあくまでGitBucketでのCIをWebフックやJenkinsなどの複雑な設定を行わなくても「試せる」ようにするためのものであり、本格的なCI/CDのために必要な柔軟性やスケーラビリティは持っていません。そのため、もしこのプラグインを試してGitBucketでのCIを本格的に使いたいと思った場合はJenkinsなどへの移行をおすすめします。

GitBucket 4.17.0をリリースしました - たけぞう瀕死ブログ

前提

GitBucketの諸々の設定は完了している状態。 (今回は、MacのLocalで動かしてます)

gitbucket-ci-pluginの設定

  1. gitbucket-ci-pluginをダウンロードする。Releases · takezoe/gitbucket-ci-plugin · GitHub
  2. GITBUCKET_HOME/pluginsに配置する。(ローカルで動かす場合は、GITBUCKET_HOME=~/.gitbucket
  3. PluginページでReloadする。

f:id:toru-takahashi:20190820210607p:plain

Repositoryの準備

とりあえず空のRepositoryを作成する。

f:id:toru-takahashi:20190820211324p:plain

CIのBuildの設定

事前にDigdag(Treasure Wokflowでも良い)はGitBucketと同じマシーンにインストールしておく。

Buildのコマンド設定画面で下記コマンドを設定する。

digdag push <workflow_name> -e api-workflow.treasuredata.com -X client.http.headers.authorization='TD1 <TD Master APIKEY>'

f:id:toru-takahashi:20190820212025p:plain

.digファイルをPushしてみる。

適当な.digファイルを作っておき、Pushする。

+first_task:
  echo>: Hello from GitBucket

f:id:toru-takahashi:20190820212727p:plain

PushするとBuildのスクリプトが実行され、digdagコマンドが実行される。

f:id:toru-takahashi:20190820213102p:plain

APIKEYのヘッダーの記法を最初間違っていたので、エラーになったため、修正してRebuildを実行する。 'TD1 <TD Master APIKEY>'TD1は固定値なのでHTTPヘッダーでAPIKEYを渡すときは忘れずに。

f:id:toru-takahashi:20190820213935p:plain

Buildが正常にうまくいったので、Treasure Workflowの画面を見てみる。

f:id:toru-takahashi:20190820214102p:plain

まとめ

シェルスクリプトが動けばなんとかなる。