You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@celix.apache.org by rl...@apache.org on 2021/04/18 12:08:30 UTC
[celix-site] 01/01: Add Jenkinsfile for generating Doxygen docs
This is an automated email from the ASF dual-hosted git repository.
rlenferink pushed a commit to branch jenkinsfile-doxygen
in repository https://gitbox.apache.org/repos/asf/celix-site.git
commit a1570d08d9f695b75bf5744e493d699aacaf3e11
Author: Roy Lenferink <le...@gmail.com>
AuthorDate: Sun Apr 18 11:00:15 2021 +0200
Add Jenkinsfile for generating Doxygen docs
---
JenkinsfileDoxygen | 148 +++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 148 insertions(+)
diff --git a/JenkinsfileDoxygen b/JenkinsfileDoxygen
new file mode 100644
index 0000000..cdfba5e
--- /dev/null
+++ b/JenkinsfileDoxygen
@@ -0,0 +1,148 @@
+#!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 <je...@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 <je...@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
+"""
+ )
+ }
+ }
+ }
+}
+