This is an automated email from the ASF dual-hosted git repository. gnodet pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/mina-site.git
The following commit(s) were added to refs/heads/master by this push: new ccfe74e Added Jenkinsfile to put deployment configuration in version control new fc04f53 Merge pull request #4 from rlenferink/add-jenkinsfile ccfe74e is described below commit ccfe74ed7673b163defadea442b0d9971e9d7be6 Author: Roy Lenferink <lenferink...@gmail.com> AuthorDate: Mon Jul 20 19:09:52 2020 +0200 Added Jenkinsfile to put deployment configuration in version control --- Jenkinsfile | 112 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 112 insertions(+) diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000..bd87e57 --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,112 @@ +#!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' + } + + 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_NAME} (${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 */ + } + } +} +