Wercker で build API を叩いてもテストが始まらない件
イントロ
最近 Wercker を使っています。 Wercker でも CircleCI と同じように build を行う API があるのですが、どうしても build の API が叩けなくてハマったのでメモ。
現象
build API を使って build を行うと、Invalid stack
というエラーが出る。
エラーメッセージの意味がよくわからない。
$ jq . -c <<JSON | curl -s -d @- -H 'Authorization: Bearer token' -H 'Content-type: application/json' 'https://app.wercker.com/api/v3/builds' | jq . { "applicationId": "applicationid", "branch":"develop", "envVars":[ {"key":"HOGE_FOO","value":"true"} ] } JSON { "statusCode": 400, "error": "Bad Request", "message": "Invalid stack, only stack 1 and 5 are supported for builds" }
結論
build API を使うのではなく、Runs API を使う。
現在の Wercker は二つの環境が同居していて、その環境のことを Stack
と呼ぶ。
古い環境を Classic stack
と呼び、新しい環境を Docker Workflows Stack
というらしい。
今は新しく環境を作ると、全て Docker Workflows Stack
になるようで、build API は古い stack 用の API で、Runs API は新しい stack 用の API となっている。
どちらも叩くと CI の build が走る。
したがって最近作った CI の場合、runs API を叩いて、build を走らせる必要がある、というネタでした。
なお、必須パラメータが Build API とは若干異なり、Runs API では、pipelineId
という値が必須になる。
pipelineId
というのは、repository を選択して、Workflows
タブから下の方にある、pipeline 名をクリックしたときのURL から取得する。(app.wercker.com/{user}/{reponame}/workflows/pipeline/{pipelineId}
)
API 経由でもちょっと面倒くさいけど頑張れば取れる。
curl
で叩く場合、以下のようになる。
jq . <<JSON | curl -X POST -s -d @- -H "Authorization: Bearer token" -H 'Content-type: application/json' https://app.wercker.com/api/v3/runs | jq . { "pipelineId": "pipeline_id", "branch": "develop", "envVars": [ { "key": "HOGE_FUGA", "value": "true" } ] } JSON
おわり
Runs
ってなんだよ… 「走る」かよ…
隅々まで document を読まないと、こういう恥をかきます。
こんなつまらないことでハマって、初 StackOverflow
デビューしました。
速攻で英語の添削が入りました。おわり。