$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
第163回 雲勉 CircleCIで複数リポジトリ間のパイプラインを連携する
Search
iret.kumoben
June 12, 2025
Technology
1
55
第163回 雲勉 CircleCIで複数リポジトリ間のパイプラインを連携する
下記、勉強会での資料です。
https://youtu.be/KBLuGzMw8Bk
iret.kumoben
June 12, 2025
Tweet
Share
More Decks by iret.kumoben
See All by iret.kumoben
第177回 雲勉 IdP 移行を楽に!Amazon Cognito でアプリへの影響をゼロにするアイデア
iret
0
41
第176回 雲勉 VPC 間サービス接続を考える!Private Service Connect 入門
iret
0
41
第175回 雲勉 Amazon ECS入門:コンテナ実行の基本を学ぶ
iret
0
68
第174回 雲勉 Google Agentspace × ADK Vertex AI Agent Engineにデプロイしたエージェントを呼び出す
iret
0
100
第173回 雲勉 ノーコードで生成 AI アプリを構築!Google Cloud AI Applications(旧 Vertex AI Agent Builder)入門
iret
0
81
第170回 雲勉 Lyria が切り拓く音楽制作の未来
iret
1
46
第169回 雲勉 AWS WAF 構築 RTA
iret
0
53
第168回 雲勉 JITNAの使い方とハマったポイントについて語る回
iret
0
64
第167回 雲勉 エージェント開発を加速する Agent Development Kit 入門
iret
1
67
Other Decks in Technology
See All in Technology
なぜフロントエンド技術を追うのか?なぜカンファレンスに参加するのか?
sakito
4
920
段階的に進める、 挫折しない自宅サーバ入門
yu_kod
5
2k
タグ付きユニオン型を便利に使うテクニックとその注意点
uhyo
1
160
re:Invent2025とAWS Builder Cards Resilience Expansionのご紹介
tsuwa61
1
100
MAP-7thplaceSolution
yukichi0403
2
210
GitHub を組織的に使いこなすために ソニーが実践した全社展開のプラクティス
sony
17
8.9k
Digital omtanke på Internetdagarna 2025
axbom
PRO
0
140
研究開発部メンバーの働き⽅ / Sansan R&D Profile
sansan33
PRO
3
21k
Capture Checking / Separation Checking 入門
tanishiking
0
100
小規模チームによる衛星管制システムの開発とスケーラビリティの実現
sankichi92
0
160
私も懇親会は苦手でした ~苦手だからこそ懇親会を楽しむ方法~ / 20251127 Masaki Okuda
shift_evolve
PRO
4
390
Design System Documentation Tooling 2025
takanorip
0
440
Featured
See All Featured
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
359
30k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
36
6.1k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
Automating Front-end Workflow
addyosmani
1371
200k
Making Projects Easy
brettharned
120
6.5k
Art, The Web, and Tiny UX
lynnandtonic
303
21k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
37
2.6k
Scaling GitHub
holman
464
140k
[RailsConf 2023] Rails as a piece of cake
palkan
58
6.1k
KATA
mclloyd
PRO
32
15k
The Cult of Friendly URLs
andyhume
79
6.7k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.2k
Transcript
第163回 雲勉 CircleCIで複数リポジトリ間の パイプラインを連携する
講師自己紹介 2 ◼ 朝枝 知之(Asaeda Tomoyuki) • クラウドインテグレーション事業部 MSP開発セクション 第一G
• Webサービス開発企業で勤務後、2019年8月アイレット入社 • 昨年から少しずつ筋トレをして身体づくりに励んでいます。 • ご質問は YouTubeのコメント欄で受け付けております。 後日回答させていただきます!
CircleCI について 3 ◼ 対象の視聴者 • CircleCIの初級〜中級者 • パイプライン/ワークフロー/ジョブ/ステップ 等がわかる
• GitHub Actions など他のCI/CDサービスの利用者 CircleCIはGitHubやBitbucketと連携し、コードの変更に応じてビルドやテスト、デプロイを 自動実行できるCI/CDプラットフォームです。ワークフローや条件分岐を駆使した柔軟な運 用が可能です。 ここではCircleCIのジョブ内から他のパイプラインを実行する方法について紹介します。 1つのパイプラインでCI/CDの処理を完結させるだけでなく、異なるリポジトリにあるパイプ ラインを連携させることでより柔軟で効率的なCI/CDのワークフローを実現できます。
アジェンダ 4 1. ユースケース 2. 準備とイメージ 3. 実装手順 4. 注意点
アジェンダ 5 1. ユースケース 2. 準備とイメージ 3. 実装手順 4. 注意点
1. ユースケース 6
1.ユースケース 7 ◼ その① マイクロサービスの分割管理 • 連携テストや統合デプロイ あるサービスのビルドやテストが完了したタイミングで、依存する他サービスのパイプラインを自 動的にキック リポジトリA
パイプライン リポジトリB パイプライン
1.ユースケース 8 ◼ その② マイクロサービスの分割管理 • コードの再利用 共通ライブラリ用リポジトリで変更があった場合、依存する複数のリポジトリのパイプラインを一 斉に実行する リポジトリA
パイプライン リポジトリB パイプライン リポジトリC パイプライン リポジトリD パイプライン
アジェンダ 9 1. ユースケース 2. 準備とイメージ 3. 実装手順 4. 注意点
2. 準備とイメージ 10
2.準備とイメージ 11 ◼ 今回例として作成するもの 1. パイプラインAのジョブからパイプラインBを実行 2. パイプラインBの実行中、パイプラインAは待機 3. パイプラインAのジョブがパイプラインBの実行結
果(成功 or 失敗)を取得 1. 成功の場合パイプラインAの後続のジョブを続行 し、失敗の場合パイプラインAも失敗で終了させる パイプラインA→BのキックはcurlによるPOSTリクエスト で実施します
2.準備とイメージ 12 ◼ 必要なもの① • CircleCIの パーソナルAPIトークン (後述) →「プロジェクトAPIトークン」ではない (“Project
not found” というエラーになる)
2.準備とイメージ 13 ◼ 必要なもの② • GitHubリポジトリ × 2つ (パイプラインのキック元とキック先)
アジェンダ 14 1. ユースケース 2. 準備とイメージ 3. 実装手順 4. 注意点
3. 実装手順 15
3.実装手順 16 ◼ 手順① APIトークンの準備 1. CircleCIのユーザー設定画面(User Settings)にアクセス 2. 「Personal
API Tokens」のセクションで新しいトークンを発行する 3. キック元のCircleCIプロジェクトで環境変数を新規作成する 1. 変数名を CIRCLECI_API_TOKEN_B とし、値に発行したAPIトークンを入れる
3.実装手順 17 ◼ 手順② 設定ファイル(config.yml)の作成 • リポジトリに config.yml がない場合は新規作成する •
0から始める場合は Faster がおすすめ
3.実装手順 18 ◼ 手順③-1 APIリクエストの実装 • パイプラインBをキックする部分 export CIRCLECI_PRJ_SLUG="github/t-asaeda/circleci-multi-repo-pipeline-b” RESPONSE=$(curl
-X POST https://circleci.com/api/v2/project/\\ $CIRCLECI_PRJ_SLUG/pipeline \\ -H "Circle-Token: $CIRCLECI_API_TOKEN_B" \\ -H "Content-Type: application/json" \\ -d '{ "branch": "main" }’) PIPELINE_ID=$(echo "$RESPONSE" | jq -r '.id')
3.実装手順 19 ◼ 手順③-2 APIリクエストの実装 • パイプラインBが完了するまで待機する部分 while true; do
STATUS=$(curl -s -H "Circle-Token: $CIRCLECI_API_TOKEN_B" \\ "https://circleci.com/api/v2/pipeline/${PIPELINE_ID}/workflow" | jq -r '.items[0].status') if [ "$STATUS" = "success" ]; then echo "Pipeline succeeded." break elif [ "$STATUS" = "failed" ] || [ "$STATUS" = "error" ] || [ "$STATUS" = "failing" ]; then echo "Pipeline failed with status: $STATUS" exit 1 else echo "Pipeline status: $STATUS. Waiting..." sleep 10 fi done
アジェンダ 20 1. ユースケース 2. 準備とイメージ 3. 実装手順 4. 注意点
4.注意点 21 ◼ APIトークンの管理 • APIトークンはCircleCIの Contexts やCircleCIプロジェクトの環境変数で安全に管理する • config.yml
には直接記述しない • 複数のCircleCIプロジェクトを連携させる可能性があれば Contexts に保存する ◼ エラーレスポンスの確認 • キックしたリクエストのレスポンスを echo して原因がわかるようにする
最後に 22 https://iret.media/149633 iret.media でも記事を公開しています