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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Satoshi Kaneyasu
September 09, 2025
Programming
1.5k
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 re:Invent 2025の少し振り返り + DevOps AgentとBacklogを連携させてみた
satoshi256kbyte
3
190
Amazon_Cognito_で構築する_スケーラブルな_Web_アプリケーション__シングルページ_Web_アプリケーションに認証を組み込む
satoshi256kbyte
0
35
人間とAI、どちらが書いたコードもCI/CDでチェックしてみよう
satoshi256kbyte
0
40
今こそ押さえておきたい アマゾンウェブサービス(AWS)の データベースの基礎 おもクラ #6版
satoshi256kbyte
1
270
今こそ押さえておきたい アマゾンウェブサービス(AWS)の データベースの基礎
satoshi256kbyte
1
58
人間とAI、どちらが書いたコードもCICDでチェックしてみよう
satoshi256kbyte
1
63
はじめてのカスタムエージェント【GitHub Copilot Agent Mode編】
satoshi256kbyte
0
620
お客様とSIerではじめたスクラム開発(で得た学び)
satoshi256kbyte
0
130
From Pipenv to UV: Migrating to a Monorepoto Tame a Complex Repository
satoshi256kbyte
0
79
Other Decks in Programming
See All in Programming
TSKaigi Night Talks 2026_TypeScriptでサプライチェーンの整合性を型に閉じ込める
geekplus_tech
0
330
Inside Stream API
skrb
1
670
Old Dog, New Tricks: The Java 25 Reinvention - JNation
bazlur_rahman
0
150
キャリア迷子上等 ─ "ない道"は自分で作ればいい
16bitidol
3
1.9k
正しくソフトウェアを作る、前提を疑うための認知の視点 / doubt-premise
minodriven
18
6.3k
ふつうのFeature Flag実践入門
irof
7
3.6k
Skillsは効率化、Agentsは"自分の拡張"——Builder時代のエージェント編成(CC Night 2026)
wemra
1
110
LLM Plugin for Node-REDの利用方法と開発について
404background
0
160
Modding RubyKaigi for Myself
yui_knk
0
910
CLIであることを活かしたGitHub Copilot CLI活用術 / GitHub Copilot CLI Pro Tips & Tricks
nao_mk2
1
1.2k
タクシーアプリ『GO』の バックエンド開発のおける AI利活用と若者のすべて
pyama86
3
1.9k
Make SRE Operations Easier with Azure SRE Agent
kkamegawa
0
4.9k
Featured
See All Featured
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
560
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
190
The SEO identity crisis: Don't let AI make you average
varn
0
480
VelocityConf: Rendering Performance Case Studies
addyosmani
333
25k
For a Future-Friendly Web
brad_frost
183
10k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
270
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
720
Producing Creativity
orderedlist
PRO
348
40k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
71
40k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
230
Designing for Performance
lara
611
70k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.9k
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