in vars/asfMainNetBeansBuild.groovy [59:281]
def call(Map params = [:]) {
// variable needed for apidoc
pipeline {
options {
buildDiscarder(logRotator(numToKeepStr: '2'))
disableConcurrentBuilds()
timeout(time: 340, unit: 'MINUTES')
}
//
agent { node { label 'ubuntu && !ephemeral' } }
parameters {
booleanParam(name: 'INSTALLERS', defaultValue: false, description: 'Build installers?')
booleanParam(name: 'VSIX', defaultValue: false, description: 'Build VSCode plugin?')
booleanParam(name: 'NIGHTLIES', defaultValue: false, description: 'Publish to nightlies.apache.org?')
}
stages {
stage("Preparing Variable") {
//agent { node { label 'ubuntu && !nocredentials' } }
steps {
script {
// test if we can do that
sh 'curl "https://netbeans.apache.org/nbbuild/netbeansrelease.json" -L -o netbeansrelease.json'
def releaseInformation = readJSON file: 'netbeansrelease.json'
sh 'rm -f netbeansrelease.json'
branch = env.BRANCH_NAME
def githash = env.GIT_COMMIT
println '20231904'
println githash
println branch
// we need npm later test early
sh 'npm --version'
if (!releaseInformation[branch]) {
// no branch definined in json exit build
if (releaseInformation[branch.replace('vsnetbeans_preview_','release')]) {
// branch is release1234 for vsnetbeans_preview_1237
branch = branch.replace('vsnetbeans_preview_','release')
} else if (releaseInformation[branch.replace('vsnetbeans_','release')]) {
// branch is release1234 for vsnetbeans_1237
branch = branch.replace('vsnetbeans_','release')
}
else {
// no branch definined in json exit build
currentBuild.result = "FAILURE"
throw new Exception("No entry in json for $branch")
}
}
tooling.myAnt = releaseInformation[branch].ant;
apidocurl = releaseInformation[branch].apidocurl
mavenVersion=releaseInformation[branch].mavenversion
switch (releaseInformation[branch].releasedate['month']) {
case '01':month = 'Jan'; break;
case '02':month = 'Feb'; break;
case '03':month = 'Mar'; break;
case '04':month = 'Apr'; break;
case '05':month = 'May'; break;
case '06':month = 'Jun'; break;
case '07':month = 'Jul'; break;
case '08':month = 'Aug'; break;
case '09':month = 'Sep'; break;
case '10':month = 'Oct'; break;
case '11':month = 'Nov'; break;
case '12':month = 'Dec'; break;
default: month ='Invalid';
}
date = releaseInformation[branch].releasedate['day'] + ' '+ month + ' '+releaseInformation[branch].releasedate['year']
//2018-07-29T12:00:00Z
atomdate = releaseInformation[branch].releasedate['year']+'-'+releaseInformation[branch].releasedate['month']+'-'+releaseInformation[branch].releasedate['day']+'T12:00:00Z'
tooling.jdktool = releaseInformation[branch].jdk
if (releaseInformation[branch].jdktoolapidoc) {
tooling.jdktoolapidoc = releaseInformation[branch].jdktoolapidoc
}else {
tooling.jdktoolapidoc = releaseInformation[branch].jdk
}
tooling.myMaven = releaseInformation[branch].maven
version = releaseInformation[branch].versionName;
vsixversion = releaseInformation[branch].vsixVersion;
// make a new attribute in json for this.
heavyrelease = releaseInformation[branch].publish_apidoc == 'true';
rmversion = version
//
if (releaseInformation[branch].milestones) {
releaseInformation[branch].milestones.each{key,value ->
if (key==githash) {
// vote candidate prior
if (value['vote']) {
votecandidate = true
vote = value['vote']
rmversion = rmversion
} else if (value['version']){
// other named version
rmversion = rmversion+'-'+value['version']
}
}
}
}
debversion = rmversion.replace('-','~')
}
}
}
stage ('Master build') {
tools {
jdk tooling.jdktool
}
when {
branch 'master'
}
stages {
stage ('build javadoc') {
steps {
withAnt(installation: tooling.myAnt) {
sh "ant getallmavencoordinates"
sh "ant build-nbms"
sh "ant build-source-zips"
}
withEnv( ["ANT_OPTS=-Djdk.xml.totalEntitySizeLimit=200000"]){
withAnt(installation: tooling.myAnt, jdk: tooling.jdktoolapidoc) {
sh "ant build-javadoc -Djavadoc.web.zip=${env.WORKSPACE}/WEBZIP.zip"
junit 'nbbuild/build/javadoc/checklinks-errors.xml'
publishToNightlies("/netbeans/apidocs/${env.BRANCH_NAME}","**/WEBZIP.zip")
}
}
}
}
stage (' Populate Snapshots') {
steps {
withAnt(installation: tooling.myAnt) {
script {
def localRepo = "${env.WORKSPACE}/.repository"
def netbeansbase = "nbbuild"
def commonparam = "-Dexternallist=${netbeansbase}/build/external.info"
sh "rm -rf ${env.WORKSPACE}/.repository"
withMaven(maven:tooling.myMaven,jdk:tooling.jdktool,publisherStrategy: 'EXPLICIT',mavenLocalRepo: localRepo)
{
sh "mvn org.apache.maven.plugins:maven-dependency-plugin:3.5.0:get -Dartifact=org.apache.netbeans.utilities:nb-repository-plugin:${repopluginversion} -DremoteRepositories=apache.snapshots.https::::https://repository.apache.org/snapshots"
//sh "mvn org.apache.netbeans.utilities:nb-repository-plugin:1.5:download -DnexusIndexDirectory=${env.WORKSPACE}/repoindex -DrepositoryUrl=https://repo.maven.apache.org/maven2"
sh "mvn org.apache.netbeans.utilities:nb-repository-plugin:${repopluginversion}:populate -X ${commonparam} -DnetbeansNbmDirectory=${netbeansbase}/nbms -DnetbeansInstallDirectory=${netbeansbase}/netbeans -DnetbeansSourcesDirectory=${netbeansbase}/build/source-zips -DnetbeansJavadocDirectory=${netbeansbase}/build/javadoc -DparentGAV=org.apache.netbeans:netbeans-parent:4 -DforcedVersion=${mavenVersion} -DskipInstall=true -DdeployId=apache.snapshots.https -DdeployUrl=https://repository.apache.org/content/repositories/snapshots"
}
}
}
}
}
}
}
stage ('Release preparation') {
tools {
jdk tooling.jdktool
}
when {
allOf {
//expression { BRANCH_NAME ==~ /release[0-9]+/ || BRANCH_NAME ==~ /vsnetbeans_preview_[0-9]+/ }
branch pattern : "release\\d+|vsnetbeans_preview_\\d+",comparator:"REGEXP"
//wait for modern 1.4.1
expression { month =='Invalid' }
}
}
steps {
script {
def clusterconfigs = [/*['platform','netbeans-platform'],*/['release','netbeans']]
doParallelClusters(clusterconfigs);
}
}
}
stage ('Release branch javadoc rebuild to nightlies') {
tools {
jdk tooling.jdktool
}
when {
allOf {
//expression { BRANCH_NAME ==~ /release[0-9]+/ }
branch pattern : "release\\d+",comparator:"REGEXP"
//wait for modern 1.4.1
}
}
stages {
stage ('Archive Javadoc') {
steps {
withAnt(installation: tooling.myAnt) {
sh "ant"
}
// use jdk version aligned to max supported
withEnv( ["ANT_OPTS=-Djdk.xml.totalEntitySizeLimit=200000"]){
withAnt(installation: tooling.myAnt, jdk: tooling.jdktoolapidoc) {
sh "ant build-javadoc -Djavadoc.web.zip=${env.WORKSPACE}/WEBZIP.zip"
}
}
junit 'nbbuild/build/javadoc/checklinks-errors.xml'
publishToNightlies("/netbeans/apidocs/${env.BRANCH_NAME}","**/WEBZIP.zip")
}
}
}
}
}
post {
cleanup {
cleanWs()
}
success {
slackSend (channel:'#netbeans-builds', message:"SUCCESS: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' (${env.BUILD_URL}) ",color:'good')
}
unstable {
slackSend (channel:'#netbeans-builds', message:"UNSTABLE: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' (${env.BUILD_URL}) ",color:'warning')
}
failure {
slackSend (channel:'#netbeans-builds', message:"FAILED: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' (${env.BUILD_URL})",color:'danger')
}
}
}
}