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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
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
20
AWS Summit 2025 の見どころを振り返る!
masuchoku
0
300
AWS TransferFamilyを使ってみた!
masuchoku
0
370
AWSを触ってきた数年間を振り返る!
masuchoku
1
370
Step Functionsと少し仲良くなってみた
masuchoku
1
610
API Gatewayと少し仲良くなってみた!
masuchoku
0
980
スライド作りから LTを楽しもう! エンジョイ、 エンジニアライフ!
masuchoku
1
620
APCのAWS認定マスターたちに聞いてみた
masuchoku
0
230
AppSync入門! GraphQL APIを作ってみた!
masuchoku
3
980
Other Decks in Programming
See All in Programming
「ブロックテーマでは再現できない」は本当か?
inc2734
0
1.1k
Fluid Templating in TYPO3 14
s2b
0
130
Oxlintはいいぞ
yug1224
5
1.4k
dchart: charts from deck markup
ajstarks
3
1k
2026/02/04 AIキャラクター人格の実装論 口 調の模倣から、コンテキスト制御による 『思想』と『行動』の創発へ
sr2mg4
0
370
Package Management Learnings from Homebrew
mikemcquaid
0
240
カスタマーサクセス業務を変革したヘルススコアの実現と学び
_hummer0724
0
760
インターン生でもAuth0で認証基盤刷新が出来るのか
taku271
0
190
CSC307 Lecture 10
javiergs
PRO
1
670
AIと一緒にレガシーに向き合ってみた
nyafunta9858
0
280
AIに仕事を丸投げしたら、本当に楽になれるのか
dip_tech
PRO
0
100
atmaCup #23でAIコーディングを活用した話
ml_bear
3
340
Featured
See All Featured
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
1.9k
Facilitating Awesome Meetings
lara
57
6.8k
A Soul's Torment
seathinner
5
2.3k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.8k
Art, The Web, and Tiny UX
lynnandtonic
304
21k
Paper Plane (Part 1)
katiecoart
PRO
0
4.3k
How to Talk to Developers About Accessibility
jct
2
140
The Invisible Side of Design
smashingmag
302
51k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
840
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
59
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
0
210
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
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 への移行も勉強中!
ありがとうございました ^^/