celix-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From rlenfer...@apache.org
Subject [celix-site] 01/01: Added Jenkinsfile for website deployment
Date Mon, 20 Jul 2020 12:19:53 GMT
This is an automated email from the ASF dual-hosted git repository.

rlenferink pushed a commit to branch add-jenkinsfile
in repository https://gitbox.apache.org/repos/asf/celix-site.git

commit b0024c4852bd8902d06d0c7f4973fbd8bf3e7938
Author: Roy Lenferink <lenferinkroy@gmail.com>
AuthorDate: Mon Jul 20 14:09:10 2020 +0200

    Added Jenkinsfile for website deployment
---
 Jenkinsfile | 117 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 117 insertions(+)

diff --git a/Jenkinsfile b/Jenkinsfile
new file mode 100644
index 0000000..e7a545e
--- /dev/null
+++ b/Jenkinsfile
@@ -0,0 +1,117 @@
+#!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/Jenkins+node+labels
+        label 'git-websites'
+    }
+   
+    triggers {
+        // TODO: this can be removed once gitbox webhooks are re-enabled
+        pollSCM 'H/5 * * * *'
+    }
+
+    environment {
+        HUGO_VERSION = '0.63.2'
+        DEPLOY_BRANCH = 'asf-site'
+    }
+
+    stages {
+        stage('Prepare') {
+            steps {
+                script {
+                    // Capture last commit hash for final commit message
+                    env.LAST_SHA = sh(script:'git log -n 1 --pretty=format:\'%H\'', returnStdout:
true).trim()
+
+                    // Setup Hugo
+                    env.HUGO_DIR = sh(script:'mktemp -d', returnStdout: true).trim()
+                    sh """
+                        mkdir -p ${env.HUGO_DIR}/bin
+                        cd ${env.HUGO_DIR}
+                        wget --no-verbose -O hugo.tar.gz https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_Linux-64bit.tar.gz
+                        tar xfzv hugo.tar.gz
+                        mv hugo ${env.HUGO_DIR}/bin/
+                    """
+
+                    // Setup directory structure for generated content
+                    env.TMP_DIR = sh(script:'mktemp -d', returnStdout: true).trim()
+                    env.OUT_DIR = "${env.TMP_DIR}/content"
+                    sh "mkdir -p ${env.OUT_DIR}"
+                    
+                }
+            }
+        }
+        stage('Build') {
+            steps {
+                script {
+                    withEnv(["PATH+HUGO=${env.HUGO_DIR}/bin"]) {
+                        sh "hugo --destination ${env.OUT_DIR}"
+                    }
+                }
+            }
+        }
+        stage('Deploy') {
+            when {
+                anyOf {
+                    branch 'master'
+                }
+            }
+            steps {
+                script {
+                    // Checkout branch with generated content
+                    sh """
+                        git checkout ${DEPLOY_BRANCH}
+                        git pull origin ${DEPLOY_BRANCH}
+                    """
+                    
+                    // Remove the content of the target branch and replace it with the content
of the temp folder
+                    sh """
+                        rm -rf ${WORKSPACE}/content
+                        git rm -r --cached content/*
+                        mkdir -p ${WORKSPACE}/content
+                        cp -rT ${env.TMP_DIR}/* ${WORKSPACE}/content
+                    """
+                    
+                    // Commit the changes to the target branch
+                    env.COMMIT_MESSAGE = "Updated site from ${BRANCH} (${env.LAST_SHA})"
+                    sh """
+                        git add -A
+                        git commit -m "${env.COMMIT_MESSAGE}" | true
+                    """
+                    
+                    // Push the generated content for deployment
+                    sh "git push -u origin ${DEPLOY_BRANCH}"
+                }
+            }
+        }
+    }
+    
+    post {
+        always {
+            script {
+                sh """
+                    rm -rf ${env.HUGO_DIR}
+                    rm -rf ${env.TMP_DIR}
+                """
+            }
+            deleteDir() /* clean up our workspace */
+        }
+    }
+}
+


Mime
View raw message