blob: cdfba5e574f43f6a07ac5c2b4bdb9548139458a2 [file] [log] [blame]
#!groovy
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
pipeline {
agent {
// https://cwiki.apache.org/confluence/display/INFRA/ci-builds.apache.org
label 'ubuntu'
}
triggers {
cron('H 2 * * *')
}
options {
disableConcurrentBuilds()
}
parameters {
string(name: 'VERSION', defaultValue: 'latest', description: 'The version to generate documentation for, e.g. \'2.2.1\'. This will also be the target location on nightlies.a.o (default = latest)')
booleanParam(name: 'RELEASE', defaultValue: false, description: 'Check this value if release documentation needs to be generated')
}
stages {
stage('Checkout sources') {
steps {
script {
// Set the correct GIT_REF before checkout
def version = params.VERSION
if (params.RELEASE == true) {
env.GIT_REF = "refs/tags/rel/celix-${version}";
} else {
if (version.equals("latest")) {
env.GIT_REF = "refs/heads/master";
} else {
env.GIT_REF = "refs/heads/${version}";
}
}
checkout scm: [$class: 'GitSCM',
userRemoteConfigs: [[url: 'https://github.com/apache/celix.git' ]],
branches: [[name: "${env.GIT_REF}" ]]
],
poll: false
}
}
}
stage('Generate documentation') {
agent {
docker {
image 'ghcr.io/rlenferink/doxygen:1.0.0'
reuseNode true
}
}
steps {
script {
// Set the Doxygen output directory
env.DOXYGEN_OUTPUT_DIR = "${WORKSPACE}/doxygen"
// Set the PROJECT_NUMBER to the generated version
sh "sed -i -E 's#^(PROJECT_NUMBER[[:blank:]]*=[[:blank:]]*).*#\\1'\"${params.VERSION}\"'#' Doxyfile"
// Generate Doxygen documentation
sh 'doxygen Doxyfile'
}
}
}
stage('Upload to Nightlies') {
steps {
sshPublisher(publishers: [
sshPublisherDesc(
configName: 'Nightlies',
transfers: [
sshTransfer(
remoteDirectory: "celix/${params.VERSION}",
cleanRemote: true, // Delete the existing docs before adding the latest ones
sourceFiles: 'doxygen/html/**/*',
removePrefix: 'doxygen/html'
)
],
verbose: true
)
])
}
}
}
post {
always {
echo "Cleaning workspace ..."
deleteDir()
}
// If this build failed, send an email to the list.
failure {
script {
emailext(
to: "dev@celix.apache.org",
recipientProviders: [[$class: 'DevelopersRecipientProvider']],
from: "Jenkins <jenkins@ci-builds.apache.org>",
subject: "Jenkins job ${env.JOB_NAME}#${env.BUILD_NUMBER} failed",
body: """
There is a build failure in ${env.JOB_NAME}.
Build: ${env.BUILD_URL}
Logs: ${env.BUILD_URL}console
Changes: ${env.BUILD_URL}changes
"""
)
}
}
// Send an email, if the last build was not successful and this one is.
fixed {
script {
emailext(
to: "dev@celix.apache.org",
recipientProviders: [[$class: 'DevelopersRecipientProvider']],
from: 'Jenkins <jenkins@ci-builds.apache.org>',
subject: "Jenkins job ${env.JOB_NAME}#${env.BUILD_NUMBER} back to normal",
body: """
The build for ${env.JOB_NAME} completed successfully and is back to normal.
Build: ${env.BUILD_URL}
Logs: ${env.BUILD_URL}console
Changes: ${env.BUILD_URL}changes
"""
)
}
}
}
}