GitBucket はご存知、takezoeさんを中心に開発されている素晴らしい GitHub クローンです。
同僚が作ってるプロダクトをトレジャーデータと連携させた記事がないのはあかん!と、ふと思い立ったので、 GitBucketでTreasure Workflow (Hosted Digdag)のソースコードをGitBucketで管理しつつ、GitBucketにPushしたら自動でTreasure WorkflowにPushされるようにしてみます。 GitBucketの他に、これまたtakezoeさんのGitBucket CI Pluginを組み合わせてTreasure WorkflowへのPushを実現します。
注意: 下記ブログにもある通り、GitBucket CI Pluginを用いた連携はあくまでお試しの設定です。あしからず。
また、このプラグインはあくまでGitBucketでのCIをWebフックやJenkinsなどの複雑な設定を行わなくても「試せる」ようにするためのものであり、本格的なCI/CDのために必要な柔軟性やスケーラビリティは持っていません。そのため、もしこのプラグインを試してGitBucketでのCIを本格的に使いたいと思った場合はJenkinsなどへの移行をおすすめします。
GitBucket 4.17.0をリリースしました - たけぞう瀕死ブログ
前提
GitBucketの諸々の設定は完了している状態。 (今回は、MacのLocalで動かしてます)
gitbucket-ci-pluginの設定
- gitbucket-ci-pluginをダウンロードする。Releases · takezoe/gitbucket-ci-plugin · GitHub
GITBUCKET_HOME/plugins
に配置する。(ローカルで動かす場合は、GITBUCKET_HOME=~/.gitbucket
)- PluginページでReloadする。
Repositoryの準備
とりあえず空のRepositoryを作成する。
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>'
.digファイルをPushしてみる。
適当な.digファイルを作っておき、Pushする。
+first_task: echo>: Hello from GitBucket
PushするとBuildのスクリプトが実行され、digdagコマンドが実行される。
APIKEYのヘッダーの記法を最初間違っていたので、エラーになったため、修正してRebuildを実行する。
'TD1 <TD Master APIKEY>'
のTD1
は固定値なのでHTTPヘッダーでAPIKEYを渡すときは忘れずに。
Buildが正常にうまくいったので、Treasure Workflowの画面を見てみる。
まとめ
シェルスクリプトが動けばなんとかなる。