| #!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 |
| } |
| |
| } |