Bug 548926 - Added Jenkinsfile for building and publishing website
Signed-off-by: Mikaël Barbero <mikael.barbero@eclipse-foundation.org>
diff --git a/Jenkinsfile b/Jenkinsfile
new file mode 100644
index 0000000..0474e5d
--- /dev/null
+++ b/Jenkinsfile
@@ -0,0 +1,112 @@
+pipeline {
+
+ agent {
+ kubernetes {
+ label 'hugo-agent'
+ yaml """
+apiVersion: v1
+metadata:
+ labels:
+ run: hugo
+ name: hugo-pod
+spec:
+ containers:
+ - name: jnlp
+ volumeMounts:
+ - mountPath: /home/jenkins/.ssh
+ name: volume-known-hosts
+ - name: hugo
+ image: eclipsecbi/hugo:0.42.1
+ command:
+ - cat
+ tty: true
+ volumes:
+ - configMap:
+ name: known-hosts
+ name: volume-known-hosts
+"""
+ }
+ }
+
+ environment {
+ PROJECT_NAME = "app4mc" // must be all lowercase.
+ PROJECT_BOT_NAME = "APP4MC Bot" // Capitalize the name
+ }
+
+ triggers { pollSCM('H/10 * * * *')
+
+ }
+
+ options {
+ buildDiscarder(logRotator(numToKeepStr: '5'))
+ checkoutToSubdirectory('hugo')
+ }
+
+ stages {
+ stage('Checkout www repo') {
+ steps {
+ dir('www') {
+ sshagent(['git.eclipse.org-bot-ssh']) {
+ sh '''
+ git clone ssh://genie.${PROJECT_NAME}@git.eclipse.org:29418/www.eclipse.org/${PROJECT_NAME}.git .
+ git checkout ${BRANCH_NAME}
+ '''
+ }
+ }
+ }
+ }
+ stage('Build website (master) with Hugo') {
+ when {
+ branch 'master'
+ }
+ steps {
+ container('hugo') {
+ dir('hugo') {
+ sh 'hugo -b https://www.eclipse.org/${PROJECT_NAME}/'
+ }
+ }
+ }
+ }
+ stage('Build website (staging) with Hugo') {
+ when {
+ branch 'staging'
+ }
+ steps {
+ container('hugo') {
+ dir('hugo') {
+ sh 'hugo -b https://staging.eclipse.org/${PROJECT_NAME}/'
+ }
+ }
+ }
+ }
+ stage('Push to $env.BRANCH_NAME branch') {
+ when {
+ anyOf {
+ branch "master"
+ branch "staging"
+ }
+ }
+ steps {
+ sh 'rm -rf www/* && cp -Rvf hugo/public/* www/'
+ dir('www') {
+ sshagent(['git.eclipse.org-bot-ssh']) {
+ sh '''
+ git add -A
+ if ! git diff --cached --exit-code; then
+ echo "Changes have been detected, publishing to repo 'www.eclipse.org/${PROJECT_NAME}'"
+ git config --global user.email "${PROJECT_NAME}-bot@eclipse.org"
+ git config --global user.name "${PROJECT_BOT_NAME}"
+ git commit -m "Website build ${JOB_NAME}-${BUILD_NUMBER}"
+ git log --graph --abbrev-commit --date=relative -n 5
+ git push origin HEAD:${BRANCH_NAME}
+ else
+ echo "No change have been detected since last build, nothing to publish"
+ fi
+ '''
+ }
+ }
+ }
+ }
+ }
+}
+