mirror of
https://pagure.io/fm-orchestrator.git
synced 2026-04-05 19:57:37 +08:00
Move pagure functions to c3i-library
This commit is contained in:
@@ -60,6 +60,8 @@ pipeline {
|
||||
// the return value of checkout() is unreliable.
|
||||
// Not working: env.MBS_GIT_COMMIT = scmVars.GIT_COMMIT
|
||||
env.MBS_GIT_COMMIT = sh(returnStdout: true, script: 'git rev-parse HEAD').trim()
|
||||
// Set for pagure function from c3i-library
|
||||
env.GIT_COMMIT = env.MBS_GIT_COMMIT
|
||||
echo "Build ${params.MBS_GIT_REF}, commit=${env.MBS_GIT_COMMIT}"
|
||||
|
||||
// Is the current branch a pull-request? If no, env.PR_NO will be empty.
|
||||
@@ -122,13 +124,11 @@ pipeline {
|
||||
// To enable HTML syntax in build description, go to `Jenkins/Global Security/Markup Formatter` and select 'Safe HTML'.
|
||||
def pagureLink = """<a href="${env.PR_URL}">${currentBuild.displayName}</a>"""
|
||||
try {
|
||||
def prInfo = withPagure {
|
||||
it.getPR(env.PR_NO)
|
||||
}
|
||||
def prInfo = pagure.getPR(env.PR_NO)
|
||||
pagureLink = """<a href="${env.PR_URL}">PR#${env.PR_NO}: ${escapeHtml(prInfo.title)}</a>"""
|
||||
// set PR status to Pending
|
||||
if (params.PAGURE_API_KEY_SECRET_NAME)
|
||||
setBuildStatusOnPagurePR(null, "Build #${env.BUILD_NUMBER} in progress (commit: ${env.MBS_GIT_COMMIT.take(8)})")
|
||||
paguer.setBuildStatusOnPR(null, "Build #${env.BUILD_NUMBER} in progress (commit: ${env.MBS_GIT_COMMIT.take(8)})")
|
||||
} catch (Exception e) {
|
||||
echo "Error using pagure API: ${e}"
|
||||
}
|
||||
@@ -138,7 +138,7 @@ pipeline {
|
||||
currentBuild.description = """<a href="${env.PAGURE_REPO_HOME}/c/${env.MBS_GIT_COMMIT}">${currentBuild.displayName}</a>"""
|
||||
if (params.PAGURE_API_KEY_SECRET_NAME) {
|
||||
try {
|
||||
flagCommit('pending', null, "Build #${env.BUILD_NUMBER} in progress (commit: ${env.MBS_GIT_COMMIT.take(8)})")
|
||||
pagure.flagCommit('pending', null, "Build #${env.BUILD_NUMBER} in progress (commit: ${env.MBS_GIT_COMMIT.take(8)})")
|
||||
echo "Updated commit ${env.MBS_GIT_COMMIT} status to PENDING."
|
||||
} catch (e) {
|
||||
echo "Error updating commit ${env.MBS_GIT_COMMIT} status to PENDING: ${e}"
|
||||
@@ -457,7 +457,7 @@ pipeline {
|
||||
// on pre-merge workflow success
|
||||
if (params.PAGURE_API_KEY_SECRET_NAME && env.PR_NO) {
|
||||
try {
|
||||
setBuildStatusOnPagurePR(100, "Build #${env.BUILD_NUMBER} successful (commit: ${env.MBS_GIT_COMMIT.take(8)})")
|
||||
pagure.setBuildStatusOnPR(100, "Build #${env.BUILD_NUMBER} successful (commit: ${env.MBS_GIT_COMMIT.take(8)})")
|
||||
echo "Updated PR #${env.PR_NO} status to PASS."
|
||||
} catch (e) {
|
||||
echo "Error updating PR #${env.PR_NO} status to PASS: ${e}"
|
||||
@@ -466,7 +466,7 @@ pipeline {
|
||||
// on post-merge workflow success
|
||||
if (params.PAGURE_API_KEY_SECRET_NAME && !env.PR_NO) {
|
||||
try {
|
||||
flagCommit('success', 100, "Build #${env.BUILD_NUMBER} successful (commit: ${env.MBS_GIT_COMMIT.take(8)})")
|
||||
pagure.flagCommit('success', 100, "Build #${env.BUILD_NUMBER} successful (commit: ${env.MBS_GIT_COMMIT.take(8)})")
|
||||
echo "Updated commit ${env.MBS_GIT_COMMIT} status to PASS."
|
||||
} catch (e) {
|
||||
echo "Error updating commit ${env.MBS_GIT_COMMIT} status to PASS: ${e}"
|
||||
@@ -480,17 +480,17 @@ pipeline {
|
||||
if (params.PAGURE_API_KEY_SECRET_NAME && env.PR_NO) {
|
||||
// updating Pagure PR flag
|
||||
try {
|
||||
setBuildStatusOnPagurePR(0, "Build #${env.BUILD_NUMBER} failed (commit: ${env.MBS_GIT_COMMIT.take(8)})")
|
||||
pagure.setBuildStatusOnPR(0, "Build #${env.BUILD_NUMBER} failed (commit: ${env.MBS_GIT_COMMIT.take(8)})")
|
||||
echo "Updated PR #${env.PR_NO} status to FAILURE."
|
||||
} catch (e) {
|
||||
echo "Error updating PR #${env.PR_NO} status to FAILURE: ${e}"
|
||||
}
|
||||
// making a comment
|
||||
try {
|
||||
commentOnPR("""
|
||||
pagure.commentOnPR("""
|
||||
Build #${env.BUILD_NUMBER} [failed](${env.BUILD_URL}) (commit: ${env.MBS_GIT_COMMIT}).
|
||||
Rebase or make new commits to rebuild.
|
||||
""".stripIndent())
|
||||
""".stripIndent(), env.PR_NO)
|
||||
echo "Comment made."
|
||||
} catch (e) {
|
||||
echo "Error making a comment on PR #${env.PR_NO}: ${e}"
|
||||
@@ -501,7 +501,7 @@ pipeline {
|
||||
// updating Pagure commit flag
|
||||
if (params.PAGURE_API_KEY_SECRET_NAME) {
|
||||
try {
|
||||
flagCommit('failure', 0, "Build #${env.BUILD_NUMBER} failed (commit: ${env.MBS_GIT_COMMIT.take(8)})")
|
||||
pagure.flagCommit('failure', 0, "Build #${env.BUILD_NUMBER} failed (commit: ${env.MBS_GIT_COMMIT.take(8)})")
|
||||
echo "Updated commit ${env.MBS_GIT_COMMIT} status to FAILURE."
|
||||
} catch (e) {
|
||||
echo "Error updating commit ${env.MBS_GIT_COMMIT} status to FAILURE: ${e}"
|
||||
@@ -524,38 +524,6 @@ def getPrNo(branch) {
|
||||
def prMatch = branch =~ /^(?:.+\/)?pull\/(\d+)\/head$/
|
||||
return prMatch ? prMatch[0][1] : ''
|
||||
}
|
||||
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)
|
||||
}
|
||||
def withPagureCreds(args=[:], cl) {
|
||||
def pagureClient = null
|
||||
withCredentials([string(credentialsId: "${env.PIPELINE_NAMESPACE}-${env.PAGURE_API_KEY_SECRET_NAME}", variable: 'TOKEN')]) {
|
||||
args.token = env.TOKEN
|
||||
pagureClient = withPagure(args, cl)
|
||||
}
|
||||
return pagureClient
|
||||
}
|
||||
def setBuildStatusOnPagurePR(percent, String comment) {
|
||||
withPagureCreds {
|
||||
it.updatePRStatus(username: 'c3i-jenkins', uid: "ci-pre-merge-${env.MBS_GIT_COMMIT.take(8)}",
|
||||
url: env.BUILD_URL, percent: percent, comment: comment, pr: env.PR_NO)
|
||||
}
|
||||
}
|
||||
def flagCommit(status, percent, comment) {
|
||||
withPagureCreds {
|
||||
it.flagCommit(username: 'c3i-jenkins', uid: "ci-post-merge-${env.MBS_GIT_COMMIT.take(8)}", status: status,
|
||||
url: env.BUILD_URL, percent: percent, comment: comment, commit: env.MBS_GIT_COMMIT)
|
||||
}
|
||||
}
|
||||
def commentOnPR(String comment) {
|
||||
withPagureCreds {
|
||||
it.commentOnPR(comment: comment, pr: env.PR_NO)
|
||||
}
|
||||
}
|
||||
def sendBuildStatusEmail(String status) {
|
||||
def recipient = params.MAIL_ADDRESS
|
||||
def subject = "Jenkins job ${env.JOB_NAME} #${env.BUILD_NUMBER} ${status}."
|
||||
|
||||
@@ -151,21 +151,19 @@ objects:
|
||||
// Need to prefix the rev with origin/ for pollSCM to work correctly
|
||||
def rev = "origin/${polled}"
|
||||
def scmVars = c3i.clone(repo: env.GIT_URL, branch: polled, rev: rev)
|
||||
env.MBS_GIT_COMMIT = scmVars.GIT_COMMIT
|
||||
env.GIT_COMMIT = scmVars.GIT_COMMIT
|
||||
// setting build display name
|
||||
def prefix = 'origin/'
|
||||
def branch = scmVars.GIT_BRANCH.startsWith(prefix) ? scmVars.GIT_BRANCH.substring(prefix.size())
|
||||
: scmVars.GIT_BRANCH // origin/pull/1234/head -> pull/1234/head, origin/master -> master
|
||||
env.MBS_GIT_BRANCH = branch
|
||||
echo "Build on branch=${env.MBS_GIT_BRANCH}, commit=${env.MBS_GIT_COMMIT}"
|
||||
echo "Build on branch=${env.MBS_GIT_BRANCH}, commit=${env.GIT_COMMIT}"
|
||||
if (env.PAGURE_POLLING_FOR_PR == 'false') {
|
||||
currentBuild.displayName = "${env.MBS_GIT_BRANCH}: ${env.MBS_GIT_COMMIT.substring(0, 7)}"
|
||||
currentBuild.description = """<a href="${env.PAGURE_REPO_HOME}/c/${env.MBS_GIT_COMMIT}">${currentBuild.displayName}</a>"""
|
||||
currentBuild.displayName = "${env.MBS_GIT_BRANCH}: ${env.GIT_COMMIT.substring(0, 7)}"
|
||||
currentBuild.description = """<a href="${env.PAGURE_REPO_HOME}/c/${env.GIT_COMMIT}">${currentBuild.displayName}</a>"""
|
||||
} else if (env.PAGURE_POLLING_FOR_PR == 'true' && branch ==~ /^pull\/[0-9]+\/head$/) {
|
||||
env.PR_NO = branch.split('/')[1]
|
||||
def prInfo = withPagure {
|
||||
it.getPR(env.PR_NO)
|
||||
}
|
||||
def prInfo = pagure.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'.
|
||||
@@ -225,10 +223,3 @@ 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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user