| #!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 |
| """ |
| ) |
| } |
| } |
| } |
| } |
| |