Github Actionsで、DigdagのワークフローをTreasure WorkflowにPushするテンプレートを以前サンプルで作ってみた。
Github Actionsのテンプレートを使わずに、ワークフローを管理するリポジトリの中で完結させ、DigdagのDockerをPullして、シェルスクリプトを動かすにはどうしたらいいかなと思い、試してみた。
フォルダ構成をこんな感じにしておく。一つのリポジトリに複数のプロジェクトがある。
- .github/workflows/Dockerfile
- .github/workflows/entrypoint.sh
- .github/workflows/deploy.yml
- project1/xxx.dig
- project2/xxx.dig
Dockerfileを下記のように作る。
FROM szyn/docker-digdag:latest ADD entrypoint.sh /entrypoint.sh RUN chmod +x /entrypoint.sh ENTRYPOINT ["/entrypoint.sh"]
entrypoint.shではTreasure WorkflowにPushする。--projectのオプションでプロジェクトを別々にプッシュすることを忘れずに。
#!/bin/bash digdag push project1 --project project1/ --endpoint $td_wf_endpoint -X client.http.headers.authorization="TD1 $td_master_apikey" digdag push project2 --project project2/ --endpoint $td_wf_endpoint -X client.http.headers.authorization="TD1 $td_master_apikey"
uses: actions/checkout@v2
でリポジトリがCloneできる。
uses: ./.github/workflows/
でDockerfileがあるディレクトリを指定するとDockerで色々できる。
name: Treasure Workflow Deploy on: push jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: ./.github/workflows/ env: # Treasure Workflow API Endpoint td_wf_endpoint: api-workflow.treasuredata.com # Treasure Data Master API td_master_apikey: ${{ secrets.td_master_apikey }}
サンプルのリポジトリはこちら。
はまったところ
uses: docker://~
というフォーマットでDockerのimageを指定できるので、これとscriptとかrunのアクションを組み合わせて実現するのかと思っていたら、全然違っていたのでここに供養する。(あれ、scriptを組み合わせてできるのかな?)