Spring Bootプロジェクトのパイプライン設定
パラメータ化ビルド設定
Jenkinsでは、ビルドパラメータを柔軟に設定できます。ビルド実行時にブランチ選択、環境選択、カスタムパラメータの指定などが可能です。
パイプライン設定
以下にSpring Bootプロジェクト用のJenkinsパイプライン例を示します。ビルド環境クリーンアップ、ソースコード取得、ビルド、成果物収集、Dockerイメージ作成、Rancherへのデプロイまでを自動化しています。
pipeline {
agent {
kubernetes {
label 'jenkins-worker-java'
}
}
parameters {
gitParameter branchFilter: 'origin/(.*)', defaultValue: 'main', name: 'TARGET_BRANCH', type: 'PT_BRANCH', description:'ビルド対象のブランチを選択してください'
choice(name: 'BASE_IMAGE', choices: ['openjdk17.0.2'], description: 'ベースイメージタグ')
choice(name: 'ENVIRONMENT', choices: ['staging'],description: 'デプロイ環境を選択')
string(name: 'BUILD_PARAMS', defaultValue: 'none', description: 'ビルドパラメータ(デフォルトは環境と同じ)')
choice(name: 'DEPLOY_TO_RANCHER', choices: ['YES','NO'],description: 'Rancherにデプロイするか')
string(name: 'DB_PASSWORD_PATH', defaultValue:'none', description: 'DBパスワードファイルパス(noneの場合はデフォルトを使用)')
}
environment {
PROJECT_NAME = "payment-gateway"
BUILD_PARAMETER="${params.BUILD_PARAMS}"
DEPLOY_FLAG = "${params.DEPLOY_TO_RANCHER}"
NAMESPACE = "${params.ENVIRONMENT}"
REPO_NAME = "123456789012.dkr.ap-northeast-1.amazonaws.com/payment-gateway"
S3_BUCKET = "artifacts-dev"
TARGET_BRANCH = "${params.TARGET_BRANCH}"
DB_PASSWORD='dev-db-pass'
BASE_IMAGE="${params.BASE_IMAGE}"
}
stages {
stage('ワークスペースのクリーンアップ') {
steps {
deleteDir()
}
}
stage('パラメータ処理') {
steps {
script {
if("${params.BUILD_PARAMS}"=="none") {
BUILD_PARAMETER="${NAMESPACE}"
}
if("${params.DB_PASSWORD_PATH}"=="none") {
DB_PASSWORD_PATH="/etc/secrets/db/password"
}
}
}
}
stage('ソースコードの取得') {
steps {
echo "ブランチ: ${TARGET_BRANCH}"
git branch: "${TARGET_BRANCH}", credentialsId: 'git-credentials-id', url: 'https://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/payment-gateway-repo'
}
}
stage('ビルド') {
steps{
sh '''
echo "==============ビルド開始=========="
cd payment/common
mvn -DskipTests=true clean install
cd ../payment-order
mvn -DskipTests=true clean install
cd ../payment-logging
mvn -DskipTests=true clean install
cd ../payment-account
mvn -DskipTests=true clean install
cd ../payment-gateway
mvn -DskipTests=true clean install
echo "==============ビルド完了=========="
'''
}
}
stage('成果物の収集') {
steps {
script {
if(!fileExists("${PROJECT_NAME}")) {
sh "mkdir -p ${PROJECT_NAME}/{classes,lib,webapps}"
}
sh "cp -f /root/mavenlib/com/company/payment/payment-gateway/1.0.0-SNAPSHOT/payment-gateway-1.0.0-SNAPSHOT.jar ${PROJECT_NAME}/classes/${PROJECT_NAME}.jar"
}
}
}
stage('Dockerfileの処理') {
steps {
script {
sh '''
cp -f /root/templates/Dockerfile.template Dockerfile
sed -i "s/BASE_IMAGE_TAG/${BASE_IMAGE}/g" Dockerfile
sed -i "s#app_dir#${PROJECT_NAME}#g" Dockerfile
'''
}
}
}
stage('DockerイビルドとRancher同期') {
steps{
sh '''
IMAGE_TAG="${NAMESPACE}_${TARGET_BRANCH}_$(date '+%Y%m%d%H%M')"
aws ecr get-login-password | docker login --username AWS --password-stdin 123456789012.dkr.ap-northeast-1.amazonaws.com
docker build -t ${REPO_NAME}:${IMAGE_TAG} .
docker push ${REPO_NAME}:${IMAGE_TAG}
docker rmi ${REPO_NAME}:${IMAGE_TAG}
echo "==============Rancherへの同期開始: ${REPO_NAME}:${IMAGE_TAG} =========="
if [ "${DEPLOY_FLAG}" == "YES" ]
then
python /root/scripts/deployToRancher.py prod ${NAMESPACE} ${PROJECT_NAME} ${IMAGE_TAG}
fi
'''
}
}
}
}
Vue.jsプロジェクトのパイプライン設定
パラメータ化ビルド設定
フロントエンドプロジェクトでは、ビルド対象ブランチ、デプロイ先ホスト名、カスタムビルドコマンドなどをパラメータとして設定できます。
パイプライン設定
以下にVue.jsプロジェクト用のJenkinsパイプライン例を示します。ワークスペースのクリーンアップ、ソースコード取得、ビルド、S3へのデプロイまでを自動化しています。
pipeline {
agent {
kubernetes {
label 'jenkins-worker-node'
}
}
parameters {
gitParameter branchFilter: 'origin/(.*)', defaultValue: 'develop', name: 'SOURCE_BRANCH', type: 'PT_BRANCH', description: 'ビルド対象のブランチを選択'
choice(name: 'DEPLOY_HOST', choices: ['staging-admin.deepxin.com'], description: 'デプロイ先ホスト名')
string(name: 'BUILD_COMMAND', defaultValue: 'npm install && npm run build', description:'ビルドコマンド')
}
environment {
DEPLOY_HOST="${params.DEPLOY_HOST}"
S3_BUCKET = "frontend-artifacts/staging"
BUILD_CMD="${params.BUILD_COMMAND}"
SOURCE_BRANCH="${params.SOURCE_BRANCH}"
}
stages {
stage('ワークスペースのクリーンアップ') {
steps {
deleteDir()
}
}
stage('ソースコードの取得') {
steps {
dir("${WORKSPACE}") {
git branch: "${params.SOURCE_BRANCH}", credentialsId: 'git-credentials-id', url: 'https://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/frontend-admin'
}
}
}
stage('ビルド') {
steps{
dir("${WORKSPACE}") {
sh "${BUILD_CMD}"
}
}
}
stage('デプロイ') {
steps {
dir("${WORKSPACE}") {
sh "aws s3 sync dist/ s3://${S3_BUCKET}/${DEPLOY_HOST}/ --delete"
}
}
}
}
}
上記のパイプライン設定により、Spring BootとVue.jsプロジェクトのビルドからデプロイまでを自動化できます。パラメータを変更することで、異なる環境やブランチへのデプロイが容易になります。