TD Workflows は Git などのバージョン管理ツールや CircleCI などの継続的インテグレーションツールと併用できます。このチュートリアルでは、GitHub と CircleCI を使用して継続的デプロイパイプラインをセットアップする方法を説明します。
まだ行っていない場合は、ワークフロープロジェクトを含む git リポジトリを GitHub に作成します。Git と GitHub の使用方法の詳細については、GitHub Bootcamp を参照してください。
プロジェクトに CircleCI 設定ファイルを追加します。ファイル名は config.yml とし、.circleci というトップディレクトリに配置し、以下の内容を記述します。その後、コミットして GitHub にプッシュします。
version: 2.1
executors:
my_executor:
docker:
- image: ruby:2.7.2-buster
jobs:
digdag:
executor: my_executor
steps:
- checkout
- run:
name: Setup
command: |
gem install td
yes | td -e https://api.treasuredata.com -k dummy wf || true
- run:
name: Check config
command: cd workflow && td wf check
- run:
name: Push project
command: td -e https://api.treasuredata.com -k $TD_API_KEY wf push $WF_PROJECT -r `date -u +"%Y-%m-%dT%H:%M:%SZ"`-`git rev-parse HEAD`
workflows:
version: 2
build-n-deploy:
jobs:
- digdag
# If you would like to restrict branches/tags to running Digdag jobs, use `filters` option.
# Following filter means `digdag` job will run only `dev` and `user-` starting branches.
# @see: https://circleci.com/docs/2.0/workflows/
# - digdag:
# filters:
# branches:
# only:
# - dev
# - /user-.*/この設定では、CircleCI が master ブランチの変更のみをデプロイするように指定しています。これにより、他のブランチやプルリクエストの変更は master にマージされるまでデプロイされません。
CircleCI 設定の詳細については、CircleCI 設定ドキュメントを参照してください。
CircleCI ダッシュボードを開きます。
左側の Add Projects を選択します。
アカウントを選択します。TD Workflow プロジェクトを含む GitHub リポジトリがリストに表示されます。
右側の Build Project を選択して、継続的デプロイパイプラインを開始します。
CircleCI はパイプラインの最初の実行を行いますが、TD 認証情報がまだ設定されていないため失敗します。
ワークフローを Treasure Data にプッシュするには、プロジェクトに TD API Key を設定する必要があります。
CircleCI ダッシュボードを再度開きます。ワークフロープロジェクトが左側にリストされています。
ワークフロープロジェクトを選択します。
右上の Project Settings を選択します。
左側の Build Settings の下にある Environment Variables を選択します。
Name フィールドに
TD_API_KEYを入力し、Value フィールドに TD API キーを入力します。Save variables を選択します。
CircleCI ダッシュボードを再度開き、失敗したワークフロープロジェクトのビルドを選択します。
右上の Rebuild を選択します。
CircleCI はワークフローを Treasure Data に正常にプッシュし、GitHub に変更をプッシュするたびにこれを実行します。
以下のエラーが表示された場合は、エンドポイントに https:// を追加してください。
error: RESTEASY004655: Unable to invoke request (processing)