blob: 3e702f14a66705ee80ee7d3e0b009327aff2fd2a [file] [log] [blame]
#!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
*
* 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.
*
*/
// Pipeline as code for building Royale on Jenkins using the Pipeline Plugin.
// Run only on the windows-2012-1 agent as this is the only one setup to fully
// support Royale builds.
node('jenkins-win-he-de-1') {
currentBuild.result = "SUCCESS"
echo 'Building Branch: ' + env.BRANCH_NAME
// Setup the required environment variables.
env.JAVA_HOME = "${tool 'JDK 1.7 (unlimited security) 64-bit Windows only'}"
env.FLASHPLAYER_DEBUGGER = "C:\\Program Files (x86)\\Adobe\\flashplayer_22_sa_debug.exe"
env.PATH = "${tool 'Maven 3 (latest)'}\\bin;${env.PATH}"
// Make sure the feature branches don't change the SNAPSHOTS in Nexus.
def mavenGoal = "install"
def mavenLocalRepo = ""
if(env.BRANCH_NAME == 'develop') {
mavenGoal = "deploy"
} else {
mavenLocalRepo = "-Dmaven.repo.local=..\\.repository"
}
try {
/*stage 'Wipe Workspace'
// Clean the entire workspace ... for debugging ...
deleteDir()*/
stage 'Checkout Upstream Projects'
echo 'checking out royale-compiler for branch ' + env.BRANCH_NAME
checkout([$class: 'GitSCM', branches: [[name: env.BRANCH_NAME]], extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'compiler']], userRemoteConfigs: [[url: 'https://github.com/apache/royale-compiler.git']]])
echo 'checking out royale-typedefs for branch ' + env.BRANCH_NAME
checkout([$class: 'GitSCM', branches: [[name: env.BRANCH_NAME]], extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'typedefs']], userRemoteConfigs: [[url: 'https://github.com/apache/royale-typedefs.git']]])
echo 'checking out royale-framework for branch ' + env.BRANCH_NAME
checkout([$class: 'GitSCM', branches: [[name: env.BRANCH_NAME]], extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'framework']], userRemoteConfigs: [[url: 'https://github.com/apache/royale-asjs.git']]])
stage 'Build Royale Compiler'
dir('compiler') {
echo 'Building Royale Compiler'
bat "mvn -U clean ${mavenGoal} ${mavenLocalRepo} -s C:\\.m2\\settings.xml -P apache-snapshots-enabled -Dcom.adobe.systemIdsForWhichTheTermsOfTheAdobeLicenseAgreementAreAccepted=3c9041a9,3872fc1e -DskipTests"
}
stage 'Build Royale Typedefs'
dir('typedefs') {
echo 'Building Royale Typedefs'
bat "mvn -U clean ${mavenGoal} ${mavenLocalRepo} -s C:\\.m2\\settings.xml -P apache-snapshots-enabled -Dcom.adobe.systemIdsForWhichTheTermsOfTheAdobeLicenseAgreementAreAccepted=3c9041a9,3872fc1e -Dhttps.protocols=TLSv1.2"
}
stage 'Build Royale Framework'
dir('framework') {
echo 'Building Royale Framework'
// It seems the distribution needs a little more perm-gen space.
withEnv(["MAVEN_OPTS=-XX:MaxPermSize=256m"]) {
bat "mvn -U clean ${mavenGoal} ${mavenLocalRepo} -s C:\\.m2\\settings.xml -P apache-snapshots-enabled,build-examples,build-distribution -Dcom.adobe.systemIdsForWhichTheTermsOfTheAdobeLicenseAgreementAreAccepted=3872fc1e -Dhttps.protocols=TLSv1.2"
}
}
stage('Code Quality') {
steps {
echo 'Checking Code Quality on SonarCloud'
// Then run the analysis
// 'my-sonarcloud-token' needs to be defined for this job and contains the user token
withCredentials([string(credentialsId: 'piotrz-sonarcloud-token', variable: 'SONAR_TOKEN')]) {
sh 'mvn clean verify sonar:sonar -Dsonar.host.url=https://sonarcloud.io -Dsonar.organization=apache -Dsonar.projectKey=apache_royale-sdk-compiler -Dsonar.branch.name=develop -Dsonar.login=${SONAR_TOKEN}'
}
}
}
}
catch (err) {
currentBuild.result = "FAILURE"
/* mail body: "project build error is here: ${env.BUILD_URL}" ,
from: 'xxxx@yyyy.com',
replyTo: 'dev@royale.apache.org',
subject: 'Autobuild for Branch ' env.BRANCH_NAME
to: 'commits@royale.apache.org'
*/
throw err
}
}