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
61
第163回 雲勉 CircleCIで複数リポジトリ間のパイプラインを連携する
下記、勉強会での資料です。
https://youtu.be/KBLuGzMw8Bk
iret.kumoben
June 12, 2025
Tweet
Share
More Decks by iret.kumoben
See All by iret.kumoben
第181回 雲勉 WEB制作者のちょっとした面倒をAWSで解決!Amazon S3とAWS Lambda活用術
iret
0
37
第180回 雲勉 Abuse report の調査・確認方法について
iret
0
59
第179回 雲勉 AI を活用したサポートデスク業務の改善
iret
0
83
第178回 雲勉 Amazon EKSをオンプレで! Amazon EKS Anywhere 実践構築ガイド
iret
1
61
第177回 雲勉 IdP 移行を楽に!Amazon Cognito でアプリへの影響をゼロにするアイデア
iret
0
66
第176回 雲勉 VPC 間サービス接続を考える!Private Service Connect 入門
iret
0
53
第175回 雲勉 Amazon ECS入門:コンテナ実行の基本を学ぶ
iret
0
85
第174回 雲勉 Google Agentspace × ADK Vertex AI Agent Engineにデプロイしたエージェントを呼び出す
iret
0
130
第173回 雲勉 ノーコードで生成 AI アプリを構築!Google Cloud AI Applications(旧 Vertex AI Agent Builder)入門
iret
0
100
Other Decks in Technology
See All in Technology
テストセンター受験、オンライン受験、どっちなんだい?
yama3133
0
200
RALGO : AIを組織に組み込む方法 -アルゴリズム中心組織設計- #RSGT2026 / RALGO: How to Integrate AI into an Organization – Algorithm-Centric Organizational Design
kyonmm
PRO
3
690
Everything As Code
yosuke_ai
0
490
会社紹介資料 / Sansan Company Profile
sansan33
PRO
11
390k
プロンプトエンジニアリングを超えて:自由と統制のあいだでつくる Platform × Context Engineering
yuriemori
0
160
善意の活動は、なぜ続かなくなるのか ーふりかえりが"構造を変える判断"になった半年間ー
matsukurou
0
250
AWS re:Invent2025最新動向まとめ(NRIグループre:Cap 2025)
gamogamo
0
150
AWSと生成AIで学ぶ!実行計画の読み解き方とSQLチューニングの実践
yakumo
2
190
Introduction to Sansan Meishi Maker Development Engineer
sansan33
PRO
0
330
I tried making a solo advent calendar!
zzzzico
0
130
#22 CA × atmaCup 3rd 1st Place Solution
yumizu
1
120
2025年の医用画像AI/AI×medical_imaging_in_2025_generated_by_AI
tdys13
0
300
Featured
See All Featured
The Limits of Empathy - UXLibs8
cassininazir
1
200
Documentation Writing (for coders)
carmenintech
77
5.2k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
100
We Have a Design System, Now What?
morganepeng
54
8k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
54
48k
AI: The stuff that nobody shows you
jnunemaker
PRO
1
150
Designing for humans not robots
tammielis
254
26k
Getting science done with accelerated Python computing platforms
jacobtomlinson
0
88
Writing Fast Ruby
sferik
630
62k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
41
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
1
340
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 でも記事を公開しています