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
AWSとJenkinsおじさん で学んできたCI_CD
Search
Nao Masuya
July 31, 2023
Programming
1
1.4k
AWSとJenkinsおじさん で学んできたCI_CD
2023/7/29開催のJAWS-UG TOHOKUでLTした資料
新卒から3年間ほどCI/CDに関わってきた経験をもとに、JenkinsとAWSについてお話ししました!
Nao Masuya
July 31, 2023
Tweet
Share
More Decks by Nao Masuya
See All by Nao Masuya
久しぶりのAWS!JAWS!初めてBedrockを触ってリハビリ!
masuchoku
0
14
AWS Summit 2025 の見どころを振り返る!
masuchoku
0
270
AWS TransferFamilyを使ってみた!
masuchoku
0
340
AWSを触ってきた数年間を振り返る!
masuchoku
1
340
Step Functionsと少し仲良くなってみた
masuchoku
1
570
API Gatewayと少し仲良くなってみた!
masuchoku
0
910
スライド作りから LTを楽しもう! エンジョイ、 エンジニアライフ!
masuchoku
1
590
APCのAWS認定マスターたちに聞いてみた
masuchoku
0
220
AppSync入門! GraphQL APIを作ってみた!
masuchoku
3
960
Other Decks in Programming
See All in Programming
AIエンジニアリングのご紹介 / Introduction to AI Engineering
rkaga
8
3.5k
Rubyで鍛える仕組み化プロヂュース力
muryoimpl
0
230
著者と進める!『AIと個人開発したくなったらまずCursorで要件定義だ!』
yasunacoffee
0
170
從冷知識到漏洞,你不懂的 Web,駭客懂 - Huli @ WebConf Taiwan 2025
aszx87410
2
3.2k
「コードは上から下へ読むのが一番」と思った時に、思い出してほしい話
panda728
PRO
39
26k
Cap'n Webについて
yusukebe
0
150
組み合わせ爆発にのまれない - 責務分割 x テスト
halhorn
1
170
PostgreSQLで手軽にDuckDBを使う!DuckDB&pg_duckdb入門/osc25hi-duckdb
takahashiikki
0
210
GoLab2025 Recap
kuro_kurorrr
0
790
The Art of Re-Architecture - Droidcon India 2025
siddroid
0
150
ゆくKotlin くるRust
exoego
1
180
SwiftUIで本格音ゲー実装してみた
hypebeans
0
530
Featured
See All Featured
The untapped power of vector embeddings
frankvandijk
1
1.5k
Facilitating Awesome Meetings
lara
57
6.7k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.2k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
The Cost Of JavaScript in 2023
addyosmani
55
9.4k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
0
110
Color Theory Basics | Prateek | Gurzu
gurzu
0
160
Mobile First: as difficult as doing things right
swwweet
225
10k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
3.8k
How STYLIGHT went responsive
nonsquared
100
6k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.3k
Transcript
AWSとJenkinsおじさん で学んできたCI/CD 7/29 JAWS-UG TOHOKU 升谷直緒
Self Introduction 所属 株式会社 エーピーコミュニケーションズ @apc_tweet
Self Introduction 株式会社 エーピーコミュニケーションズ システム基盤サービス事業本部 クラウド事業部 IaC技術推進部 升谷直緒 業務 •
2020年入社 • SIerとして4年目 • AWS ★ • CI/CDの導入支援 ★ • Webアプリの改善運用 ◦ Java, Camel • リモートワーク
Self Introduction -> @masuchoku 技術ブログ AP Tech Blog -> masuchoku
Self Introduction 升谷直緒 / Masuya Nao 神奈川県出身 趣味 • ウインドサーフィン
• SUP • マスキングテープ集め 東北との関わり • 東北にきたのは2回目です! ◦ 秋田の国際教養大学に1度行きました
JAWS 参加経験 • 名古屋 ◦ 1度 LTしました ◦ ハンズオンにも何度か参加! 立花さんのRekognitionハンズ
オンにも参加! • クラウド女子会 ◦ ハンズオンに1度参加 JAWSに何度か参加してみて • 社外の人と関われる貴重な機会 • 普段使わないAWSサービスに触れる • アウトプットと向き合う 弊社社員登壇予定です • 8/5 新潟JAWS • 8/19 佐賀JAWS
Table of contents 1 2 4 3 CI/CD 環境 CI/CD
を AWS に AWS と Jenkins pipeline Summary
1.1 CI/CDについて ビルドサーバー デプロイサーバー 構成管理ツール CI/CD ツール テストツール
1.1 CI/CD について ビルドサーバー デプロイサーバー 1. アプリソースコード に変更はありますか? 2. アプリソースコード
に変更を確認したので ビルドしましょう 3. アプリソースコードをチェックアウト 5. アプリソースコード のチェック 6. ビルド成果物どうぞ! 4. ビルド致します CI CD 構成管理ツール CI/CD ツール テストツール
1.2 Jenkinsおじさんとの出会い 新卒で初めて関わったお仕事がCI/CD Jenkinsを使ってCI/CDをコードで定義するパイプラインを作成 開発っぽいコードを書く業務ができたことに喜びを覚えた 一方、Jenkinsパイプラインはgroovy(Javaの仲間)言語を使って定義 するため、 yml記法を使うGitHub ActionsやAWS CodeSeriesの方が分かり易く
ホットでもある ただ、オフライン環境でも使えてプラグイン祭りのJenkinsはなんだ かんだ守備範囲が広く使い勝手がよく、業務で採用されていた そんなこんなで私は毎日Jenkinsおじさんと戦うことになった
1.3 今回のCI/CDについて ビルドサーバー デプロイサーバー 1. アプリソースコード に変更はありますか? 2. アプリソースコード に変更を確認したので
ビルドしましょう 3. Jenkinsパイプラインや アプリソースコードをチェックアウト 5. アプリソースコード のチェック 6. ビルド成果物どうぞ! 4. ビルド致します
1.4 CI/CD 環境をコンテナ化 LDAP docker-networkで コンテナ間通信 オンプレ サーバー 仮想 サーバー
さまざまな 環境にCI/CDの 導入ができる! クラウド
Table of contents 1 2 4 3 CI/CD 環境 CI/CD
を AWS に AWS と Jenkins pipeline Summary
2.1 CI/CD 環境を AWS に LDAP デプロイ サーバー CICD環境 ビルド環境
コンテナ資材 ECR ビ ル ド 資 材 を 取 り に 行 く どこかに デプロイ S3 ECR パイプラインや ビルド資材を取りに行く
Table of contents 1 2 4 3 CI/CD 環境 CI/CD
を AWS に AWS と Jenkins pipeline Summary
3.1 Jenkins pipeline の書き方 pipeline { agent { label 'ビルドサーバー'
} environment { ECR_PREFIX = "" AWS_DEFAULT_REGION = "" } stage ('1. GitからCheckout'){ } stage ('2. Build'){ } stage ('3. Test'){ } stage ('4. Deploy'){ } }
3.2 Jenkins パラメーター Jenkins側でもジョブ実行時に パラメーターとして変数を定義し ジョブを実行することが可能!
3.3 AWS ECRにログインするgroovyの紹介 // ログイン stage ('Login ECR'){ withCredentials([usernamePassword( credentialsId:
'ECRUser', passwordVariable: 'AWS_SECRET_ACCESS_KEY', usernameVariable: 'AWS_ACCESS_KEY_ID')]) { sh ''' CMD=`aws ecr get-login --no-include-email --region <リージョン>` $CMD ''' } } aws ecr get-login-password が推奨されているみたいです! 認証情報を登録しておく ビルド環境 コンテナ資材 ECR
3.4 ECRからイメージをpullするgroovyの紹介 // ECRから対象のイメージを取得 stage ('Image pull from ECR'){ def
targets = COMPOSE_LISTS.split("\n") targets.each { target -> echo """pull ${target}""" sh """ docker pull ${ECR_PREFIX}${target}:${TAG} docker tag ${ECR_PREFIX}${target}:${TAG} ${target}:${TAG} """ } } ビルド環境 コンテナ資材 ECR
3.5 ECRへイメージをpushするgroovyの紹介 // ECRから対象のイメージを取得 stage ('Image pull from ECR'){ def
targets = COMPOSE_LISTS.split("\n") targets.each { target -> echo """pull ${target}""" sh """ docker tag ${target}:${TAG} ${ECR_PREFIX}${target}:${TAG} docker push ${ECR_PREFIX}${target}:${TAG} """ } } ビルド環境 コンテナ資材 ECR
3.6 S3へアップロードするgroovyの紹介 // イメージをS3へアップロード stage ('Push Images To S3'){ def
targets = COMPOSE_LISTS.split("\n") def AWS_DEFAULT_REGION = <リージョン> targets.each { target -> withCredentials([usernamePassword( credentialsId: 'AWS_User', passwordVariable: 'AWS_SECRET_ACCESS_KEY', usernameVariable: 'AWS_ACCESS_KEY_ID')]) { sh """ aws configure set aws_access_key_id ${AWS_ACCESS_KEY_ID} aws configure set aws_secret_access_key ${AWS_SECRET_ACCESS_KEY} aws configure set default.region ${AWS_DEFAULT_REGION} aws s3 cp ./ s3://<S3バケット名>/${target} rm ~/.aws/config ~/.aws/credentials """ } } } ビルド環境 コンテナ資材 ECR
Table of contents 1 2 4 3 CI/CD 環境 CI/CD
を AWS に AWS と Jenkins pipeline Summary
Summary • コンテナ化のメリット ◦ CI/CD環境をOSSで組み合わせコンテナ化することでGitHubActions, AWS Code Seriesへのアクセスが担保できない環境でのCI/CDが実現 • AWSの手軽さ
◦ コンテナ化とクラウドの組み合わせで手軽にCI/CD環境の構築・削除が可能 • Jenkinsパイプラインにチャレンジ ◦ YAML方式の方が読みやすい・書きやすいといえど、groovyはシンプルに記載 が可能のため開発者でなくても0からの作成が可能! • 散々Jenkinsを紹介しておきながら... Jenkins -> Code Pipeline への移行も勉強中!
ありがとうございました ^^/