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:55 UTC
[comdev-events-site] 01/01: Try out Jenkins file from comdev main site
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 {
}
}
}
-