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 {
}
}
}
-