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.9k
5
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
Amazon Managed Grafana で Amazon DynamoDB のデータを可視化する Infinity Plugin + プライベート API 構成
satoshi256kbyte
0
14
AI駆動開発にグラフDBを重ねてみた
satoshi256kbyte
2
750
AWS Transform Customによる Spring Boot 2.xから4.xへのVerUp
satoshi256kbyte
2
150
運用ダッシュボードの設計を誰も教えてくれないのだけどみなさんどうしてるんですか? - チームに監視するという文化を根付かせるための第一歩を踏みたい -
satoshi256kbyte
1
180
AWS CDK ExpressモードとCI/CDの組み合わせ
satoshi256kbyte
1
62
AWS re:Invent 2025の少し振り返り + DevOps AgentとBacklogを連携させてみた
satoshi256kbyte
3
240
Amazon_Cognito_で構築する_スケーラブルな_Web_アプリケーション__シングルページ_Web_アプリケーションに認証を組み込む
satoshi256kbyte
0
55
人間とAI、どちらが書いたコードもCI/CDでチェックしてみよう
satoshi256kbyte
0
59
今こそ押さえておきたい アマゾンウェブサービス(AWS)の データベースの基礎 おもクラ #6版
satoshi256kbyte
1
310
Other Decks in Programming
See All in Programming
DynamoDBの基礎を振り返りながらベクトル検索機能を理解する
musan
3
270
Kiroで創り、AgentCoreで繋ぐ!AWSで実践する「AI-DLC」から「AIエージェント統合」までの最新地図
licux
2
350
FastAPI の並行処理モデルを完全に理解する
hoto17296
9
3.8k
Hello, Hiroshima Geospatial Data! — Exploring DoboX with Python
ra0kley
0
180
From 6 People Classroom Meetup to 100 People Regional Conference / FOSS4G Hiroshima 2026
furukawayasuto
0
120
Swift愛好会100回記念 第1回を振り返る
jollyjoester
0
120
LoopHub - ローカルで動く GitHub で、AI と共同開発
jugyo
0
450
XHTMLが残したもの
yosuke_furukawa
PRO
2
430
「AI時代、配布するPythonコードをどう守るか: 難読化の実験と判断軸」 #PyconJP2026
pkshadeck
PRO
2
170
ハーネス設計入門 〜プロンプト、コンテキストの次〜
kinopeee
55
36k
型解析で実現する Go の言語内 DSL / Conference に Go! タイムテーブルの歩き方 for Gophers
mazrean
0
130
新卒PdEのリアル
ryu1013
1
420
Featured
See All Featured
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
230
The agentic SEO stack - context over prompts
schlessera
0
910
A Soul's Torment
seathinner
7
3.6k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
2
3.8k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
320
The Invisible Side of Design
smashingmag
301
52k
Thoughts on Productivity
jonyablonski
76
5.4k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
890
KATA
mclloyd
PRO
35
15k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
250
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.6k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
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