Jenkinsとは
CI/CDを構築するためのオープンソースツールの1つ。
Javaが動く環境であればLinuxでもWindowsでも動作させることができる。
Jenkinsの構成例
マスタ/スレーブ構成
2種類のJenkinsサーバ(マスタ/スレーブ)を立てて運用する場合は以下のような構成になる。
ここではGitLabで資材を管理し、Jenkinsでビルドを行った後にAmazon S3またはNexus Repositoryへ資材をデプロイする例とする。
作業者がGitLabへ資材をプッシュしたことをJenkinsが検知し、まずマスタサーバがGitLabから資材を取得する。
その後マスタサーバからスレーブサーバへ資材が連携され、スレーブサーバでビルドが実行される。
スレーブサーバは空いているノードが優先的に使用される。(Jenkinsの設定によって、GitLabリポジトリごとに使用するノードを分けることも可能。)
スレーブの設定方法については、こちらの記事を参照。
CodeBuildと連携する構成
JenkinsをAWSのCodeBuildと連携することもできる。
ここではGitLabで資材を管理し、JenkinsとCodeBuildでビルドを行った後にAmazon S3またはNexus Repositoryへ資材をデプロイする例とする。
作業者がGitLabへ資材をプッシュしたことをJenkinsが検知し、まずJenkinsがGitLabから資材を取得する。
その後JenkinsがCodeBuildを呼び出し、CodeBuildでビルドが実行される。
JenkinsとCodeBuildの連携方法については、こちらの記事を参照。
Jenkinsfile
Jenkinsで実行される処理はJenkinsfileというファイルに定義する。
ここではJenkinsfileの基礎知識を紹介する。
記法の種類
Jenkinsfileの記法には、Declarative
とScripted
の2種類が存在する。
Declarative
の方が後発であり、柔軟で読み書きしやすい。
詳細はこちらのガイドを参照。
どちらの記法で記載されているかは、開始タグで見分けることができる。
記法 | 開始タグ |
---|---|
Declarative | pipeline |
Scripted | node |
記載方法
ここではDeclarative
の記載例を示す。
以下のように、ステージごとにブロックを分けて処理を定義していく。
pipeline {
agent any
stages {
stage('Build') {
steps {
echo 'Building..'
}
}
stage('Test') {
steps {
echo 'Testing..'
}
}
stage('Deploy') {
steps {
echo 'Deploying....'
}
}
}
}
記載方法の詳細は以下を参照。
https://www.jenkins.io/doc/book/pipeline/jenkinsfile/
https://qiita.com/dublog/items/38831adf42e3cfeed66a