一、springboot 项目流水线配置
1.1 参数化构建页面
1.2 配置
其中下拉选择分支参考本文章:Jenkins配置pipeline选择git分支发布,https://blog.csdn.net/xj90314/article/details/100074208
pipeline脚本:
pipeline {
agent {
kubernetes {
label 'jenkins-slave-java'
}
}
parameters {
gitParameter branchFilter: 'origin/(.*)', defaultValue: 'master', name: 'BRANCH', type: 'PT_BRANCH', description:'please switch branch'
choice(name: 'BaseImage', choices: ['openjdk11.0.9'], description: 'base image tag')
choice(name: 'RancherProject', choices: ['dev'],description: 'please switch environment')
string(name: 'BuildParameter', defaultValue: 'none', description: 'default same as RancherProject')
choice(name: 'SyncToRancher', choices: ['Y','N'],description: 'sync to rancher')
string(name: 'DBPassFile', defaultValue:'none', description: 'when value is none,DBPassFile path is ...,you can input special value to cover it')
}
environment {
PRO_NAME = "gateway"
BuildParameter="${params.BuildParameter}"
SyncToRancher = "${params.SyncToRancher}"
NS = "${params.RancherProject}"
RNAME = "476548611639.dkr.ecr.eu-south-1.amazonaws.com/gateway"
S3NAME = "hope-jar-test"
BRANCH = "${params.BRANCH}"
DBPasswd='test-db'
BaseImage="${params.BaseImage}"
}
stages {
stage('Clean workspace') {
steps {
deleteDir()
}
}
stage('Process parameters') {
steps {
script {
if("${params.BuildParameter}"=="none") {
BuildParameter="${RancherProject}"
}
else {
BuildParameter="${params.BuildParameter}"
}
if("${params.DBPassFile}"=="none") {
DBPassFile="${params.DBPassFile}"
}
else {
DBPassFile="${params.DBPassFile}"
}
}
}
}
stage('Pull SourceCode') {
steps {
echo "${BRANCH}"
git branch: "${BRANCH}", credentialsId: 'd560c72c-c2f9-43e0-9cdf-784818071c40', url: 'https://git-codecommit.eu-south-1.amazonaws.com/v1/repos/MyPay_Payment_Gateway'
}
}
stage('Build') {
steps{
sh '''
echo "==============Start Build=========="
cd mypay/pay_common
mvn -DskipTests=true clean install
cd ../mypay-order
mvn -DskipTests=true clean install
cd ../mypayadmin-logging
mvn -DskipTests=true clean install
cd ../mypay-account
mvn -DskipTests=true clean install
cd ../mypayadmin-generator
mvn -DskipTests=true clean install
cd ../pay-gateway
mvn -DskipTests=true clean install
echo "==============End Build=========="
'''
}
}
stage('Collect artifact') {
steps {
script {
if(!fileExists("${PRO_NAME}")) {
sh "mkdir -p ${PRO_NAME}/{classes,lib,webapps}"
}
sh "cp -f /root/mavenlib/com/deepvision/pay/pay-gateway/1.0.0-SNAPSHOT/pay-gateway-1.0.0-SNAPSHOT.jar ${PRO_NAME}/classes/${PRO_NAME}.jar"
}
}
}
stage('Process Dockerfile') {
steps {
script {
sh '''
cp -f /root/bin/DockerfileTemp Dockerfile
sed -i "s/BASEIMAGETAG/${BaseImage}/g" Dockerfile
sed -i "s#deploymentdir#${PRO_NAME}#g" Dockerfile
'''
}
}
}
stage('Build docker image and sync to rancher') {
steps{
sh '''
Tag="${NS}_${BRANCH}_$(date '+%Y%m%d%H%M')"
aws ecr get-login-password | docker login --username AWS --password-stdin 476548611639.dkr.ecr.eu-south-1.amazonaws.com
docker build -t ${RNAME}:${Tag} .
docker push ${RNAME}:${Tag}
docker rmi ${RNAME}:${Tag}
echo "==============start sync ${RNAME}:${Tag} to rancher=========="
if [ "${SyncToRancher}" == "Y" ]
then
python /root/bin/syncRancher.py test ${NS} ${PRO_NAME} ${Tag}
fi
'''
}
}
}
}
二、VUE项目的流水线配置
2.1 参数化构建页面
2.2 配置
pipeline脚本:
pipeline {
agent {
kubernetes {
label 'jenkins-slave-java'
}
}
parameters {
gitParameter branchFilter: 'origin/(.*)', defaultValue: 'master', name: 'BRANCH', type: 'PT_BRANCH', description: '选择需要构建的分支'
choice(name: 'HOSTNAME', choices: ['dev-static-gateway.deepxin.com'], description: '主机名')
string(name: 'BuildCmd', defaultValue: 'npm install && npm run build', description:'编译命令')
}
environment {
HOSTNAME="${params.HOSTNAME}"
S3NAME = "deepxin-fe-all/dev"
BuildCmd="${params.BuildCmd}"
BRANCH="${params.BRANCH}"
}
stages {
stage('Clean workspace') {
steps {
deleteDir()
}
}
stage('Pull SourceCode') {
steps {
dir("${WORKSPACE}") {
git branch: "${params.BRANCH}", credentialsId: 'd560c72c-c2f9-43e0-9cdf-784818071c40', url: 'https://git-codecommit.eu-south-1.amazonaws.com/v1/repos/mypay-backoffice'
}
}
}
stage('Build') {
steps{
dir("${WORKSPACE}") {
sh "${BuildCmd}"
}
}
}
stage('Deploy') {
steps {
dir("${WORKSPACE}") {
sh "aws s3 sync dist/ s3://${S3NAME}/${HOSTNAME}/"
}
}
}
}
}