// 所有的脚本命令都放在pipeline中 pipeline{ // 指定任务的构建在哪个集群节点中执行,any指任意一个 agent any // 声明全局变量,方便后面使用 environment { harbor_user = 'admin' harbor_passwd = 'Zq0034bgns.' harbor_address = '192.168.0.3:9080' harbor_repo = 'repo' } stages { stage('拉取git仓库代码') { steps { checkout scmGit(branches: [[name: '${tag}']], extensions: [], userRemoteConfigs: [[credentialsId: 'ef3dc13b-dfb3-4c7a-932d-af43fd8e0fa0', url: 'http://10.244.0.5:8418/alair/myTest.git']]) } } stage('通过maven构建项目') { steps { sh '/var/jenkins_home/apache-maven-3.9.11/bin/mvn clean package -DskipTests' } } stage('通过SonerQube做代码质量检测') { steps { sh '/var/jenkins_home/sonar-scanner/bin/sonar-scanner -Dsonar.sources=./ -Dsonar.projectname=${JOB_NAME} -Dsonar.projectKey=${JOB_NAME} -Dsonar.java.binaries=./target/ -Dsonar.token=squ_b5fe8ff602839ce1b3374e2716a1741e62777e79' } } stage('通过Docker制作自定义镜像') { steps { sh '''mv ./target/*.jar ./docker/ docker build -t ${JOB_NAME}:$tag ./docker/''' } } stage('将自定义镜像推送到Harbor') { steps { sh '''docker login -u ${harbor_user} -p ${harbor_passwd} ${harbor_address} docker tag ${JOB_NAME}:$tag ${harbor_address}/${harbor_repo}/${JOB_NAME}:$tag docker push ${harbor_address}/${harbor_repo}/${JOB_NAME}:$tag''' } } stage('通过Publish Over SSH通知目标服务器') { steps { sshPublisher(publishers: [sshPublisherDesc(configName: 'rancher-k8s-dev', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: "deploy.sh $harbor_address $harbor_repo $JOB_NAME $tag $container_port $host_port", execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: '', sourceFiles: '')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)]) } } } post { success { dingtalk { robot: 'Jenkins-DingDing', type: 'MARKDOWN', title: "success: ${JOB_NAME}" text: ["- 成功构建:${JOB_NAME}!\n- 版本: ${tag} \n- 持续时间:${currentBuild.durationString}"] } } failure { dingtalk { robot: 'Jenkins-DingDing', type: 'MARKDOWN', title: "success: ${JOB_NAME}" text: ["- 构建失败:${JOB_NAME}!\n- 版本: ${tag} \n- 持续时间:${currentBuild.durationString}"] } } } }