CircleCI の特定ブランチの特定jobのアーティファクトをダウンロードする
はい
#!/usr/bin/env bash set -o pipefail set -eu export PRODUCTION_BRANCH="release" export JOB_NAME="build" latest_artifacts() { local -r build_num=$(curl -u "$CIRCLECI_TOKEN:" "https://circleci.com/api/v1.1/project/github/$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME/tree/$PRODUCTION_BRANCH?filter=completed" | \ ruby -rjson -e 'puts JSON.parse(STDIN.read).find { |j| j["build_parameters"]["CIRCLE_JOB"] == ENV.fetch("JOB_NAME") }["build_num"]') curl -u "$CIRCLECI_TOKEN:" "https://circleci.com/api/v1.1/project/github/$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME/$build_num/artifacts" } get_asset_url() { cat - | ruby -rjson -e 'puts JSON.parse(STDIN.read).select { |j| <a filter like `j["url"].include?(".apk")`> }.first["url"]' } download_asset() { local -r asset_url=$(latest_artifacts | get_asset_url) curl -o "$1" "$asset_url?circle-token=$CIRCLECI_TOKEN" } download_asset "$1"
GETでbranchを絞る方法はAPI Docになかったけれど、POSTの方法を参考にしたらちゃんとfilterされた。今後動かなくなるかもしれない。