Jenkins流水线配置
生活随笔
收集整理的這篇文章主要介紹了
Jenkins流水线配置
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
//定義遠程服務器函數
def GetRemoteServer(ip,credentialsid){def remote = [:]remote.name = ipremote.host = ipremote.allowAnyHosts = truewithCredentials([usernamePassword(credentialsId: credentialsid, passwordVariable: 'password', usernameVariable: 'username')]) {remote.user="${username}"remote.password="${password}"}return remote
}pipeline {agent any//流水線配置信息options{timestamps()buildDiscarder(logRotator(numToKeepStr:'4'))}//環境變量environment {GIT_URL=''GIT_USER_ID=''MAVEN_HOME='/home/zfb/software/apache-maven-3.6.3'SCANNER_HOME='/home/zfb/software/jenkins/tools/hudson.plugins.sonar.SonarRunnerInstallation/SCANNER'//開發服務器地址和賬戶DEV_SERVER_HOST=''DEV_SERVER_USER_ID=''//測試服務器地址和賬戶TEST_SERVER_HOST=''TEST_SERVER_USER_ID=''TEST_DF_PATH='/home/dockerfile/Dockerfile'IMAGE_GROUP=''//docker私有倉庫信息DOCKER_HOST=''DOCKER_USER=''DOCKER_PWD=''}//參數配置parameters{gitParameter(branch: '',branchFilter: '.*',defaultValue: 'origin/huawei-CSE-test',listSize: '10', name: 'branch',quickFilterEnabled: false,selectedValue: 'DEFAULT',sortMode: 'NONE',tagFilter: '*',type: 'PT_BRANCH_TAG')choice(choices:['common','service-ts','service-is','service-isn','service-af','service-bro','service-cm','service-fa','service-im','service-user'],name:'service')choice(choices:['dev','test'],name:'deploy_env')booleanParam(defaultValue: false, name: 'code_quality')}stages {stage('拉取代碼') {steps {checkout poll: false,scm: [$class: 'GitSCM',branches: [[name: "${params.branch}"]],extensions: [],userRemoteConfigs: [[credentialsId: "${env.GIT_USER_ID}",url: "${env.GIT_URL}"]]]}}stage('編譯打包'){steps{sh "cd ${params.service} && ${env.MAVEN_HOME}/bin/mvn clean install -Dmaven.test.skip=true"}}stage('質量檢查') {when{expression{params.code_quality}}steps {withSonarQubeEnv('sonarqube') {sh "${env.SCANNER_HOME}/bin/sonar-scanner -Dsonar.projectName=${params.service} -Dsonar.projectKey=${params.service} -Dsonar.projectBaseDir=${WORKSPACE} -Dsonar.sources=${params.service}/src -Dsonar.java.binaries=${params.service}/target"}}}stage('遠程部署') {when{expression{params.service!='common'}}steps {script{if("${params.deploy_env}"=="dev"){reserver=GetRemoteServer("${env.DEV_SERVER_HOST}","${env.DEV_SERVER_USER_ID}")sshPut remote: reserver, from: "${WORKSPACE}/${params.service}/target/${params.service}-1.0.0.jar", into: "/root/af/back/${params.service}/"sshCommand remote: reserver, command: "cd /root/af/back/${params.service} && sh -x ${params.service}.sh || true"}else if("${params.deploy_env}"=="test"){dir("${WORKSPACE}/${params.service}/target"){sh "mv ${params.service}-1.0.0.jar ${params.service}.jar"sh "sudo docker login -u ${env.DOCKER_USER} -p ${env.DOCKER_PWD} ${env.DOCKER_HOST}"sh "sudo docker build -f ${env.TEST_DF_PATH} -t ${params.service} --build-arg project=${params.service} --no-cache=true ."sh "sudo docker tag ${params.service}:latest ${env.DOCKER_HOST}/${env.IMAGE_GROUP}/${params.service}:latest;"sh "sudo docker push ${env.DOCKER_HOST}/${env.IMAGE_GROUP}/${params.service}:latest"reserver=GetRemoteServer("${env.TEST_SERVER_HOST}","${env.TEST_SERVER_USER_ID}")sshCommand remote: reserver, command: "cd /root/bms/back/shell && sh -x update.sh ${env.IMAGE_GROUP} ${params.service} || true"}}}}}}
}
總結
以上是生活随笔為你收集整理的Jenkins流水线配置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: div 设置a4大小_javascrip
- 下一篇: 电脑QQ登录测试用例