APIを使ってトリガーする

この記事 GitHub が対象です。

以下のようにリクエストを飛ばすだけです。

curl -u ${CIRCLE_API_USER_TOKEN}: \
     -d build_parameters[AN_ENV_VAR]=foo \
     https://circleci.com/api/v1.1/project/github/<org>/<repo>/tree/<branch>

CIRCLE_API_USER_TOKENUser > Personal API Tokens から生成した文字列です。

build_parametersではジョブへ好きな環境変数を渡すことができます。
build_parameters[KEY]=VALUEKEYはユニーク)のように好きなキーバリューを指定できます。
上記のbuild_parameters[AN_ENV_VAR]=fooであれば、ジョブ内でecho $AN_ENV_VARと実行した時fooと表示されます。

URLには3つの< >で囲まれた値があります。これらはそれぞれ、

  1. <org>には対象リポジトリのユーザーか組織
  2. <repo>には対象リポジトリの名前
  3. 対象となるブランチ

を置きます。

リクエストが成功すると以下のようなレスポンスが返ります。

{
  "compare" : null,
  "previous_successful_build" : {
    "build_num" : 6,
    "status" : "success",
    "build_time_millis" : 22268
  },
  "build_parameters" : {
    "AN_ENV_VAR" : "foo"
  },
  "oss" : false,
  "all_commit_details_truncated" : false,
  "committer_date" : null,
  "body" : null,
  "usage_queued_at" : "2020-01-14T03:10:45.029Z",
  "context_ids" : [ ],
  "fail_reason" : null,
  "retry_of" : null,
  "reponame" : "<repo>",
  "ssh_users" : [ ],
  "build_url" : "https://circleci.com/gh/<org>/<repo>/7",
  "parallel" : 1,
  "failed" : null,
  "branch" : "master",
  "username" : "nju33",
  "author_date" : null,
  "why" : "github",
  "user" : {
    "is_user" : true,
    "login" : "nju33",
    "avatar_url" : "https://avatars2.githubusercontent.com/u/15901038?v=4",
    "name" : "純",
    "vcs_type" : "github",
    "id" : 15901038
  },
  "vcs_revision" : "...",
  "workflows" : {
    "job_name" : "build",
    "job_id" : "2285aaf7-3786-49f5-a087-0d2a62941c4a",
    "workflow_id" : "f205bea7-8f37-42a0-a7a7-abbcd3139c14",
    "workspace_id" : "f205bea7-8f37-42a0-a7a7-abbcd3139c14",
    "upstream_job_ids" : [ ],
    "upstream_concurrency_map" : { },
    "workflow_name" : "build"
  },
  "vcs_tag" : null,
  "build_num" : 7,
  "infrastructure_fail" : false,
  "committer_email" : null,
  "previous" : {
    "build_num" : 6,
    "status" : "success",
    "build_time_millis" : 22268
  },
  "status" : "queued",
  "committer_name" : null,
  "retries" : null,
  "subject" : null,
  "vcs_type" : "github",
  "timedout" : false,
  "dont_build" : null,
  "lifecycle" : "queued",
  "no_dependency_cache" : false,
  "stop_time" : null,
  "ssh_disabled" : true,
  "build_time_millis" : null,
  "picard" : {
    "build_agent" : {
      "image" : "circleci/picard@sha256:24c624cb110a720e3c554b54f2b2d41e1d8090de45f95d47b2d2afe948358824"
    },
    "resource_class" : {
      "cpu" : 2.0,
      "ram" : 4096,
      "class" : "medium"
    },
    "executor" : "docker"
  },
  "circle_yml" : {
    "string" : "`config.yml`の中身..."
  },
  "messages" : [ ],
  "is_first_green_build" : false,
  "job_name" : null,
  "start_time" : null,
  "canceler" : null,
  "all_commit_details" : [ ],
  "platform" : "2.0",
  "outcome" : null,
  "vcs_url" : "https://github.com/<org>/<repo>",
  "author_name" : null,
  "node" : null,
  "queued_at" : "2020-01-14T03:10:45.068Z",
  "canceled" : false,
  "author_email" : null
}