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/30 10:29:39 UTC
[comdev-site] branch main updated: Synch with comdev-events-site version
This is an automated email from the ASF dual-hosted git repository.
sebb pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/comdev-site.git
The following commit(s) were added to refs/heads/main by this push:
new c7b5d4d Synch with comdev-events-site version
c7b5d4d is described below
commit c7b5d4d94320dda480daa8ea97b39a8debabdd7d
Author: Sebb <se...@apache.org>
AuthorDate: Sun Apr 30 11:29:29 2023 +0100
Synch with comdev-events-site version
---
Jenkinsfile | 116 +++++++++++++++++++++++++++++++-----------------------------
1 file changed, 60 insertions(+), 56 deletions(-)
diff --git a/Jenkinsfile b/Jenkinsfile
index f75284e..22523bc 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -23,8 +23,7 @@ pipeline {
}
environment {
- DEPLOY_BRANCH = 'asf-site'
- STAGING_BRANCH = "${env.BRANCH_NAME}-staging"
+ 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'
@@ -37,9 +36,25 @@ pipeline {
script {
// Capture last commit hash for final commit message
env.LAST_SHA = sh(script:'git log -n 1 --pretty=format:\'%H\'', returnStdout: true).trim()
-
- // Download Hugo
+ env.HUGO_PATH = sh(script:'which hugo', returnStdout: true).trim()
+ sh "echo Hugo path: '${env.HUGO_PATH}'"
+ // Get current Hugo version (looks like hugo v0.111.3-5d4eb5154e1fed125ca8e9b5a0315c4180dab192+extended linux/amd64 ...)
+ // Use the location found above to ensure same hugo can be used later
+ env.HUGO_VERSION_CURRENT = sh(script:'${HUGO_PATH} version | cut -f 2 -d" "|cut -d- -f 1|sed -e "s!^v!!"', returnStdout: true).trim()
+ sh "echo Hugo current: '${env.HUGO_VERSION_CURRENT}'"
+ sh "echo Hugo target: '${HUGO_VERSION}'"
+ // create the dir in case it is needed (simplifies tidyup)
env.HUGO_DIR = sh(script:'mktemp -d', returnStdout: true).trim()
+ }
+ }
+ }
+ stage("Install Hugo") {
+ when {
+ expression { env.HUGO_VERSION_CURRENT != HUGO_VERSION }
+ }
+ steps {
+ script {
+ // Download Hugo
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
@@ -47,7 +62,13 @@ pipeline {
assert hugo_hash == "${HUGO_HASH}"
// Unpack Hugo
sh "tar -C ${env.HUGO_DIR}/bin -xkf ${env.HUGO_DIR}/hugo.tar.gz"
-
+ env.HUGO_PATH = "${env.HUGO_DIR}/bin/hugo"
+ }
+ }
+ }
+ stage("Install Pagefind") {
+ steps {
+ script {
// Download Pagefind
env.PAGEFIND_DIR = sh(script:'mktemp -d', returnStdout: true).trim()
sh "mkdir -p ${env.PAGEFIND_DIR}/bin"
@@ -58,6 +79,12 @@ pipeline {
// Unpack Pagefind
sh "tar -C ${env.PAGEFIND_DIR}/bin -xkf ${env.PAGEFIND_DIR}/pagefind.tar.gz"
+ }
+ }
+ }
+ stage("Setup directory") {
+ steps {
+ script {
// Setup directory structure for generated content
env.TMP_DIR = sh(script:'mktemp -d', returnStdout: true).trim()
env.OUT_DIR = "${env.TMP_DIR}/content"
@@ -69,69 +96,46 @@ pipeline {
stage('Build') {
steps {
script {
- sh "${HUGO_DIR}/bin/hugo --destination ${env.OUT_DIR}"
+ sh "${HUGO_PATH} --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'
- }
- }
- 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 --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}"
- sh """
- 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}"
- }
- }
- }
- stage('Staging') {
- // Mostly duplicated from the Deploy branch, there must be a better way...
- // 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'
- // This agrees with the definition of STAGING_BRANCH
- when {
- allOf {
- not {
- branch '**/*-staging'
- }
not {
- branch 'main'
+ branch '*'
}
- }
+ }
}
+
steps {
script {
- // Checkout or create branch with generated content
+ // Checkout branch with generated content, creating it if necessary
+ // We only want the generated content + .asf.yaml
sh """
- git checkout ${STAGING_BRANCH} || git checkout -b ${STAGING_BRANCH}
- git pull origin ${STAGING_BRANCH} || echo "branch ${STAGING_BRANCH} is new"
+ 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
@@ -143,7 +147,7 @@ pipeline {
"""
// Commit the changes to the target branch
- env.COMMIT_MESSAGE1 = "Updated ${STAGING_BRANCH} from ${BRANCH_NAME} at ${env.LAST_SHA}"
+ env.COMMIT_MESSAGE1 = "Updated ${DEPLOY_BRANCH} from ${BRANCH_NAME} at ${env.LAST_SHA}"
env.COMMIT_MESSAGE2 = "Built from ${BUILD_URL}"
sh """
git add -A
@@ -151,7 +155,7 @@ pipeline {
"""
// Push the generated content for deployment
- sh "git push -u origin ${STAGING_BRANCH}"
+ sh "git push -u origin ${DEPLOY_BRANCH}"
}
}
}