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
GitHubとGitLabとAWS CodePipelineでCI/CDを組み比べてみた
Search
Satoshi Kaneyasu
September 09, 2025
Programming
1.6k
4
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
GitHubとGitLabと AWS CodePipelineで CI/CDを組み比べてみた
Satoshi Kaneyasu
September 09, 2025
More Decks by Satoshi Kaneyasu
See All by Satoshi Kaneyasu
AWS CDK ExpressモードとCI/CDの組み合わせ
satoshi256kbyte
0
8
AWS re:Invent 2025の少し振り返り + DevOps AgentとBacklogを連携させてみた
satoshi256kbyte
3
200
Amazon_Cognito_で構築する_スケーラブルな_Web_アプリケーション__シングルページ_Web_アプリケーションに認証を組み込む
satoshi256kbyte
0
41
人間とAI、どちらが書いたコードもCI/CDでチェックしてみよう
satoshi256kbyte
0
42
今こそ押さえておきたい アマゾンウェブサービス(AWS)の データベースの基礎 おもクラ #6版
satoshi256kbyte
1
280
今こそ押さえておきたい アマゾンウェブサービス(AWS)の データベースの基礎
satoshi256kbyte
1
61
人間とAI、どちらが書いたコードもCICDでチェックしてみよう
satoshi256kbyte
1
76
はじめてのカスタムエージェント【GitHub Copilot Agent Mode編】
satoshi256kbyte
0
630
お客様とSIerではじめたスクラム開発(で得た学び)
satoshi256kbyte
0
140
Other Decks in Programming
See All in Programming
吝嗇家のためのAI活用 / AI development for miser - ChatGPT + Issue Driven Development
tooppoo
0
150
A2UI という光を覗いてみる
satohjohn
1
170
エージェンティックRAGにAWSで入門しよう!
har1101
9
1.9k
エンジニアと一緒にテストコードの設計と実装を改善した話
mototakatsu
0
240
LLM本来の能力を解き放つサンドボックス技術とAI民主化への適用
yukukotani
3
4.8k
The ROI of Quarkus for Spring Boot Applications
hollycummins
0
150
act1-costs.pdf
sumedhbala
0
150
AI駆動開発を妨げる技術的負債の解消アプローチ / ai-refactoring-approach
minodriven
17
8.4k
Strategic Design in the Frontend: Moduliths & Micro Frontends @DDDEurope
manfredsteyer
PRO
0
140
AIキャラアプリkaiwaの低遅延音声通話基盤をどう作ったか - AWS Gravitonで支える低遅延・低コストAI Agent基盤
mogamit
0
150
Developing with AI Agents — Codex, Claude Code & Cowork Practical Guide
x5gtrn
PRO
0
1.3k
エンジニア向け会社紹介/Findy Company Profile
findyinc
6
360k
Featured
See All Featured
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Code Review Best Practice
trishagee
74
20k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Prompt Engineering for Job Search
mfonobong
0
360
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
270
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
350
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
160
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
210
Fireside Chat
paigeccino
42
4k
The SEO identity crisis: Don't let AI make you average
varn
0
510
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
Transcript
GitHubとGitLabと AWS CodePipelineで CI/CDを組み比べてみた 2025.09.10 Satoshi Kaneyasu
2 発表者自己紹介 氏名:兼安 聡 所属:株式会社サーバーワークス アプリケーションサービス部 在住:広島(フルリモート) 担当:DevOps、技術支援、PM、SM SNS(X):@satoshi256kbyte •
2025 AWS Community Builders • 2025 Japan AWS Top Engineers (AI/ML Data Engineer) • 2025 Japan AWS All Certifications Engineers • 認定スクラムマスター • PMP
3 目次 ⚫今回検証したかったこと ⚫AWS CodePipelineでの実装例 ⚫GitHub Actionsでの実装例 ⚫GitLab CI/CDでの実装例 ⚫まとめ
4 今回検証したかったこと デプロイ前にセキュリティ含めたチェックをするCI/CDパイプラインを組んで みようと思いました 品質・セキュリティに課題があるコードをデプロイしないことが目的です これを実現するにはどのツールでどのように組んだらいいか検証してみました ソース Lint ソースコードの構文チェックなど Unit
Test SCA 使用ライブラリの脆弱性チェック SAST セキュリティ観点の静的コードチェック デプロイ
5 今回検証したかったこと、補足 ⚫ソース管理自体はGitHubで行っています ⚫検証に用いたコードはPython3.13、パッケージ管理はuvです 次のページから話題が変わります
AWS CodePipelineでの実装例
7 AWS CodePipelineでの実装例
8 並列実行と直列実行 直列実行 並列実行 並列実行
9 並列実行と直列実行 アクションを小分けにして並列実行 buidspec も分割
10 キャッシュの活用 キャッシュを作った上で、 並列実行 ここでキャッシュを作る
11 キャッシュの活用 キャッシュタイプを「Amazon S3」にした上で、 buildspecでキャッシュキーを指定することで ビルドプロジェクト(=コンテナ)を跨いだキャッシュが使用 可能になる asdfとuvを使っているのでこの2つのファイルを使ってキャッシュキーを生成 パスの指定の仕方が、GitHub・GitLabとは異なるので注意 パスそのものではなく、パスパターンに合致するものがキャッシュ対象
12 SCAとSASTの実装方法 Amazon Inspector Amazon CodeGuru Security
13 SCAとSASTの実装方法 ⚫Amazon InspectorによるSCAはCodePipelineに組み込むことができます ⚫一点だけ注意 Pythonの場合Inspectorはrequirements.txtをチェックするので、 uv exportしてuv.lockからrequirements.txtを出力しておく必要があります ⚫Amazon InspectorはSASTもできますが、
同期処理にする方法が見つからないため、CI/CDに組み込めませんでした ⚫それ故にSASTにCodeGuru Securityを使用していましたが、 CodeGuru Securityは2025年11月のサービス終了となってしまいました ⚫CodePipelineだけでやりたいことは実現できていたのに残念です
14 AWS CodePipelineで実装してみた所感 ⚫Code系・S3・IAMロールの知識などを総動員しないと使いこなせな いため、とっつきにくく一番難しいと思います ⚫今回の検証では一番時間かかりました(一番触っているはずなのに) ⚫ 検証期間二週間中約半分がCodePipeline ⚫パイプラインをIaCでも手動でも作成・編集できてしまうのが厄介 次のページから話題が変わります
GitHub Actionsでの実装例
16 GitHub Actionsでの実装例
17 並列実行と直列実行 GitHub Actionsはジョブ同士は並列実行が可能 ジョブの中のステップは直列実行となります 参考:GitHub Actions の構造と変数を整理して、AWSのデプロイ先を分岐させてみよう
18 GitHubでの実装例 並列実行
19 並列実行と直列実行 cicd.yml ジョブを分けることで並列実行にしつつ、 needsで順番を指定
20 キャッシュの活用 asdfとuvを使っているのでこの2つのファイルを使って キャッシュキーを生成 sha256sum関数でファイルをハッシュ文字列化 パスの指定の仕方はCodePipelineとは異なる 指定したパスそのものがキャッシュ対象
21 AWSの操作 - AWS SAMによるデプロイ OIDCでAWSアカウントに接続して 操作します OIDCを使用するのにパーミッションが必要です 事前に用意したOIDC用のIAMロールのARNを シークレットで設定しておき、使用します
参考:アマゾン ウェブ サービスでの OpenID Connect の構成
22 AWSの操作 - Amazon EC2へのデプロイ① EC2へのデプロイは、 事前にCodeDeployでアプリケーションと デプロイメントグループを作っておき、それを呼び出す 形を取っています。 S3へコード一式をアップしてから、
新規デプロイを作成するコマンドを発行します。
23 AWSの操作 - Amazon EC2へのデプロイ② EC2へのデプロイは非同期処理なので、 待機処理が必要
24 SCAとSASTの実装方法① ⚫GitHubはSCAはDependabot、SASTはCodeQLが使用できますが、 どちらもCI/CDに組み込むのがかなり難しいと感じました ⚫CodeQLはGitHub Actionsから起動はできましたが、 結果をGitHub Actionsの中で受け取るところまで至れませんでした また、使用料金もプラン次第なところがあるので、SIerとしてCI/CD に組み込むのは難しいと感じます
⚫Dependabotの方はGitHub Actionsからの能動的に起動する方法自体 が見つかりませんでした。
25 SCAとSASTの実装方法② ⚫代替としてOSSのTrivyとSemgrep CEでSCA、SASTを使用しました ⚫SemgrepはCE版だとSAST機能しか利用できないので、SCAはTrivyに任せます ⚫SASTにSemgrepを選んだのは、GitLabのSASTのコードを確認したとこ ろ、Semgrepが使われていたからです
26 GitHubで実装してみた所感 ⚫設定ファイルの書き方に癖がなく書きやすい ⚫今から始めるならこちらが楽だと思います ⚫AWSの操作にOIDCを使う部分が一つの壁 ⚫そこを乗り越えればいろんなことができると思います ⚫GitHub ActionsからのAWSの操作は作り込みが必要ですが、 設定が分散したりはしないのでそこまで気にはなりません ⚫自分としては、SCA・SASTを経てのデプロイがやりたかったのだが
DependabotとCodeQLはそれとは考え方が違うように思えます 次のページから話題が変わります
GitLab CI/CDでの実装例
28 GitLab CI/CDでの実装例 全体的に操作感がGitHub Actionsによく似ている
29 並列実行と直列実行 stagesという概念があるものの、 GitHubと同じようにジョブを分ければ並列となり、 needsで順番を作ることができる
30 AWSの操作 GitHub同様OIDCが使用できる 参考: Configure OpenID Connect in AWS to
retrieve temporary credentials
31 キャッシュの活用 GitLabでファイルをキーの一部とする場合は、filesが使用で きる 参考:Caching in GitLab CI/CD パスの指定の仕方はGitHubと同じだが、ディレクトリ構成 が違う模様
GitHubのように~/.cargoなどと指定するとキャッシュが空 振りするので、何かインストールするなら作業ディレクトリ直 下に置くようにし、そこをキャッシュ対象にすると効きやすい ※コンテナベースイメージも同じOSだが他と異なるようで、 GitHub・CodePipelineに比べ動かすのに多数のインストールが必要
32 SCAとSASTの実装方法 ⚫GitLab謹製でSCAとSASTがあるが、Ultimateプランが必要です ⚫検証した限りではSCAはUltimateでなくとも動かすことができたが、 実運用で使うならちゃんとUltimateプランにした方がよいでしょう ⚫ 参考:各プランのGitLab機能の比較 ⚫ 流石にUltimateは個人の検証レベルでは契約できないです・・・ ⚫なお、検証時した限りでは、GitLabのSCAは呼び出しはできるけど、結果のチェッ
クは本来CI/CDでやるものではないらしく、チェック処理を自分で作る必要がありま した
33 GitLabで実装してみた所感 ⚫GitHub同様設定ファイルの書き方に癖がなく書きやすいが、 ネット上にそこまで情報が多くないのがネックです ⚫その他の感想はGitHubと同じです 次のページから話題が変わります
まとめ
35 各ツールの所感 ⚫ 実装のしやすさは、GitHub>GitLab>>>AWS CodePipeline ⚫ 今からCI/CDを始めるならGitHub Actionsが一番やりやすいと思います ⚫ CodeGuru
Securityが使用可能ならやりたかったことはCodePipelineで完 結したのに、EOLが発表されるとは思っていませんでした・・・
36 今自分が考えるCI/CDの組み合わせ デプロイ時は CodePipeline プルリクエスト作成時は GitHub Actions
37 組み合わせの理由 ⚫ CodePipelineはAWSで完結できる上、 InspectorによるSCAがCI/CDに 組み込めるのが大きい ⚫ CodeGuru SecurityがEOLになったのは残念で代替は探しますが、 よくよく考えたらライブラリと違ってソースコード自体は時間が経っても勝手に脆弱
性が増えたりはしないので、SASTは他に逃すなどの回避策を取ってもよいと思い ました ⚫ 開発中のチェックは、チェック自体にも試行錯誤することがあるので、変更にデプロ イが必要なCodePipelineよりもGitHub Actionsでやった方が効率がよいと 思います 以上です、ありがとうございました
None
39 Appendix - 参考資料 ⚫ CodePipeline End of support
for CodeGuru Security ⚫ GitHub GitHub Actions の構造と変数を整理して、AWSのデプロイ先を分岐させてみよう アマゾン ウェブ サービスでの OpenID Connect の構成 ⚫ GitLab Configure OpenID Connect in AWS to retrieve temporary credentials Caching in GitLab CI/CD 各プランのGitLab機能の比較 ⚫ Trivy ⚫ Semgrep