著者:長久保 篤、酒井 利治
ソフトウエアの開発・生産性を高めるには「CI(Continuous Integration)/CD(Continuous Delivery)」が不可欠となっています。本特集では、CI/CDとは何か、オープンソースソフトウエアの「Jenkins」を用いてCI/CD環境を構築する方法を分かりやすく解説します。
シェルスクリプトマガジン Vol.73は以下のリンク先でご購入できます。![]()
![]()
図9 Dockerfileの内容
FROM jenkins/jenkins:2.277.4-lts-jdk11
USER root
RUN apt update && apt install -y apt-transport-https \
ca-certificates curl gnupg2 \
software-properties-common
RUN curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
RUN apt-key fingerprint 0EBFCD88
RUN add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/debian \
$(lsb_release -cs) stable"
RUN apt update && apt install -y docker-ce-cli
USER jenkins
RUN jenkins-plugin-cli --plugins "blueocean:1.24.6 docker-workflow:1.26"
図21 Jenkinsfileの内容
pipeline {
agent any
stages {
stage('ビルド') {
steps {
sh 'mvn -B -DskipTest clean package'
}
}
stage('テスト') {
steps {
sh 'mvn -B test'
}
}
stage('デプロイ') {
steps {
sh './jenkins/scripts/deliver.sh'
}
}
}
}
図41 説明した内容を反映したJenkinsfile
pipeline {
agent {
label 'mvn3'
}
stages {
stage('ビルド') {
steps {
sh 'mvn -B -DskipTest clean package'
archiveArtifacts artifacts: 'target/*.jar'
}
}
stage('テスト') {
steps {
sh 'mvn -B test'
}
post {
always {
junit 'target/surefire-reports/*.xml'
}
}
}
stage('デプロイ') {
when {
branch 'master'
beforeInput true
}
input {
message "デプロイしますか?"
}
steps {
sh './jenkins/scripts/deliver.sh'
}
}
}
post {
failure {
emailext (
subject: "失敗: プロジェクト '${env.JOB_NAME} [${env.BUILD_NUMBER}]'",
body: """次のページでコンソールの出力を確認してください:
${env.BUILD_URL}""",
recipientProviders: [developers()]
)
}
}
}