You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by bn...@apache.org on 2022/08/24 12:17:21 UTC
[trafficserver-ci] branch main updated: add freebsd and osx to build pipeline
This is an automated email from the ASF dual-hosted git repository.
bnolsen 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 f7229f6 add freebsd and osx to build pipeline
new 57c0f0b Merge pull request #107 from traeak/branch_osx_freebsd
f7229f6 is described below
commit f7229f6c93d955f3a5e7008db237a55c359bf254
Author: Brian Olsen <bn...@gmail.com>
AuthorDate: Tue Aug 23 14:06:01 2022 +0000
add freebsd and osx to build pipeline
---
jenkins/branch/branch_build.pipeline | 109 +++++++++++++++++++++++++----------
jenkins/branch/freebsd.pipeline | 43 ++++++++++++++
jenkins/branch/osx.pipeline | 49 ++++++++++++++++
3 files changed, 170 insertions(+), 31 deletions(-)
diff --git a/jenkins/branch/branch_build.pipeline b/jenkins/branch/branch_build.pipeline
index 62cd3b2..d02c815 100644
--- a/jenkins/branch/branch_build.pipeline
+++ b/jenkins/branch/branch_build.pipeline
@@ -1,28 +1,39 @@
DUMMY = false
+def isBuildable(String jobpath) {
+ return Jenkins.instance.getItemByFullName(jobpath) &&
+ Jenkins.instance.getItemByFullName(jobpath).isBuildable()
+}
+
def doParallelBuilds() {
- def jobnames = []
+ def jobpaths = []
+
+ def osprefix = env.JOB_DIR + '/os-'
// Detect buildable os- jobs in branch folder
+ // This comes back with folder/name
+ // buildJob wants /folder/name
Jenkins.instance.getAllItems(Job.class).each {
if (it.class == org.jenkinsci.plugins.workflow.job.WorkflowJob && it.isBuildable()) {
- def jobname = it.fullName
- if (0 == jobname.indexOf(env.JOB_DIR + '/os-')) {
- jobnames.add(jobname)
+ def jobpath = it.fullName
+ if (jobpath.startsWith(osprefix)) {
+ jobpaths.add(jobpath)
}
}
}
def builders = [:]
+ def prefix = env.JOB_DIR + '/'
- for (jobname in jobnames) {
- def name = jobname
+ for (jobpath in jobpaths) {
+ def name = jobpath.substring(prefix.size())
+ echo "Adding ${jobpath} as ${name}"
builders[name] = {
stage(name) {
- echo name
+ echo jobpath
script {
- result = buildJob(name, name)
+ result = buildJob(jobpath, name)
if (result == 'FAILURE') {
error("${name} build failed")
}
@@ -31,13 +42,36 @@ def doParallelBuilds() {
}
}
+ String jobstr = "osx freebsd"
+ def extrajobs = jobstr.split(" ")
+
+ for (job in extrajobs) {
+ def name = job
+ def jobpath = prefix + name
+ echo "Adding ${jobpath} as ${name}"
+ if (isBuildable(jobpath)) {
+ builders[name] = {
+ stage(name) {
+ echo jobpath
+ script {
+ result = buildJob(jobpath, name)
+ if (result == 'FAILURE') {
+ error("${name} build failed")
+ }
+ }
+ }
+ }
+ }
+ }
+
parallel builders
}
-String buildJob(String ghcontext, String jobName) {
- echo "Build of: " + jobName
- if (DUMMY) { jobName = "Branch_Builds/dummy" }
- def jobBuild = build(job: jobName, propagate: false,
+// jobpath is relative or absolute path to job, jobname is display name
+String buildJob(String jobpath, String jobname) {
+ echo "Build of: ${jobname} as ${jobpath}"
+ if (DUMMY) { jobpath = "Branch_Builds/dummy" }
+ def jobBuild = build(job: '/' + jobpath, propagate: false,
parameters: [
string(name: 'GITHUB_URL', value: GITHUB_URL),
string(name: 'GITHUB_BRANCH', value: GITHUB_BRANCH),
@@ -46,15 +80,15 @@ String buildJob(String ghcontext, String jobName) {
]
)
def result = jobBuild.getResult()
- echo "Build of " + jobName + " returned result: " + result
- if ('FAILURE' == result) { error("${jobName} failed") }
+ echo "Build of " + jobname + " returned result: " + result
+ if ('FAILURE' == result) { error("${jobname} failed") }
return result
}
-String autestJob(String ghcontext, String jobName, String shard) {
- echo "Autest Build of: " + jobName + " " + shard
- if (DUMMY) { jobName = "Branch_Builds/dummy" }
- def jobBuild = build(job: jobName, propagate: false,
+String autestJob(String jobpath, String jobname, String shard) {
+ echo "Autest Build of: " + jobname + " " + shard
+ if (DUMMY) { jobpath = "Branch_Builds/dummy" }
+ def jobBuild = build(job: '/' + jobpath, propagate: false,
parameters: [
string(name: 'GITHUB_URL', value: GITHUB_URL),
string(name: 'GITHUB_BRANCH', value: GITHUB_BRANCH),
@@ -64,8 +98,8 @@ String autestJob(String ghcontext, String jobName, String shard) {
]
)
def result = jobBuild.getResult()
- echo "Build of " + jobName + " returned result: " + result
- if ('FAILURE' == result) { error("${jobName} failed") }
+ echo "Build of " + jobname + " returned result: " + result
+ if ('FAILURE' == result) { error("${jobname} failed") }
return result
}
@@ -119,28 +153,32 @@ pipeline {
stage('In Tree') {
steps {
script {
- buildJob('in_tree', env.JOB_DIR + '/in_tree')
+ echo "in_tree"
+ buildJob(env.JOB_DIR + '/in_tree', 'in_tree')
}
}
}
stage('Out Of Tree') {
steps {
script {
- buildJob('out_of_tree', env.JOB_DIR + '/out_of_tree')
+ echo "out_of_tree"
+ buildJob(env.JOB_DIR + '/out_of_tree', 'out_of_tree')
}
}
}
stage('RAT') {
steps {
script {
- buildJob('rat', env.JOB_DIR + '/rat')
+ echo "rat"
+ buildJob(env.JOB_DIR + '/rat', 'rat')
}
}
}
stage('clang format') {
steps {
script {
- buildJob('clang_format', env.JOB_DIR + '/clang_format')
+ echo "clang_format"
+ buildJob(env.JOB_DIR + '/clang_format', 'clang_format')
}
}
}
@@ -150,8 +188,8 @@ pipeline {
stage('Snapshot') {
steps {
script {
- //buildJob('snapshot', env.JOB_DIR + '/snapshot')
echo "Skipping snapshot"
+ //buildJob(env.JOB_DIR + '/snapshot', 'snapshot')
}
}
}
@@ -171,24 +209,27 @@ pipeline {
stage('clang analyzer') {
steps {
script {
- buildJob('clang-analyzer', env.JOB_DIR + '/clang_analyzer')
+ echo "clang_analyzer"
+ buildJob(env.JOB_DIR + '/clang_analyzer', 'clang_analyzer')
}
}
}
stage('autests') {
steps {
script {
+ echo "autests"
+ String jobpath = env.JOB_DIR + '/autest'
if (env.AUTEST_SHARDS) {
def nshards = env.AUTEST_SHARDS as int
def jobs = [:]
for (ind = 0 ; ind < nshards ; ind++) {
index = ind
String shard = index + "of" + env.AUTEST_SHARDS
- jobs[shard] = { autestJob('autest', env.JOB_DIR + '/autest', shard) }
+ jobs[shard] = { autestJob(jobpath, 'autest', shard) }
}
parallel jobs
} else {
- buildJob('autest', env.JOB_DIR + '/autest')
+ buildJob(jobpath, 'autest')
}
}
}
@@ -196,21 +237,27 @@ pipeline {
stage('docs') {
steps {
script {
- buildJob('docs', env.JOB_DIR + '/docs')
+ echo "docs"
+ buildJob(env.JOB_DIR + '/docs', 'docs')
}
}
}
stage('cache_tests') {
steps {
script {
- buildJob('cache-tests', env.JOB_DIR + '/cache-tests')
+ echo "cache_tests"
+ buildJob(env.JOB_DIR + '/cache-tests', 'cache_tests')
}
}
}
stage('coverage') {
steps {
script {
- buildJob('coverage', env.JOB_DIR + '/coverage')
+ echo "coverage"
+ String jobpath = env.JOB_DIR + '/coverage'
+ if (isBuildable(jobpath)) {
+ buildJob(jobpath, 'coverage')
+ }
}
}
}
diff --git a/jenkins/branch/freebsd.pipeline b/jenkins/branch/freebsd.pipeline
new file mode 100644
index 0000000..f2f943c
--- /dev/null
+++ b/jenkins/branch/freebsd.pipeline
@@ -0,0 +1,43 @@
+pipeline {
+ agent {label 'freebsd'}
+ stages {
+ stage('Clone') {
+ steps {
+ dir('src') {
+ script {
+ String branch = env.SHA1
+ if (! branch) {
+ branch = '*/' + env.GITHUB_BRANCH
+ }
+
+ checkout([$class: 'GitSCM',
+ branches: [[name: branch]],
+ userRemoteConfigs: [[url: env.GITHUB_URL]],
+ extensions: [[$class: 'CloneOption', timeout: 10]],
+ ])
+ }
+ }
+ echo 'Finished Clone'
+ }
+ }
+ stage('Build') {
+ steps {
+ echo 'Starting build'
+ dir('src') {
+ sh '''
+ head -1 README
+ autoreconf -fiv
+ ./configure --enable-experimental-plugins
+ gmake -j3
+ '''
+ }
+ }
+ }
+ }
+
+ post {
+ cleanup {
+ cleanWs()
+ }
+ }
+}
diff --git a/jenkins/branch/osx.pipeline b/jenkins/branch/osx.pipeline
new file mode 100644
index 0000000..11b269a
--- /dev/null
+++ b/jenkins/branch/osx.pipeline
@@ -0,0 +1,49 @@
+pipeline {
+ agent {label 'osx'}
+ stages {
+ stage('Clone') {
+ steps {
+ dir('src') {
+ script {
+ String branch = env.SHA1
+ if (! branch) {
+ branch = '*/' + env.GITHUB_BRANCH
+ }
+
+ checkout([$class: 'GitSCM',
+ branches: [[name: branch]],
+ userRemoteConfigs: [[url: env.GITHUB_URL]],
+ extensions: [[$class: 'CloneOption', timeout: 10]],
+ ])
+ }
+ }
+ echo 'Finished Cloning'
+ }
+ }
+ stage('Build') {
+ steps {
+ echo 'Starting build'
+ dir('src') {
+ sh '''
+ head -1 README
+ autoreconf -fiv
+ CC="clang" \
+ CXX="clang++" \
+ CXXFLAGS="-Qunused-arguments" \
+ WITH_LIBCPLUSPLUS="yes" \
+ ./configure \
+ --enable-experimental-plugins \
+ --with-openssl=/usr/local/opt/openssl
+ make -j3
+ '''
+ }
+ }
+ }
+ }
+
+ post {
+ cleanup {
+ cleanWs()
+ }
+ }
+}