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
+"""
+        )
+      }
+    }
+  }
+}
+