You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@community.apache.org by se...@apache.org on 2023/04/27 15:28:54 UTC

[comdev-events-site] branch preview/sample created (now 603e0cb)

This is an automated email from the ASF dual-hosted git repository.

sebb pushed a change to branch preview/sample
in repository https://gitbox.apache.org/repos/asf/comdev-events-site.git


      at 603e0cb  Try out Jenkins file from comdev main site

This branch includes the following new commits:

     new 603e0cb  Try out Jenkins file from comdev main site

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[comdev-events-site] 01/01: Try out Jenkins file from comdev main site

Posted by se...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

sebb pushed a commit to branch preview/sample
in repository https://gitbox.apache.org/repos/asf/comdev-events-site.git

commit 603e0cb4193c10bafef55244139ecfe1b5e2ab4d
Author: Sebb <se...@apache.org>
AuthorDate: Thu Apr 27 16:28:46 2023 +0100

    Try out Jenkins file from comdev main site
---
 Jenkinsfile | 68 ++++++++++++++++++++++++++++++++++++++++---------------------
 1 file changed, 45 insertions(+), 23 deletions(-)

diff --git a/Jenkinsfile b/Jenkinsfile
index 8208e20..8ae20b1 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -23,8 +23,9 @@ pipeline {
     }
    
     environment {
-        HUGO_VERSION = '0.63.2'
-        DEPLOY_BRANCH = 'asf-site'
+        DEPLOY_BRANCH = "${env.BRANCH_NAME == "main" ? "asf-site" : "${env.BRANCH_NAME}-staging"}"
+        HUGO_VERSION = '0.111.3'
+        HUGO_HASH = 'b382aacb522a470455ab771d0e8296e42488d3ea4e61fe49c11c32ec7fb6ee8b'
         PAGEFIND_VERSION = '0.12.0'
         PAGEFIND_HASH = '3e450176562b65359f855c04894ec2c07ffd30a8d08ef4d5812f8d3469d7a58f'
     }
@@ -36,15 +37,15 @@ pipeline {
                     // 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
+                    // Download 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/
-                    """
+                    sh "mkdir -p ${env.HUGO_DIR}/bin"
+                    sh "wget --no-verbose -O ${env.HUGO_DIR}/hugo.tar.gz https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_Linux-64bit.tar.gz"
+                    // Verify the checksum
+                    def hugo_hash = sha256 file: "${env.HUGO_DIR}/hugo.tar.gz"
+                    assert hugo_hash == "${HUGO_HASH}"
+                    // Unpack Hugo
+                    sh "tar -C ${env.HUGO_DIR}/bin -xkf ${env.HUGO_DIR}/hugo.tar.gz"
 
                     // Download Pagefind
                     env.PAGEFIND_DIR = sh(script:'mktemp -d', returnStdout: true).trim()
@@ -67,35 +68,56 @@ pipeline {
         stage('Build') {
             steps {
                 script {
-                    withEnv(["PATH+HUGO=${env.HUGO_DIR}/bin"]) {
-                        sh "hugo --destination ${env.OUT_DIR}"
-                    }
-                    sh "${env.PAGEFIND_DIR}/bin/pagefind --source ${env.OUT_DIR}"
+                    sh "${HUGO_DIR}/bin/hugo --destination ${env.OUT_DIR}"
+                    sh "${PAGEFIND_DIR}/bin/pagefind --source ${env.OUT_DIR}"
+                    sh "rm -f .hugo_build.lock"
                 }
             }
         }
+        // https://www.jenkins.io/doc/book/pipeline/syntax/#built-in-conditions
+        // branch uses Ant-style patterns by default:
+        // https://ant.apache.org/manual/dirtasks.html#patterns
+        // Exclude branches ending in '-staging'
+        // Also try to prevent deploy of top-level branches apart from main
         stage('Deploy') {
             when {
+                not {
+                    branch '**/*-staging'
+                }
                 anyOf {
                     branch 'main'
-                }
+                    not {
+                      branch '*'
+                    }
+                }        
             }
+
             steps {
                 script {
-                    // Checkout branch with generated content
+                    // Checkout branch with generated content, creating it if necessary
+                    // We only want the generated content + .asf.yaml
                     sh """
-                        git checkout ${DEPLOY_BRANCH}
-                        git pull origin ${DEPLOY_BRANCH}
+                        if git checkout ${DEPLOY_BRANCH}
+                        then
+                          git pull origin ${DEPLOY_BRANCH}
+                        else
+                          echo "branch ${DEPLOY_BRANCH} is new; create basic site"
+                          git checkout --orphan ${DEPLOY_BRANCH} -f
+                          git rm -rf .
+                          # assume we have an asf.yaml file
+                          git checkout origin/${BRANCH_NAME} -- .asf.yaml
+                          git add .asf.yaml -f
+                        fi
                     """
-                    
+
                     // 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/*
+                        git rm -r --ignore-unmatch --cached content/*
                         mkdir -p ${WORKSPACE}/content
                         cp -rT ${env.TMP_DIR}/* ${WORKSPACE}/content
                     """
-                    
+
                     // Commit the changes to the target branch
                     env.COMMIT_MESSAGE1 = "Updated ${DEPLOY_BRANCH} from ${BRANCH_NAME} at ${env.LAST_SHA}"
                     env.COMMIT_MESSAGE2 = "Built from ${BUILD_URL}"
@@ -103,7 +125,7 @@ pipeline {
                         git add -A
                         git commit -m "${env.COMMIT_MESSAGE1}" -m "${env.COMMIT_MESSAGE2}" | true
                     """
-                    
+
                     // Push the generated content for deployment
                     sh "git push -u origin ${DEPLOY_BRANCH}"
                 }
@@ -116,6 +138,7 @@ pipeline {
             script {
                 sh """
                     rm -rf ${env.HUGO_DIR}
+                    rm -rf ${env.PAGEFIND_DIR}
                     rm -rf ${env.TMP_DIR}
                 """
             }
@@ -123,4 +146,3 @@ pipeline {
         }
     }
 }
-