blob: 486a0c911373bc7a5f058754cc5a6bc7479bacb6 [file] [log] [blame]
/*
* 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
*
* http://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.
*/
def NODE = 'git-websites'
pipeline {
agent {
label "$NODE"
}
options {
buildDiscarder(
logRotator(artifactNumToKeepStr: '5', numToKeepStr: '10')
)
timestamps()
ansiColor('xterm')
checkoutToSubdirectory('camel-website')
}
environment {
ANTORA_CACHE_DIR = "$WORKSPACE/.antora-cache"
YARN_CACHE_FOLDER = "$WORKSPACE/.yarn-cache"
}
stages {
stage('Theme') {
agent {
dockerfile {
dir 'camel-website'
label "$NODE"
reuseNode true
}
}
environment {
HOME = "$WORKSPACE"
}
steps {
sh "cd $WORKSPACE/camel-website/antora-ui-camel && yarn --non-interactive --frozen-lockfile install"
sh "cd $WORKSPACE/camel-website/antora-ui-camel && yarn --non-interactive --frozen-lockfile build"
}
}
stage('Website') {
agent {
dockerfile {
dir 'camel-website'
label "$NODE"
reuseNode true
}
}
environment {
HOME = "$WORKSPACE"
}
steps {
sh "cd $WORKSPACE/camel-website && yarn --non-interactive --frozen-lockfile install"
sh "cd $WORKSPACE/camel-website && yarn --non-interactive --frozen-lockfile build"
}
}
stage('Checks') {
agent {
dockerfile {
dir 'camel-website'
label "$NODE"
reuseNode true
}
}
environment {
HOME = "$WORKSPACE"
}
steps {
sh "cd $WORKSPACE/camel-website && yarn --non-interactive --frozen-lockfile checks"
}
}
stage('Preview') {
when {
not {
branch 'master'
}
}
steps {
publishHTML([allowMissing: false, alwaysLinkToLastBuild: false, keepAll: false, reportDir: 'camel-website/public', reportFiles: 'index.html', reportName: 'Preview', reportTitles: ''])
}
}
stage('Deploy') {
when {
branch 'master'
}
steps {
dir('deploy/staging') {
deleteDir()
sh 'git clone -b asf-site https://gitbox.apache.org/repos/asf/camel-website.git .'
sh 'git rm -r *'
sh "cp -R $WORKSPACE/camel-website/public/. ."
sh 'git add .'
sh 'git commit -m "Website updated to $(git rev-parse --short HEAD)"'
sh 'git push origin asf-site'
}
}
}
}
}