Más contenido relacionado La actualidad más candente (20) Similar a 自動化を支えるCI/CDツールの私の選択 ~何をするためにCI/CDツールを選ぶか~ (20) Más de Recruit Lifestyle Co., Ltd. (20) 自動化を支えるCI/CDツールの私の選択 ~何をするためにCI/CDツールを選ぶか~2. 自己紹介
● 関根 康史 ( @AHA_oretama )
● リクルートライフスタイル
○ 2015/8 〜
● ブッキングテーブル → (SET 活動中)
3. What’s SET ?
The SET or Software Engineer in Test is also a developer role except their focus is on testability.
ミッション
プロダクト・サービスの品質向上⤴
エンジニアの開発生産性向上⤴
何をするか
サービスの品質を向上させる ために様々なボトルネックを解消していく
※ 社内にCET,SWATというチームがいるため、SET,SWET以外の名前を考えてます…
11. ● Jenkins 2.Xからデフォルトインストールされる機能
● Pipeline as Code
○ 変更履歴を管理、rollback、レビュの実施
● (再起動後の)永続性
● 手動オペレーションとの融合
Scripted Pipeline
✓ Jenkins 2.Xの初期のデフォルトPipeline
✓ 柔軟な記述が可能な反面、記述が煩雑になりやすい
Declarative Pipeline (since 2017/02/03, Declarative Pipeline Syntax 1.0 is now available)
✓ シンプルに宣言的に扱える
✓ Declarative Pipelineの処理中にScripted Pipelineの構文を使うこともできる
Declarative Pipelineを主に使い、柔軟な表現部分が必要な部分にはScripted Pipelineを使うの
がよいと思う。
Jenkins 2.X Pipeline
12. pipeline {
agent any
stages {
stage('Example') {
steps {
echo 'Hello World'
}
}
}
post {
always {
echo 'I will always say Hello again!'
}
}
}
Jenkins 2.X Declarative Pipeline
Declarative Pipelineを
使うためpipelineで囲む
処理は
stages -> stage -> steps
で定義
pipelineの最後に行う処理。
条件は変更可能
(alwaysは必ず実行)
13. pipeline {
agent {
docker {
image 'maven:3-alpine'
label 'my-defined-label'
args '-v /tmp:/tmp' // dockerに渡る引数
}
}
stages {
stage('Example Build') {
steps {
echo 'Hello, Docker'
}
}
}
}
Jenkins 2.X Declarative Pipeline
agentにDockerも指定可能
14. pipeline {
agent any
tools {
maven ‘apache-maven-3.0.1’
}
trigges {
cron(‘H 4/* 0 0 1-5’)
}
stages {
stage('Example Build') {
steps {
sh 'mvn -B clean verify'
// toolsで指定したツールが PATHに登録され、ツールを実行できるようになる
}
}
}
}
Jenkins 2.X Declarative Pipeline
AutoInstallしたツールを使用できる
● maven
● jdk
● gradle のみ
ジョブの起動トリガー
● cron
● pollScm のみ
15. pipeline {
agent any
stages {
stage('Example Deploy') {
when {
branch 'production'
}
echo 'Deploying'
script {
def browsers = ['chrome', 'firefox']
for (int i = 0; i < browsers.size(); ++i) {
echo "Testing the ${browsers[i]} browser"
}
}
}
}
}
Jenkins 2.X Declarative Pipeline
ブランチがproduction以外は
このstageを実行しない
Scriptブロック内では
Scripted Pipelineを使用できる
18. Jenkins Slave EC2 vs ECS
EC2 Slave ECS(EC2 Container Service)
タイプ インスタンス Docker
ベース AMIからインスタンス起動 Docker Imageから起動
スレーブ管理者 主にインフラ 主に開発者
スケール ジョブが滞留したらスケールする ECS Auto Scaling に対応
メリット 同じ環境のプロジェクトで使いやすい
簡単に始められる
環境がクリーン
起動が早い
デメリット 起動に若干時間がかかる
環境がカオティックになりやすい
イメージ作成・管理が必要
現時点ではEC2 Slaveを採用。
● 既存プロジェクトがDocker未使用のところが多い
● Jenkinsはプロジェクト単位で立てているため、あまり環境がカオティックにならない
21. ● CI/CDツールの選定
● 環境の移行・構成
● CI単体テストのよくある問題の解決
● プルリクエストのCI単体テスト時間の最適化(予定)
● 周辺ツールの整備(予定)
CI単体テストを速くするために
やったこと・やるつもりのこと
=今日お話すること(残り)