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
45
第163回 雲勉 CircleCIで複数リポジトリ間のパイプラインを連携する
下記、勉強会での資料です。
https://youtu.be/KBLuGzMw8Bk
iret.kumoben
June 12, 2025
Tweet
Share
More Decks by iret.kumoben
See All by iret.kumoben
第176回 雲勉 VPC 間サービス接続を考える!Private Service Connect 入門
iret
0
22
第175回 雲勉 Amazon ECS入門:コンテナ実行の基本を学ぶ
iret
0
35
第174回 雲勉 Google Agentspace × ADK Vertex AI Agent Engineにデプロイしたエージェントを呼び出す
iret
0
44
第173回 雲勉 ノーコードで生成 AI アプリを構築!Google Cloud AI Applications(旧 Vertex AI Agent Builder)入門
iret
0
52
第170回 雲勉 Lyria が切り拓く音楽制作の未来
iret
1
33
第169回 雲勉 AWS WAF 構築 RTA
iret
0
38
第168回 雲勉 JITNAの使い方とハマったポイントについて語る回
iret
0
45
第167回 雲勉 エージェント開発を加速する Agent Development Kit 入門
iret
1
56
第166回 雲勉 コードを読んで理解する AWS Amplify Gen2 Backend
iret
0
48
Other Decks in Technology
See All in Technology
【新卒研修資料】LLM・生成AI研修 / Large Language Model・Generative AI
brainpadpr
23
16k
AI Agentと MCP Serverで実現する iOSアプリの 自動テスト作成の効率化
spiderplus_cb
0
340
10年の共創が示す、これからの開発者と企業の関係 ~ Crossroad
soracom
PRO
1
120
コンテキストエンジニアリングとは? 考え方と応用方法
findy_eventslides
4
860
定期的な価値提供だけじゃない、スクラムが導くチームの共創化 / 20251004 Naoki Takahashi
shift_evolve
PRO
3
220
Green Tea Garbage Collector の今
zchee
PRO
2
380
それでも私はContextに値を詰めたい | Go Conference 2025 / go conference 2025 fill context
budougumi0617
4
1.1k
about #74462 go/token#FileSet
tomtwinkle
1
270
業務自動化プラットフォーム Google Agentspace に入門してみる #devio2025
maroon1st
0
180
LLMアプリケーション開発におけるセキュリティリスクと対策 / LLM Application Security
flatt_security
7
1.7k
Go Conference 2025: GoのinterfaceとGenericsの内部構造と進化 / Go type system internals
ryokotmng
3
590
動画データのポテンシャルを引き出す! Databricks と AI活用への奮闘記(現在進行形)
databricksjapan
0
130
Featured
See All Featured
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
9
840
Statistics for Hackers
jakevdp
799
220k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.6k
The Cost Of JavaScript in 2023
addyosmani
53
9k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.7k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
2.6k
Practical Orchestrator
shlominoach
190
11k
Building a Modern Day E-commerce SEO Strategy
aleyda
43
7.7k
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
Building Flexible Design Systems
yeseniaperezcruz
329
39k
[RailsConf 2023] Rails as a piece of cake
palkan
57
5.9k
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 でも記事を公開しています