著者:長久保 篤、酒井 利治
ソフトウエアの開発・生産性を高めるには「CI(Continuous Integration)/CD(Continuous Delivery)」が不可欠となっています。本特集では、CI/CDとは何か、オープンソースソフトウエアの「Jenkins」を用いてCI/CD環境を構築する方法を分かりやすく解説します。
シェルスクリプトマガジン Vol.73は以下のリンク先でご購入できます。
図9 Dockerfileの内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
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の内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
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()] ) } } } |