pipeline { agent any options { buildDiscarder(logRotator(artifactDaysToKeepStr: '', artifactNumToKeepStr: '', daysToKeepStr: '2', numToKeepStr: '2')) } stages { stage('Setup Parameters & ENV') { steps { configFileProvider([configFile(fileId: 'xiaomayi-cloud-nacos', variable: 'settingsFile')]) { script { def config = readJSON file:"$settingsFile" def jobNameStr = JOB_NAME.tokenize('/') as String[] def jobName = jobNameStr[0] def branchConfig = config."branchConfig"."${env.BRANCH_NAME}" def serviceConfig = config."serviceConfig"."${jobName}" GOMOD_SET = branchConfig.GOMOD_SET registry = branchConfig.registry registryCredential = branchConfig.registryCredential namespace = branchConfig.namespace jenkinsAgent = branchConfig.jenkinsAgent echo "jobName: ${jobName}" echo "The Maven Set XML for the ${env.BRANCH_NAME} branch is: ${GOMOD_SET}" projectName = serviceConfig.projectName packageName = serviceConfig.packageName serverHost01= serviceConfig.serverHost01 servicePath = serviceConfig.servicePath filePath = "${servicePath}" echo "projectName: ${projectName}" echo "packageName: ${packageName}" echo "serverHost01: ${serverHost01}" if ("${env.BRANCH_NAME}" == "dev") { serverIP01 = branchConfig."${serverHost01}" echo "dev serverIP01: ${serverIP01}" properties([ parameters([ string( defaultValue: 'dev', description: '编译参数', name: 'PROFILES', trim: true ) ]) ]) } else if ("${env.BRANCH_NAME}" == "test"){ serverIP01 = branchConfig."${serverHost01}" echo "test serverIP01: ${serverIP01}" properties([ parameters([ string( defaultValue: 'test', description: '编译参数', name: 'PROFILES', trim: true ) ]) ]) } else if ("${env.BRANCH_NAME}" == "master") { properties([ parameters([ string( defaultValue: 'prod', description: '编译参数', name: 'PROFILES', trim: true ) ]) ]) serverIP01 = branchConfig."${serverHost01}" echo "prod serverIP01: ${serverIP01}" } else { error("Build failed because failed to fetch settings for branch") } echo "The serverIP for the branch: ${env.BRANCH_NAME}, profile: ${PROFILES} is: ${serverIP01}" } } } } stage('Build') { agent { label { label jenkinsAgent } } steps { sh """ node -v yarn config set registry https://registry.npmmirror.com yarn config get registry yarn config set strict-ssl false cd ${filePath} yarn install yarn run build:${PROFILES} """ } } stage("Deploy") { options { skipDefaultCheckout() } when { expression { return params.PROFILES != "uat" } } agent { label { label jenkinsAgent } } steps { script { sh 'echo "#### MD5 HASH ####"' sh "cd ${filePath}; ls -lsh; rm -rf ${projectName} ${packageName}; mv dist ${projectName} && tar zcf ${packageName} ${projectName}; md5sum ${packageName}" sh 'echo "#### scp and restart ####"' sh "ssh ${serverIP01} 'cd /usr/local/docker/nginx/html/xiaomayi-nacos-antdvue; rm -rf ${projectName}; rm -f ${packageName}'" sh "cd ${filePath}; scp ${packageName} ${serverIP01}:/usr/local/docker/nginx/html/xiaomayi-nacos-antdvue/${packageName}" sh "ssh ${serverIP01} 'cd /usr/local/docker/nginx/html/xiaomayi-nacos-antdvue; tar zxf ${packageName}; ls -l'" } } } } }