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.3k
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
12
AWS Summit 2025 の見どころを振り返る!
masuchoku
0
240
AWS TransferFamilyを使ってみた!
masuchoku
0
310
AWSを触ってきた数年間を振り返る!
masuchoku
1
320
Step Functionsと少し仲良くなってみた
masuchoku
1
540
API Gatewayと少し仲良くなってみた!
masuchoku
0
860
スライド作りから LTを楽しもう! エンジョイ、 エンジニアライフ!
masuchoku
1
560
APCのAWS認定マスターたちに聞いてみた
masuchoku
0
200
AppSync入門! GraphQL APIを作ってみた!
masuchoku
3
950
Other Decks in Programming
See All in Programming
GeistFabrik and AI-augmented software development
adewale
PRO
0
160
Flutterアプリ運用の現場で役立った監視Tips 5選
ostk0069
1
510
Level up your Gemini CLI - D&D Style!
palladius
1
110
全員アーキテクトで挑む、 巨大で高密度なドメインの紐解き方
agatan
6
8.9k
目的で駆動する、AI時代のアーキテクチャ設計 / purpose-driven-architecture
minodriven
10
3.3k
知られているようで知られていない JavaScriptの仕様 4選
syumai
0
630
スタートアップを支える技術戦略と組織づくり
pospome
8
11k
Claude Code on the Web を超える!? Codex Cloud の実践テク5選
sunagaku
0
600
モデル駆動設計をやってみよう Modeling Forum2025ワークショップ/Let’s Try Model-Driven Design
haru860
0
180
How Software Deployment tools have changed in the past 20 years
geshan
0
4.5k
Microservices Platforms: When Team Topologies Meets Microservices Patterns
cer
PRO
0
470
Eloquentを使ってどこまでコードの治安を保てるのか?を新人が考察してみた
itokoh0405
0
3.2k
Featured
See All Featured
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
The Power of CSS Pseudo Elements
geoffreycrofte
80
6.1k
How STYLIGHT went responsive
nonsquared
100
5.9k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.3k
A Modern Web Designer's Workflow
chriscoyier
697
190k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.6k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
680
GraphQLとの向き合い方2022年版
quramy
49
14k
Become a Pro
speakerdeck
PRO
29
5.6k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
140
34k
Typedesign – Prime Four
hannesfritz
42
2.9k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.1k
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 への移行も勉強中!
ありがとうございました ^^/