blob: da9af5b17f650c7300e41f04d7ba098387bd5090 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2020 Ericsson.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*******************************************************************************/
pipeline {
agent {
kubernetes {
label 'tracecompass-build'
yamlFile 'jenkins/pod-templates/tracecompass-pod.yaml'
defaultContainer 'tracecompass'
}
}
options {
timestamps()
timeout(time: 4, unit: 'HOURS')
disableConcurrentBuilds()
}
tools {
maven 'apache-maven-latest'
jdk 'openjdk-jdk11-latest'
}
environment {
MAVEN_OPTS="-Xms768m -Xmx4096m -XX:+UseSerialGC"
MAVEN_WORKSPACE_SCRIPTS="../scripts"
WORKSPACE_SCRIPTS="${WORKSPACE}/.scripts/"
SITE_PATH="common/org.eclipse.tracecompass.incubator.releng-site/target/repository/"
RCP_PATH="rcp/org.eclipse.tracecompass.incubator.rcp.product/target/products/"
RCP_SITE_PATH="rcp/org.eclipse.tracecompass.incubator.rcp.product/target/repository/"
RCP_PATTERN="trace-compass-*"
SERVER_RCP_PATH="trace-server/org.eclipse.tracecompass.incubator.trace.server.product/target/products/"
SERVER_RCP_SITE_PATH="trace-server/org.eclipse.tracecompass.incubator.trace.server.product/target/repository/"
SERVER_RCP_PATTERN="trace-compass-server*"
JAVADOC_PATH="target/site/apidocs"
}
stages {
stage('Checkout') {
steps {
container('tracecompass') {
sh 'mkdir -p ${MAVEN_WORKSPACE_SCRIPTS}'
sh 'cp scripts/deploy-rcp.sh ${MAVEN_WORKSPACE_SCRIPTS}'
sh 'cp scripts/deploy-update-site.sh ${MAVEN_WORKSPACE_SCRIPTS}'
sh 'cp scripts/deploy-doc.sh ${MAVEN_WORKSPACE_SCRIPTS}'
sh 'cp scripts/deploy-javadoc.sh ${MAVEN_WORKSPACE_SCRIPTS}'
checkout([$class: 'GitSCM', branches: [[name: '$GERRIT_BRANCH_NAME']], doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'BuildChooserSetting', buildChooser: [$class: 'GerritTriggerBuildChooser']]], submoduleCfg: [], userRemoteConfigs: [[refspec: '$GERRIT_REFSPEC', url: '$GERRIT_REPOSITORY_URL']]])
sh 'mkdir -p ${WORKSPACE_SCRIPTS}'
sh 'cp ${MAVEN_WORKSPACE_SCRIPTS}/deploy-rcp.sh ${WORKSPACE_SCRIPTS}'
sh 'cp ${MAVEN_WORKSPACE_SCRIPTS}/deploy-update-site.sh ${WORKSPACE_SCRIPTS}'
sh 'cp ${MAVEN_WORKSPACE_SCRIPTS}/deploy-doc.sh ${WORKSPACE_SCRIPTS}'
sh 'cp ${MAVEN_WORKSPACE_SCRIPTS}/deploy-javadoc.sh ${WORKSPACE_SCRIPTS}'
}
}
}
stage('Legacy') {
when {
expression { return params.LEGACY }
}
steps {
container('tracecompass') {
sh 'cp -f ${WORKSPACE}/rcp/org.eclipse.tracecompass.incubator.rcp.product/legacy/tracing.incubator.product ${WORKSPACE}/rcp/org.eclipse.tracecompass.incubator.rcp.product/'
}
}
}
stage('Legacy-server-2019-06') {
when {
expression { return params.SERVER_2019_06 }
}
steps {
container('tracecompass') {
sh 'git apply patches/0001-releng-Fix-build-with-tracecompass-incubator-2019-06.patch'
}
}
}
stage('Legacy-server-2020-06') {
when {
expression { return params.SERVER_2020_06 }
}
steps {
container('tracecompass') {
sh 'git apply patches/0001-releng-Fix-build-with-tracecompass-incubator-2020-06.patch'
}
}
}
stage('Build') {
steps {
container('tracecompass') {
sh 'curl https://ci.eclipse.org/ease/job/ease.build.module.doclet/lastSuccessfulBuild/artifact/developers/org.eclipse.ease.helpgenerator/target/ease.module.doclet.jar --output ease.module.doclet.jar'
sh 'mvn clean install -B -Pdeploy-doc -Pmodule-docs -DdocDestination=${WORKSPACE}/doc/.temp -Pbuild-rcp -Dmaven.repo.local=/home/jenkins/.m2/repository --settings /home/jenkins/.m2/settings.xml ${MAVEN_ARGS}'
}
}
post {
always {
container('tracecompass') {
sh 'echo $ARCHIVE_ARTIFACTS'
junit '*/*/target/surefire-reports/*.xml'
archiveArtifacts artifacts: '$ARCHIVE_ARTIFACTS', excludes: '**/org.eclipse.tracecompass.common.core.log', allowEmptyArchive: true
}
}
}
}
stage('Deploy Site') {
when {
expression { return params.DEPLOY_SITE }
}
steps {
container('jnlp') {
sshagent (['projects-storage.eclipse.org-bot-ssh']) {
sh '${WORKSPACE_SCRIPTS}/deploy-update-site.sh ${SITE_PATH} ${SITE_DESTINATION}'
}
}
}
}
stage('Deploy RCP') {
when {
expression { return params.DEPLOY_RCP }
}
steps {
container('jnlp') {
sshagent (['projects-storage.eclipse.org-bot-ssh']) {
sh '${WORKSPACE_SCRIPTS}/deploy-rcp.sh ${RCP_PATH} ${RCP_DESTINATION} ${RCP_SITE_PATH} ${RCP_SITE_DESTINATION} ${RCP_PATTERN} false'
}
}
}
}
stage('Deploy Server') {
when {
expression { return params.DEPLOY_RCP }
}
steps {
container('jnlp') {
sshagent (['projects-storage.eclipse.org-bot-ssh']) {
sh '${WORKSPACE_SCRIPTS}/deploy-rcp.sh ${SERVER_RCP_PATH} ${SERVER_RCP_DESTINATION} ${SERVER_RCP_SITE_PATH} ${SERVER_RCP_SITE_DESTINATION} ${SERVER_RCP_PATTERN} true'
}
}
}
}
stage('Deploy Doc') {
when {
expression { return params.DEPLOY_DOC }
}
steps {
container('jnlp') {
sshagent (['projects-storage.eclipse.org-bot-ssh']) {
sh '${WORKSPACE_SCRIPTS}/deploy-doc.sh'
}
}
}
}
stage('Javadoc') {
when {
expression { return params.JAVADOC }
}
steps {
container('tracecompass') {
sh 'mvn clean javadoc:aggregate -Pbuild-api-docs -Dmaven.repo.local=/home/jenkins/.m2/repository --settings /home/jenkins/.m2/settings.xml ${MAVEN_ARGS}'
}
}
}
stage('Deploy Javadoc') {
when {
expression { return params.JAVADOC }
}
steps {
container('jnlp') {
sshagent (['projects-storage.eclipse.org-bot-ssh']) {
sh '${WORKSPACE_SCRIPTS}/deploy-javadoc.sh ${JAVADOC_PATH}'
}
}
}
}
}
post {
failure {
container('tracecompass') {
emailext subject: 'Build $BUILD_STATUS: $PROJECT_NAME #$BUILD_NUMBER!',
body: '''$CHANGES \n
------------------------------------------ \n
Check console output at $BUILD_URL to view the results.''',
recipientProviders: [culprits(), requestor()],
to: '${EMAIL_RECIPIENT}'
}
}
fixed {
container('tracecompass') {
emailext subject: 'Build is back to normal: $PROJECT_NAME #$BUILD_NUMBER!',
body: '''Check console output at $BUILD_URL to view the results.''',
recipientProviders: [culprits(), requestor()],
to: '${EMAIL_RECIPIENT}'
}
}
}
}