This is an automated email from the ASF dual-hosted git repository. eze pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/trafficserver-ci.git
The following commit(s) were added to refs/heads/main by this push:
new 58c614b Create github_polling.pipeline
58c614b is described below
commit 58c614b0430c73fa9fc36c9865a59c3651c33d1f
Author: Evan Zelkowitz <[email protected]>
AuthorDate: Wed Aug 23 10:34:49 2023 -0600
Create github_polling.pipeline
---
jenkins/github/github_polling.pipeline | 282 +++++++++++++++++++++++++++++++++
1 file changed, 282 insertions(+)
diff --git a/jenkins/github/github_polling.pipeline
b/jenkins/github/github_polling.pipeline
new file mode 100644
index 0000000..b82b6cf
--- /dev/null
+++ b/jenkins/github/github_polling.pipeline
@@ -0,0 +1,282 @@
+TOP_JOB_DESC = "Builds:\\n"
+
+String buildJob(String ghcontext, String jobName, String shard='') {
+ //setGitHubPullRequestStatus(context: ghcontext, message:
'Building', state: 'PENDING')
+
+ if (currentBuild.description == null) {
+ currentBuild.description = "Builds:<br>"
+ }
+ currentBuild.displayName = "PR: #${GITHUB_PR_NUMBER} - Build:
#${BUILD_NUMBER}"
+ https_github_url = GITHUB_REPO_GIT_URL.replace("git://", "https://")
+
+ def parms = [
+ string(name: 'SHA1', value: GITHUB_PR_HEAD_SHA),
+ string(name: 'GITHUB_URL', value: https_github_url),
+ string(name: 'GITHUB_PR_NUMBER', value: GITHUB_PR_NUMBER),
+ string(name: 'GITHUB_PR_TARGET_BRANCH', value:
GITHUB_PR_TARGET_BRANCH),
+ ]
+
+ def displayname = jobName
+ if (shard != '') {
+ parms << string(name: 'AUTEST_SHARD', value: shard)
+ displayname += ' ' + shard
+ }
+
+ def jobBuild = build job: jobName, propagate: false, parameters: parms
+ def jobURL = jobBuild.getAbsoluteUrl()
+ currentBuild.description += " ${displayname} - <a
href=${jobURL}>${jobURL}</a> <br>"
+
+ def jobResult = jobBuild.getResult()
+
+ echo "Build of '${displayname}' returned result: ${jobResult}"
+
+ if (jobResult == 'SUCCESS') {
+ //setGitHubPullRequestStatus(context: ghcontext, message:
"Success - ${jobURL}", state: jobResult)
+ } else {
+ //setGitHubPullRequestStatus(context: ghcontext, message:
"Failure - ${jobURL}", state: jobResult)
+ }
+ return jobResult
+}
+
+pipeline {
+ agent none
+
+ stages {
+ stage('Quick Checks') {
+ parallel {
+ stage('Clang-Format') {
+ when {
+ anyOf {
+ environment name:
'GITHUB_PR_COMMENT_BODY_MATCH', value: ''
+ expression {
GITHUB_PR_COMMENT_BODY_MATCH ==~ /.*clang-format.*/ }
+ }
+ }
+ steps {
+ script {
+ echo
GITHUB_PR_COMMENT_BODY_MATCH
+ result =
buildJob('Clang-Format', 'Github_Builds/clang-format')
+ if (result ==
'FAILURE') {
+
error('Clang-Format failed')
+ }
+ }
+ }
+ }
+ stage('RAT') {
+ when {
+ anyOf {
+ environment name:
'GITHUB_PR_COMMENT_BODY_MATCH', value: ''
+ expression {
GITHUB_PR_COMMENT_BODY_MATCH ==~ /.*rat.*/ }
+ }
+ }
+ steps {
+ script {
+ result =
buildJob('RAT', 'Github_Builds/rat')
+ if (result ==
'FAILURE') {
+ error('RAT
failed')
+ }
+ }
+ }
+ }
+ stage('Docs') {
+ when {
+ anyOf {
+ environment name:
'GITHUB_PR_COMMENT_BODY_MATCH', value: ''
+ expression {
GITHUB_PR_COMMENT_BODY_MATCH ==~ /.*docs.*/ }
+ }
+ }
+ steps {
+ script {
+ result =
buildJob('Docs', 'Github_Builds/docs')
+ if (result ==
'FAILURE') {
+ error('Docs
failed')
+ }
+ }
+ }
+ }
+ }
+ }
+
+ stage('Build and Test') {
+ parallel {
+ stage('Ubuntu Build') {
+ when {
+ anyOf {
+ environment name:
'GITHUB_PR_COMMENT_BODY_MATCH', value: ''
+ expression {
GITHUB_PR_COMMENT_BODY_MATCH ==~ /.*ubuntu.*/ }
+ }
+ }
+ steps {
+ script {
+ result =
buildJob('Ubuntu', 'Github_Builds/ubuntu')
+ if (result ==
'FAILURE') {
+ error('Ubuntu
build failed')
+ }
+ }
+ }
+ }
+ stage('Fedora Build') {
+ when {
+ anyOf {
+ environment name:
'GITHUB_PR_COMMENT_BODY_MATCH', value: ''
+ expression {
GITHUB_PR_COMMENT_BODY_MATCH ==~ /.*fedora.*/ }
+ }
+ }
+ steps {
+ script {
+ result =
buildJob('Fedora', 'Github_Builds/fedora')
+ if (result ==
'FAILURE') {
+ error('Fedora
build failed')
+ }
+ }
+ }
+ }
+ stage('Debian Build') {
+ when {
+ anyOf {
+ environment name:
'GITHUB_PR_COMMENT_BODY_MATCH', value: ''
+ expression {
GITHUB_PR_COMMENT_BODY_MATCH ==~ /.*debian.*/ }
+ }
+ }
+ steps {
+ script {
+ result =
buildJob('Debian', 'Github_Builds/debian')
+ if (result ==
'FAILURE') {
+ error('Debian
build failed')
+ }
+ result = 'SUCCESS'
+ }
+ }
+ }
+
+ stage('Rocky Build') {
+ when {
+ anyOf {
+ environment name:
'GITHUB_PR_COMMENT_BODY_MATCH', value: ''
+ expression {
GITHUB_PR_COMMENT_BODY_MATCH ==~ /.*rocky.*/ }
+ }
+ }
+ steps {
+ script {
+ result =
buildJob('Rocky', 'Github_Builds/rocky')
+ if (result ==
'FAILURE') {
+ error('Rocky
build failed')
+ }
+ }
+ }
+ }
+
+ stage('CentOS Build') {
+ when {
+ anyOf {
+ environment name:
'GITHUB_PR_COMMENT_BODY_MATCH', value: ''
+ expression {
GITHUB_PR_COMMENT_BODY_MATCH ==~ /.*centos.*/ }
+ }
+ }
+ steps {
+ script {
+ result =
buildJob('CentOS', 'Github_Builds/centos')
+ if (result ==
'FAILURE') {
+ error('CentOS
build failed')
+ }
+ }
+ }
+ }
+
+ stage('CMake Build') {
+ when {
+ anyOf {
+ environment name:
'GITHUB_PR_COMMENT_BODY_MATCH', value: ''
+ expression {
GITHUB_PR_COMMENT_BODY_MATCH ==~ /.*cmake.*/ }
+ }
+ }
+ steps {
+ script {
+ result =
buildJob('CMake', 'Github_Builds/cmake')
+ if (result ==
'FAILURE') {
+ error('CMake
build failed')
+ }
+ }
+ }
+ }
+
+ stage('OSX Build') {
+ when {
+ anyOf {
+ environment name:
'GITHUB_PR_COMMENT_BODY_MATCH', value: ''
+ expression {
GITHUB_PR_COMMENT_BODY_MATCH ==~ /.*osx.*/ }
+ }
+ }
+ steps {
+ script {
+ result =
buildJob('OSX', 'Github_Builds/osx')
+ if (result ==
'FAILURE') {
+ error('OSX
build failed')
+ }
+ }
+ }
+ }
+
+ stage('FreeBSD Build') {
+ when {
+ anyOf {
+ environment name:
'GITHUB_PR_COMMENT_BODY_MATCH', value: ''
+ expression {
GITHUB_PR_COMMENT_BODY_MATCH ==~ /.*freebsd.*/ }
+ }
+ }
+ steps {
+ script {
+ result =
buildJob('FreeBSD', 'Github_Builds/freebsd')
+ if (result ==
'FAILURE') {
+ error('FreeBSD
build failed')
+ }
+ }
+ }
+ }
+
+ stage('Clang-Analyzer') {
+ when {
+ anyOf {
+ environment name:
'GITHUB_PR_COMMENT_BODY_MATCH', value: ''
+ expression {
GITHUB_PR_COMMENT_BODY_MATCH ==~ /.*clang-analyzer.*/ }
+ }
+ }
+ steps {
+ script {
+ result =
buildJob('Clang-Analyzer', 'Github_Builds/clang-analyzer')
+ if (result ==
'FAILURE') {
+
error('Clang-Analyzer failed')
+ }
+ }
+ }
+ }
+ stage('AuTest') {
+ when {
+ anyOf {
+ environment name:
'GITHUB_PR_COMMENT_BODY_MATCH', value: ''
+ expression {
GITHUB_PR_COMMENT_BODY_MATCH ==~ /.*autest.*/ }
+ }
+ }
+ steps {
+ script {
+ String jobpath =
'Github_Builds/autest'
+ if (env.AUTEST_SHARDS) {
+ def nshards =
env.AUTEST_SHARDS as int
+ def jobs = [:]
+ for (index = 0
; index < nshards ; index++) {
+ String
shard = index + "of" + env.AUTEST_SHARDS
+
jobs[shard] = { buildJob('AuTest ' + shard, jobpath, shard) }
+ }
+ parallel jobs
+ } else {
+ result =
buildJob('AuTest', jobpath)
+ if (result ==
'FAILURE') {
+
error('AuTest failed')
+ }
+ }
+ }
+ }
+ }
+ } // parallel for "Build and Test"
+ } // End Stage("Build and Test")
+ } // End Stages
+}
