代码拉取完成,页面将自动刷新
import groovy.json.JsonSlurper
pipeline {
agent {
node {
label 'ubuntu'
}
}
options {
buildDiscarder(logRotator(daysToKeepStr: '14', artifactNumToKeepStr: '10'))
}
environment {
JAVA_HOME = "${tool 'jdk_1.8_latest'}"
}
tools {
maven 'maven_3_latest'
jdk 'jdk_1.8_latest'
}
triggers {
cron '''TZ=Asia/Shanghai
H 2,14 * * *'''
pollSCM '''TZ=Asia/Shanghai
H H/2 * * *'''
}
stages {
stage('Clone') {
steps {
checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'CloneOption', noTags: true, reference: '', shallow: true]], gitTool: 'Default', submoduleCfg: [], userRemoteConfigs: [[url: 'https://github.com/apache/dubbo.git']]])
}
}
stage('Duplicate deploy check') {
steps {
script {
def deployedCommitId = sh(returnStdout: true, script: "curl --silent https://ci-builds.apache.org/job/Dubbo/job/${env.JOB_BASE_NAME}/lastSuccessfulBuild/artifact/DEPLOY_COMMIT_ID || true").trim()
env.DEPLOYED_COMMIT_ID = deployedCommitId
def commitId = sh(returnStdout: true, script: 'git rev-parse HEAD').trim()
env.COMMIT_ID = commitId
if (commitId == deployedCommitId) {
env.STATUS_CHECK = "false"
println "Latest deployed commit id is $deployedCommitId, Skip deployment this time"
} else {
env.STATUS_CHECK = "true"
println "Current commit id hasn't been deployed, continue"
}
}
}
}
stage('Commit status check') {
when {
expression {
return env.STATUS_CHECK == "true";
}
}
steps {
script {
def commitId = env.COMMIT_ID
println "Current commit id: $commitId"
def commitStatusJson = sh(script: "curl --silent https://api.github.com/repos/apache/dubbo/actions/runs", returnStdout: true).trim()
def jsonSlurper = new JsonSlurper()
def jsonObject = jsonSlurper.parseText(commitStatusJson)
def runs = jsonObject.workflow_runs
for (def run in runs) {
if (run.workflow_id == 5030221 && run.head_sha == commitId &&
run.event == "push" && run.head_branch == "master") {
println "Find github action for current commit: $run"
if (run.status == "completed" && run.conclusion == "success") {
env.STATUS_CHECK = "true"
println "CI status is success for commitId:$commitId, continue to deploy"
} else {
env.STATUS_CHECK = "false"
println "CI status is not success for commitId:$commitId"
}
break;
}
}
}
}
}
stage('Snapshot version check') {
when {
expression {
return env.STATUS_CHECK == "true";
}
}
steps {
sh 'env'
sh 'java -version'
sh './mvnw clean install -pl "dubbo-dependencies-bom" && ./mvnw clean install -DskipTests=true && ./mvnw clean validate -Psnapshot-ci-deploy -pl "dubbo-all"'
}
}
stage('Deploy snapshot') {
when {
expression {
return env.STATUS_CHECK == "true";
}
}
steps {
timeout(40) {
sh './mvnw --version'
sh './mvnw clean package deploy -pl dubbo-dependencies-bom && ./mvnw clean source:jar javadoc:jar package deploy -DskipTests=true'
}
}
}
stage('Save deployed commit id') {
steps {
script {
if (env.STATUS_CHECK != "true") {
println "Not pass status check"
env.COMMIT_ID = env.DEPLOYED_COMMIT_ID
}
}
writeFile file: 'DEPLOY_COMMIT_ID', text: "${env.COMMIT_ID}"
archiveArtifacts 'DEPLOY_COMMIT_ID'
}
}
}
post {
failure {
mail bcc: '', body: '''Project: ${env.JOB_NAME}
Build Number: ${env.BUILD_NUMBER}
URL: ${env.BUILD_URL}''', cc: '', from: '', replyTo: '', subject: 'Apache Dubbo snapshot deployment fail', to: 'dev@dubbo.apache.org'
}
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。