More Related Content
Similar to モノタロウの開発・リリースサイクルを支えるJenkinsの活用事例 - Jenkins Day Japan 2021 (20)
More from 株式会社MonotaRO Tech Team (20)
モノタロウの開発・リリースサイクルを支えるJenkinsの活用事例 - Jenkins Day Japan 2021
- 2. 自己紹介 - 金谷敦志
2
● 2014年にMonotaROに入社
● ECサイト開発とDevOps普及活動を行い、現
在はエンジニアリングマネージャー
● 現職は3社目だが3社すべてでJenkins導入に
関わっており、今も片手間でJenkinsを運用
し続けている
(Twitterなどはこちら)
- 20. ● Jenkinsジョブのビルド手順を書いたスクリプト
● マルチブランチパイプラインでは必須
● 構文はDeclarative・Scriptedの両方あるがどちらも実行には問題なし
20
Jenkinsfile
pipeline {
agent {
docker {
image 'node:dubnium-jessie'
}
}
stages {
stage('eslint') {
steps {
sh script: 'npm ci && npm run lint -- -f checkstyle -o eslint_result.xml', returnStatus: true
checkstyle pattern: 'eslint_result.xml', defaultEncoding: 'UTF-8'
}
}
}
}
DeclarativeかScriptedかは
ビルド手順の複雑さで
使い分けるのがいいよ
- 22. ● Branches and Pull Requests
○ GitHub, Bitbucket等に合わせたプラグインを使う
○ 所定の場所にあるJenkinsfileでビルド実行
22
マルチブランチパイプライン
- 25. ● mysqlコンテナは起動時にスキーマ生成とデータ投入を実行
○ MySQL公式のDockerイメージは /docker-entrypoint-initdb.d にある
シェルやSQLのスクリプトをファイル名順で順次実行する
● mysqlコンテナとpythonコンテナをsidecarパターンでリンク
25
結合テスト
sidecarパターンのコード例は
弊社エンジニアもコントリビュートしてい
るよ
Using Docker with Pipeline
See also: Software Design連載 2021年9月号 「テストが無い」からの脱却
- 26. ● 受け入れテスト実行環境を
入れたイメージを使用
○ Robot Framework
○ Chromium
○ Chrome driver
26
受け入れテスト
chrome(chromium)に
--headless オプションを付けると
Jenkins内でも動かせるHeadless
モードになるよ
See also: Software Design連載 2021年11月号 Robot FrameworkでE2Eテストを自動化する
- 32. ● 認証は社内の仕組みと合わせる (Google認証やLDAPなど)
● 認可はRole-based Authorization Strategy
○ ユーザーは何かしらのロールに所属
○ ロールはマッチするジョブに関する操作権限を持つ
32
事故らずジョブ実行できる仕組み (認証/認可)
ジョブ名重要なのでJenkins管理者のみが
ジョブを作れるようにしたよ。
担当の運用負担が増えるよ …
- 38. 38
ワークフロージョブとタスク実行ジョブ
stage('ContentsSync' ) {
build job:
"b2b_release_monotarocontents_${deployTarget}"
}
stage('Release') {
parallel(
ecap: {
build job: "b2b_release_ecap_${deployTarget}"
},
cd: {
build job: "b2b_release_cd_${deployTarget}"
}
)
}
● ワークフロージョブの中でタスク実行ジョブを呼ぶ