Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
第163回 雲勉 CircleCIで複数リポジトリ間のパイプラインを連携する
Search
iret.kumoben
June 12, 2025
Technology
1
51
第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
28
第176回 雲勉 VPC 間サービス接続を考える!Private Service Connect 入門
iret
0
32
第175回 雲勉 Amazon ECS入門:コンテナ実行の基本を学ぶ
iret
0
45
第174回 雲勉 Google Agentspace × ADK Vertex AI Agent Engineにデプロイしたエージェントを呼び出す
iret
0
70
第173回 雲勉 ノーコードで生成 AI アプリを構築!Google Cloud AI Applications(旧 Vertex AI Agent Builder)入門
iret
0
63
第170回 雲勉 Lyria が切り拓く音楽制作の未来
iret
1
40
第169回 雲勉 AWS WAF 構築 RTA
iret
0
47
第168回 雲勉 JITNAの使い方とハマったポイントについて語る回
iret
0
52
第167回 雲勉 エージェント開発を加速する Agent Development Kit 入門
iret
1
62
Other Decks in Technology
See All in Technology
NLPコロキウム20251022_超効率化への挑戦: LLM 1bit量子化のロードマップ
yumaichikawa
1
220
生成AI時代のPythonセキュリティとガバナンス
abenben
0
120
名刺メーカーDevグループ 紹介資料
sansan33
PRO
0
940
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
12
81k
HonoとJSXを使って管理画面をサクッと型安全に作ろう
diggymo
0
170
Railsの話をしよう
yahonda
0
170
AI時代、“平均値”ではいられない
uhyo
8
2.3k
「改善」ってこれでいいんだっけ?
ukigmo_hiro
0
410
AWS UG Grantでグローバル20名に選出されてre:Inventに行く話と、マルチクラウドセキュリティの教科書を執筆した話 / The Story of Being Selected for the AWS UG Grant to Attending re:Invent, and Writing a Multi-Cloud Security Textbook
yuj1osm
1
130
AI AgentをLangflowでサクッと作って、1日働かせてみた!
yano13
1
140
Data Hubグループ 紹介資料
sansan33
PRO
0
2.2k
現場データから見える、開発生産性の変化コード生成AI導入・運用のリアル〜 / Changes in Development Productivity and Operational Challenges Following the Introduction of Code Generation AI
nttcom
1
450
Featured
See All Featured
Designing for Performance
lara
610
69k
For a Future-Friendly Web
brad_frost
180
10k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
36
6.1k
RailsConf 2023
tenderlove
30
1.3k
We Have a Design System, Now What?
morganepeng
53
7.8k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
190
55k
A Modern Web Designer's Workflow
chriscoyier
697
190k
A better future with KSS
kneath
239
18k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
130k
Making Projects Easy
brettharned
120
6.4k
How STYLIGHT went responsive
nonsquared
100
5.8k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
140
34k
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 でも記事を公開しています