専用の CircleCI プロジェクトを用意して、GitHub API で設定ファイルをリポジトリのリストにプッシュするというアプローチをお勧めします。
この CircleCI プロジェクトのビルド元のリポジトリには、たとえば次のものを配置します。
- 他のリポジトリにプッシュする個別の設定ファイル (この例では
global-ci.yml
) - 上記の設定ファイルをプッシュするビルドを定義した
config.yml
- "user/repository" または "org/repository" という形式でリポジトリのリストを記載したファイル (この例では
satellites.txt
)
上記の設定に加えて、適切な権限 (スコープ) を指定してGitHub API トークンを作成し、これを含む環境変数を追加する必要もあります。
config.yml
の例を次に示します。
version: 2.1jobs: deploy-config: docker: - image: circleci/python steps: - checkout - run: name: テスト command: | echo GLOBAL_64=$(base64 -w 0 global-ci.yml) >> $BASH_ENV while IFS= read -r repo do echo BLOB_SHA=$(curl --location --request GET "https://api.github.com/repos/$repo/contents/.circleci/config.yml" --header "Authorization: token ${GH_TOKEN}" --header "Accept: application/vnd.github.v3+json"|jq -r .sha) >> $BASH_ENV source $BASH_ENV curl --location --request PUT "https://api.github.com/repos/$repo/contents/.circleci/config.yml" --header "Authorization: token ${GH_TOKEN}" --header "Accept: application/vnd.github.v3+json" --data-raw "{\"message\":\"Global config update\", \"content\":\"$GLOBAL_64\", \"sha\":\"${BLOB_SHA}\"}" done < "satellites.txt" workflows: main: jobs: - deploy-config
コメント
記事コメントは受け付けていません。