diff --git a/openshift/integration/koji/pipelines/templates/mbs-build.Jenkinsfile b/openshift/integration/koji/pipelines/templates/mbs-build.Jenkinsfile
index 010ae8c1..de25fd41 100644
--- a/openshift/integration/koji/pipelines/templates/mbs-build.Jenkinsfile
+++ b/openshift/integration/koji/pipelines/templates/mbs-build.Jenkinsfile
@@ -56,10 +56,23 @@ pipeline {
steps {
script {
// check out specified branch/commit
- checkout([$class: 'GitSCM',
- branches: [[name: params.MBS_GIT_REF]],
- userRemoteConfigs: [[url: params.MBS_GIT_REPO, refspec: '+refs/heads/*:refs/remotes/origin/* +refs/pull/*/head:refs/remotes/origin/pull/*/head']],
- ])
+ def srcRef = env.MBS_GIT_REF.startsWith('pull/') ? env.MBS_GIT_REF : "heads/${env.MBS_GIT_REF}"
+ retry(5) {
+ checkout([$class: 'GitSCM',
+ branches: [[name: params.MBS_GIT_REF]],
+ userRemoteConfigs: [
+ [
+ name: 'origin',
+ url: params.MBS_GIT_REPO,
+ refspec: "+refs/${srcRef}:refs/remotes/origin/${env.MBS_GIT_REF}",
+ ],
+ ],
+ extensions: [
+ [$class: 'CleanBeforeCheckout'],
+ [$class: 'CloneOption', noTags: true, shallow: true, depth: 2, honorRefspec: true],
+ ],
+ ])
+ }
// get current commit ID
// FIXME: Due to a bug discribed in https://issues.jenkins-ci.org/browse/JENKINS-45489,
diff --git a/openshift/integration/koji/pipelines/templates/mbs-integration-test.Jenkinsfile b/openshift/integration/koji/pipelines/templates/mbs-integration-test.Jenkinsfile
index 27d8f2c4..4728d8b9 100644
--- a/openshift/integration/koji/pipelines/templates/mbs-integration-test.Jenkinsfile
+++ b/openshift/integration/koji/pipelines/templates/mbs-integration-test.Jenkinsfile
@@ -55,11 +55,26 @@ pipeline {
// Don't set ENVIRONMENT_LABEL in the environment block! Otherwise you will get 2 different UUIDs.
env.ENVIRONMENT_LABEL = "test-${env.TEST_ID}"
- // check out specified branch/commit
- checkout([$class: 'GitSCM',
- branches: [[name: params.MBS_GIT_REF]],
- userRemoteConfigs: [[url: params.MBS_GIT_REPO, refspec: '+refs/heads/*:refs/remotes/origin/* +refs/pull/*/head:refs/remotes/origin/pull/*/head']],
- ])
+ def srcRef = params.MBS_GIT_REF.startsWith('pull/') ? params.MBS_GIT_REF : 'heads/master'
+ def localRef = params.MBS_GIT_REF.startsWith('pull/') ? params.MBS_GIT_REF : 'master'
+ def cloneDepth = params.MBS_GIT_REF.startsWith('pull/') ? 2 : 10
+ retry(5) {
+ // check out specified branch/commit
+ checkout([$class: 'GitSCM',
+ branches: [[name: params.MBS_GIT_REF]],
+ userRemoteConfigs: [
+ [
+ name: 'origin',
+ url: params.MBS_GIT_REPO,
+ refspec: "+refs/${srcRef}:refs/remotes/origin/${localRef}",
+ ],
+ ],
+ extensions: [
+ [$class: 'CleanBeforeCheckout'],
+ [$class: 'CloneOption', noTags: true, shallow: true, depth: cloneDepth, honorRefspec: true],
+ ],
+ ])
+ }
// get current commit ID
// FIXME: Due to a bug discribed in https://issues.jenkins-ci.org/browse/JENKINS-45489,
diff --git a/openshift/integration/koji/pipelines/templates/mbs-polling-pagure.yaml b/openshift/integration/koji/pipelines/templates/mbs-polling-pagure.yaml
index 9e5b377f..cd8d8177 100644
--- a/openshift/integration/koji/pipelines/templates/mbs-polling-pagure.yaml
+++ b/openshift/integration/koji/pipelines/templates/mbs-polling-pagure.yaml
@@ -90,6 +90,8 @@ objects:
jenkinsPipelineStrategy:
jenkinsfile: |-
// Don't use external Jenkinsfile here, or Jenkins will also poll on that repo and branch
+ library identifier: 'c3i@master', changelog: false,
+ retriever: modernSCM([$class: 'GitSCMSource', remote: 'https://pagure.io/c3i-library.git'])
pipeline {
agent {
kubernetes {
@@ -131,10 +133,12 @@ objects:
environment {
PIPELINE_NAMESPACE = readFile('/run/secrets/kubernetes.io/serviceaccount/namespace').trim()
PAGURE_URL = "${PAGURE_URL}"
+ PAGURE_API = "${env.PAGURE_URL}/api/0"
+ PAGURE_REPO_NAME = "${PAGURE_REPO_NAME}"
PAGURE_REPO_IS_FORK = "${PAGURE_REPO_IS_FORK}"
PAGURE_POLLING_FOR_PR = "${PAGURE_POLLING_FOR_PR}"
- PAGURE_REPO_HOME = "${env.PAGURE_URL}${env.PAGURE_REPO_IS_FORK == 'true' ? '/fork' : ''}/${PAGURE_REPO_NAME}"
- GIT_URL = "${env.PAGURE_URL}/${env.PAGURE_REPO_IS_FORK == 'true' ? 'forks/' : ''}${PAGURE_REPO_NAME}.git"
+ PAGURE_REPO_HOME = "${env.PAGURE_URL}${env.PAGURE_REPO_IS_FORK == 'true' ? '/fork' : ''}/${env.PAGURE_REPO_NAME}"
+ GIT_URL = "${env.PAGURE_URL}/${env.PAGURE_REPO_IS_FORK == 'true' ? 'forks/' : ''}${env.PAGURE_REPO_NAME}.git"
PREMERGE_JOB_NAME = "${PREMERGE_JOB_NAME}"
POSTMERGE_JOB_NAME = "${POSTMERGE_JOB_NAME}"
}
@@ -146,17 +150,24 @@ objects:
script {
// checking out the polled branch
def polledBranch = env.PAGURE_POLLING_FOR_PR == 'true' ? 'origin/pull/*/head' : "origin/${PAGURE_POLLED_BRANCH}"
- def scmVars = checkout([$class: 'GitSCM',
- branches: [[name: polledBranch]],
- userRemoteConfigs: [
- [
- name: 'origin',
- url: env.GIT_URL,
- refspec: '+refs/heads/*:refs/remotes/origin/* +refs/pull/*/head:refs/remotes/origin/pull/*/head',
+ def srcRef = env.PAGURE_POLLING_FOR_PR == 'true' ? 'pull/*/head' : "heads/${PAGURE_POLLED_BRANCH}"
+ def scmVars
+ retry(5) {
+ scmVars = checkout([$class: 'GitSCM',
+ branches: [[name: polledBranch]],
+ userRemoteConfigs: [
+ [
+ name: 'origin',
+ url: env.GIT_URL,
+ refspec: "+refs/${srcRef}:refs/remotes/${polledBranch}",
+ ],
],
- ],
- extensions: [[$class: 'CleanBeforeCheckout']],
- ])
+ extensions: [
+ [$class: 'CleanBeforeCheckout'],
+ [$class: 'CloneOption', noTags: true, shallow: true, depth: 2, honorRefspec: true],
+ ],
+ ])
+ }
env.MBS_GIT_COMMIT = scmVars.GIT_COMMIT
// setting build display name
def prefix = 'origin/'
@@ -169,12 +180,20 @@ objects:
currentBuild.description = """${currentBuild.displayName}"""
} else if (env.PAGURE_POLLING_FOR_PR == 'true' && branch ==~ /^pull\/[0-9]+\/head$/) {
env.PR_NO = branch.split('/')[1]
- env.PR_URL = "${env.PAGURE_REPO_HOME}/pull-request/${env.PR_NO}"
- // To HTML syntax in build description, go to `Jenkins/Global Security/Markup Formatter` and select 'Safe HTML'.
- def pagureLink = """PR#${env.PR_NO}"""
- echo "Building PR #${env.PR_NO}: ${env.PR_URL}"
- currentBuild.displayName = "PR#${env.PR_NO}"
- currentBuild.description = pagureLink
+ def prInfo = withPagure {
+ it.getPR(env.PR_NO)
+ }
+ if (prInfo.status == 'Open') {
+ env.PR_URL = "${env.PAGURE_REPO_HOME}/pull-request/${env.PR_NO}"
+ // To HTML syntax in build description, go to `Jenkins/Global Security/Markup Formatter` and select 'Safe HTML'.
+ def pagureLink = """PR#${env.PR_NO}"""
+ echo "Building PR #${env.PR_NO}: ${env.PR_URL}"
+ currentBuild.displayName = "PR#${env.PR_NO}"
+ currentBuild.description = pagureLink
+ } else {
+ echo "Skipping PR#${env.PR_NO} because it is ${prInfo.status}"
+ env.SKIP = 'true'
+ }
} else { // This shouldn't happen.
error("Build is aborted due to unexpected polling trigger actions.")
}
@@ -188,17 +207,22 @@ objects:
}
}
steps {
- checkout([$class: 'GitSCM',
- branches: [[name: env.MBS_GIT_BRANCH]],
- userRemoteConfigs: [
- [
- name: 'origin',
- url: env.GIT_URL,
- refspec: '+refs/heads/*:refs/remotes/origin/* +refs/pull/*/head:refs/remotes/origin/pull/*/head',
+ retry(5) {
+ checkout([$class: 'GitSCM',
+ branches: [[name: env.MBS_GIT_BRANCH]],
+ userRemoteConfigs: [
+ [
+ name: 'origin',
+ url: env.GIT_URL,
+ refspec: "+refs/heads/${env.MBS_GIT_BRANCH}:refs/remotes/origin/${env.MBS_GIT_BRANCH}",
+ ],
],
- ],
- extensions: [[$class: 'CleanBeforeCheckout']],
- ])
+ extensions: [
+ [$class: 'CleanBeforeCheckout'],
+ [$class: 'CloneOption', noTags: true, shallow: true, depth: 2, honorRefspec: true],
+ ],
+ ])
+ }
script {
dir('openshift/integration/koji/pipelines') {
sh '''
@@ -209,6 +233,11 @@ objects:
}
}
stage('Build') {
+ when {
+ not {
+ environment name: 'SKIP', value: 'true'
+ }
+ }
steps {
script {
openshift.withCluster() {
@@ -231,3 +260,10 @@ objects:
}
}
}
+ def withPagure(args=[:], cl) {
+ args.apiUrl = env.PAGURE_API
+ args.repo = env.PAGURE_REPO_NAME
+ args.isFork = env.PAGURE_REPO_IS_FORK == 'true'
+ def pagureClient = pagure.client(args)
+ return cl(pagureClient)
+ }