API を使用したジョブのトリガー
CircleCI API を使用してジョブをトリガーする方法について説明します。
メモ: 現在のところ、API から 2.1 設定ファイルを使用するジョブをトリガーすることはできません。
概要
CircleCI API を使用して、.circleci/config.yml
で定義したジョブをトリガーします。
curl
を使用して deploy_docker
ジョブをトリガーする例を以下に示します。
curl -u ${CIRCLE_API_USER_TOKEN}: \
-d build_parameters[CIRCLE_JOB]=deploy_docker \
https://circleci.com/api/v1.1/project/<vcs-type>/<org>/<repo>/tree/<branch>
この例には以下の変数が使用されています。
-
CIRCLE_API_USER_TOKEN
: パーソナル API トークン. -
<vcs-type>
: 選択された VCS (github
またはbitbucket
) を示すプレースホルダー変数 -
<org>
: CircleCI 組織の名前を示すプレースホルダー変数 -
<repo>
: リポジトリの名前を示すプレースホルダー変数 -
<branch>
: ブランチの名前を示すプレースホルダー変数
API の関連情報については、CircleCI API ドキュメントにまとめられています。
API を通してジョブをトリガーする場合の重要な検討事項
- API によってトリガーされるジョブに
workflows
セクションが含まれてもかまいません。 - ワークフローが、API によってトリガーされるジョブを参照する必要はありません。
- API によってトリガーされたジョブは、特定の CircleCI コンテキスト用に作成された環境変数にアクセスできません。
- 環境変数を使用する場合は、それらの環境変数がプロジェクトレベルで定義されている必要があります。
- 現在のところ、CircleCI 2.1 とワークフローを使用する場合には、単一のジョブをトリガーすることができません。
- プロジェクトのビルドをトリガーするエンドポイントを使用して、CircleCI API でワークフローをトリガーできます。
API を使用したジョブの条件付き実行
以下は、デプロイされるビルドに対してのみ setup_remote_docker
で Docker イメージを構築する場合の設定ファイル例です。
version: 2
jobs:
build:
docker:
- image: ruby:2.4.0-jessie
auth:
username: mydockerhub-user
password: $DOCKERHUB_PASSWORD # context / project UI env-var reference
environment:
LANG: C.UTF-8
working_directory: /my-project
parallelism: 2
steps:
- checkout
- run: echo "run some tests"
- deploy:
name: デプロイ ジョブを条件付きで実行
command: |
# これをビルド・デプロイのチェックに置き換えます (すなわち、現在のブランチが "release")
if [[ true ]]; then
curl --user ${CIRCLE_API_USER_TOKEN}: \
--data build_parameters[CIRCLE_JOB]=deploy_docker \
--data revision=$CIRCLE_SHA1 \
https://circleci.com/api/v1.1/project/github/$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME/tree/$CIRCLE_BRANCH
fi
deploy_docker:
docker:
- image: ruby:2.4.0-jessie
auth:
username: mydockerhub-user
password: $DOCKERHUB_PASSWORD # context / project UI env-var reference
working_directory: /
steps:
- setup_remote_docker
- run: echo "deploy section running"
この例では以下の点にご留意ください。
- ビルド ジョブの
deploy
ステップを必ず使用してください。これを使用しないと、並列処理の値が N の場合に、N 回のビルドがトリガーされることがあります。 - API 呼び出しを
build_parameters[CIRCLE_JOB]=deploy_docker
で使用し、deploy_docker
ジョブのみが実行されるようにします。