Test VSIX release for releasebranch
diff --git a/meta/netbeansrelease.json b/meta/netbeansrelease.json
index a0fe9f2..3a93a62 100644
--- a/meta/netbeansrelease.json
+++ b/meta/netbeansrelease.json
@@ -409,6 +409,7 @@
"jdk_apidoc": "https://docs.oracle.com/javase/8/docs/api/",
"maven": "maven_3.3.9",
"versionName": "12.4",
+ "vsixVersion": "12.4.0",
"mavenversion": "RELEASE124",
"tlp": "true",
"apidocurl": "https://bits.netbeans.org/12.4/javadoc",
@@ -459,6 +460,7 @@
"jdk_apidoc": "https://docs.oracle.com/javase/8/docs/api/",
"maven": "maven_3.3.9",
"versionName": "12.4.301",
+ "vsixVersion": "12.4.301",
"tlp": "true",
"apidocurl": "",
"update_url": "https://netbeans.apache.org/nb/updates/12.4/updates.xml.gz?{$netbeans.hash.code}",
@@ -488,6 +490,7 @@
"jdk_apidoc": "https://docs.oracle.com/javase/8/docs/api/",
"maven": "maven_3.3.9",
"versionName": "12.5",
+ "vsixVersion": "12.5.0",
"mavenversion": "RELEASE125",
"tlp": "true",
"apidocurl": "https://bits.netbeans.org/12.5/javadoc",
@@ -526,6 +529,7 @@
"jdk_apidoc": "https://docs.oracle.com/javase/8/docs/api/",
"maven": "maven_3.3.9",
"versionName": "12.5.301",
+ "vsixVersion": "12.5.301",
"tlp": "true",
"apidocurl": "https://bits.netbeans.org/12.5/javadoc",
"update_url": "https://netbeans.apache.org/nb/updates/12.5/updates.xml.gz?{$netbeans.hash.code}",
@@ -555,6 +559,7 @@
"jdk_apidoc": "https://docs.oracle.com/javase/8/docs/api/",
"maven": "maven_3.3.9",
"versionName": "12.6",
+ "vsixVersion": "12.6.0",
"mavenversion": "RELEASE126",
"tlp": "true",
"apidocurl": "https://bits.netbeans.org/12.6/javadoc",
@@ -593,6 +598,7 @@
"jdk_apidoc": "https://docs.oracle.com/javase/8/docs/api/",
"maven": "maven_3.3.9",
"versionName": "12.6.301",
+ "vsixVersion": "12.6.301",
"tlp": "true",
"apidocurl": "https://bits.netbeans.org/12.6/javadoc",
"update_url": "https://netbeans.apache.org/nb/updates/12.6/updates.xml.gz?{$netbeans.hash.code}",
diff --git a/vars/asfMainNetBeansBuild.groovy b/vars/asfMainNetBeansBuild.groovy
index cf5951f..4c47455 100644
--- a/vars/asfMainNetBeansBuild.groovy
+++ b/vars/asfMainNetBeansBuild.groovy
@@ -34,6 +34,8 @@
@groovy.transform.Field
def rmversion=""
@groovy.transform.Field
+def vsixversion=""
+@groovy.transform.Field
def month=""
@groovy.transform.Field
def votecandidate=false
@@ -48,40 +50,46 @@
def call(Map params = [:]) {
// variable needed for apidoc
-
-
+
+
pipeline {
options {
buildDiscarder(logRotator(numToKeepStr: '2'))
- disableConcurrentBuilds()
+ disableConcurrentBuilds()
timeout(time: 180, unit: 'MINUTES')
}
agent { node { label 'ubuntu' } }
-
+
stages {
stage("Preparing Variable") {
//agent { node { label 'ubuntu' } }
steps {
script {
- // test if we can do that
+ // test if we can do that
sh 'curl "https://gitbox.apache.org/repos/asf?p=netbeans-jenkins-lib.git;a=blob_plain;f=meta/netbeansrelease.json" -o netbeansrelease.json'
def releaseInformation = readJSON file: 'netbeansrelease.json'
sh 'rm -f netbeansrelease.json'
- def branch = env.BRANCH_NAME
+ def branch = env.BRANCH_NAME
def githash = env.GIT_COMMIT
-
+
println githash
println branch
-
+
if (!releaseInformation[branch]) {
// no branch definined in json exit build
- currentBuild.result = "FAILURE"
- throw new Exception("No entry in json for $branch")
+ if (releaseInformation[branch.replace('vsnetbeans_previous_','release')]) {
+ // branch is release1234
+ branch = branch.replace('vsnetbeans_previous_','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;
@@ -103,7 +111,7 @@
tooling.jdktool = releaseInformation[branch].jdk
tooling.myMaven = releaseInformation[branch].maven
version = releaseInformation[branch].versionName;
-
+ vsixversion = releaseInformation[branch].vsixVersion;
rmversion = version
//
if (releaseInformation[branch].milestones) {
@@ -118,59 +126,59 @@
// other named version
rmversion = rmversion+'-'+value['version']
}
- }
+ }
}
- }
+ }
}
- }
+ }
}
stage ('Master build') {
tools {
jdk tooling.jdktool
- }
+ }
when {
branch 'master'
}
stages {
stage ('build javadoc') {
steps {
- withAnt(installation: tooling.myAnt) {
+ withAnt(installation: tooling.myAnt) {
sh "ant getallmavencoordinates"
sh "ant build-nbms"
sh "ant build-source-zips"
sh "ant build-javadoc -Djavadoc.web.zip=${env.WORKSPACE}/WEBZIP.zip"
archiveArtifacts 'WEBZIP.zip'
- }
+ }
}
}
- stage (' Populate Snapshots') {
+ stage (' Populate Snapshots') {
when {
// thursday
expression { return Calendar.instance.get(Calendar.HOUR_OF_DAY) == 1 && Calendar.instance.get(Calendar.DAY_OF_WEEK) == 3}
}
steps {
- withAnt(installation: tooling.myAnt) {
+ 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.1.1: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 ${commonparam} -DnetbeansNbmDirectory=${netbeansbase}/nbms -DnetbeansInstallDirectory=${netbeansbase}/netbeans -DnetbeansSourcesDirectory=${netbeansbase}/build/source-zips -DnetbeansJavadocDirectory=${netbeansbase}/build/javadoc -DparentGAV=org.apache.netbeans:netbeans-parent:2 -DforcedVersion=${mavenVersion} -DskipInstall=true -DdeployId=apache.snapshots.https -DdeployUrl=https://repository.apache.org/content/repositories/snapshots"
- }
+ }
}
}
}
-
+
}
//}
}
-
+
}
stage ('Released javadoc rebuild') {
tools {
@@ -182,22 +190,22 @@
//branch pattern : "release\\d+",comparator:"REGEXP" wait for modern 1.4.1
expression { month !='Invalid'}
}
-
+
}
stages {
stage ('Archive Javadoc') {
steps {
-
- withAnt(installation: tooling.myAnt) {
+
+ withAnt(installation: tooling.myAnt) {
sh "ant"
sh "ant build-javadoc -Djavadoc.web.zip=${env.WORKSPACE}/WEBZIP.zip"
}
archiveArtifacts 'WEBZIP.zip'
-
+
}
}
}
-
+
}
stage ('Release preparation') {
tools {
@@ -212,9 +220,9 @@
}
steps {
script {
-
+
def clusterconfigs = [['platform','netbeans-platform'],['release','netbeans']]
-
+
if (votecandidate) {
versionpath = "${version}/vc${vote}/"
}
@@ -235,14 +243,14 @@
} else {
// we want to setup for release
// apidoc + repomaven + dist bundle
-
+
}
- }
- }
+ }
+ }
}*/
}
-
-
+
+
post {
cleanup {
cleanWs() // deleteDirs: true, notFailBuild: true, patterns: [[pattern: '**/.repository/**', type: 'INCLUDE']]
@@ -253,7 +261,7 @@
failure {
slackSend (channel:'#netbeans-builds', message:"FAILED: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' (${env.BUILD_URL})",color:'#FF0000')
}
-
+
}
}
}
@@ -264,7 +272,7 @@
def path = cluster[1]
stage("prepare ${clustername}") {
sh "rm -rf nbbuild/build"
-
+
sh "ant build-source-config -Dcluster.config=${clustername} -Dbuildnum=666"
script {
def targets = ['verify-libs-and-licenses','rat','build']
@@ -273,111 +281,115 @@
// prepare a clean subfolder target - clustername prefixed
sh "rm -rf ${target}-${clustername}-temp && mkdir ${target}-${clustername}-temp && unzip nbbuild/build/${clustername}*.zip -d ${target}-${clustername}-temp && cp .gitignore ${env.WORKSPACE}/${target}-${clustername}-temp"
def add = "";
- //
+ //
if (target=="build" && env.BRANCH_NAME!="release90") {
add=" -Ddo.build.windows.launchers=true"
}
-
+
// build the target on the cluster defined common to all
sh "ant -f ${target}-${clustername}-temp/build.xml ${target} -Dcluster.config=${clustername} ${add}"
-
+
// for verify-libs-and-licenses we only want the reports
if (target=='verify-libs-and-licenses') {
- junit "verify-libs-and-licenses-${clustername}-temp/nbbuild/build/verifylibsandlicenses.xml"
+ junit "verify-libs-and-licenses-${clustername}-temp/nbbuild/build/verifylibsandlicenses.xml"
}
-
+
// for rat we only want the reports (junit fail at the moment empty test)
if (target=='rat') {
// save report and test for rat and verify..
archiveArtifacts "rat-${clustername}-temp/nbbuild/build/rat-report.txt"
- junit testResults: "rat-${clustername}-temp/nbbuild/build/rat/*.xml" , allowEmptyResults:true
+ junit testResults: "rat-${clustername}-temp/nbbuild/build/rat/*.xml" , allowEmptyResults:true
}
-
+
// build target is more complex,
if (target=='build') {
// prepare versionned path
def versionnedpath = "/${path}/${versionpath}"
-
+
sh "mkdir -p dist${versionnedpath}"
// source
sh "cp nbbuild/build/*${clustername}*.zip dist${versionnedpath}${path}-${rmversion}-source.zip"
// binaries
sh "cp build-${clustername}-temp/nbbuild/*${clustername}*.zip dist${versionnedpath}${path}-${rmversion}-bin.zip"
-
+
// special case for release prepare bits, maven, javadoc installer
if (clustername == "release") {
-
+
// installer we prepare a folder so that release manager can build mac os on his own
sh "mkdir -p dist${versionnedpath}nbms"
sh "mkdir -p dist/installers"
sh "mkdir -p distpreparation${versionnedpath}installer"
-
+ sh "mkdir -p dist/vsix"
+
def installer = libraryResource 'org/apache/netbeans/installer.sh'
writeFile file: "distpreparation${versionnedpath}installer/installer.sh", text: installer
-
+
def installermac = libraryResource 'org/apache/netbeans/installermac.sh'
writeFile file: "distpreparation${versionnedpath}installer/installermac.sh", text: installermac
-
+
sh "chmod +x distpreparation${versionnedpath}installer/installer.sh"
-
+
sh "mkdir -p distpreparation${versionnedpath}installer/nbbuild/newbuild && cp build-${clustername}-temp/nbbuild/newbuild/* distpreparation${versionnedpath}installer/nbbuild/newbuild "
sh "mkdir -p distpreparation${versionnedpath}installer/nbbuild/installer && cp -r build-${clustername}-temp/nbbuild/installer distpreparation${versionnedpath}installer/nbbuild "
sh "mkdir -p distpreparation${versionnedpath}installer/nbi && cp -r build-${clustername}-temp/nbi distpreparation${versionnedpath}installer "
sh "cp build-${clustername}-temp/nbbuild/binaries-default-properties.xml distpreparation${versionnedpath}installer/nbbuild/binaries-default-properties.xml "
sh "mkdir -p distpreparation${versionnedpath}installer/nbbuild/build/ && cp -r build-${clustername}-temp/nbbuild/build/antclasses distpreparation${versionnedpath}installer/nbbuild/build/antclasses "
-
+
sh "mkdir -p distpreparation${versionnedpath}installer/nb/ide.launcher && cp -r build-${clustername}-temp/nb/ide.launcher/macosx distpreparation${versionnedpath}installer/nb/ide.launcher "
-
-
+
+
sh "cp build-${clustername}-temp/nbbuild/*${clustername}*.zip dist${versionnedpath}${path}-${rmversion}-bin.zip"
def binaryfile = "${env.WORKSPACE}/dist${versionnedpath}${path}-${rmversion}-bin.zip"
- def timestamp = sh(returnStdout: true, script: 'date +%y%m%d').trim()
-
+ def timestamp = sh(returnStdout: true, script: 'date +%y%m%d').trim()
+
sh "cd distpreparation${versionnedpath}installer && ./installer.sh ${binaryfile} ${version} ${timestamp}"
sh "cp distpreparation${versionnedpath}installer/dist/bundles/* dist/installers/ "
sh "rm -rf distpreparation${versionnedpath}installer/dist"
- archiveArtifacts 'distpreparation/**'
-
+ archiveArtifacts 'distpreparation/**'
+
// the installer phase is ok we should have installer for linux / windows + scripts and a bit of source to build macos later
-
-
+
+
// additionnal target to have maven ready
// javadoc build
sh "ant -f build-${clustername}-temp/build.xml build-nbms build-source-zips generate-uc-catalog -Dcluster.config=release -Ddo.build.windows.launchers=true"
- sh "ant -f build-${clustername}-temp/build.xml build-javadoc -Djavadoc.web.root='${apidocurl}' -Dmodules-javadoc-date='${date}' -Datom-date='${atomdate}' -Djavadoc.web.zip=${env.WORKSPACE}/WEBZIP.zip"
+ sh "ant -f build-${clustername}-temp/build.xml build-javadoc -Djavadoc.web.root='${apidocurl}' -Dmodules-javadoc-date='${date}' -Datom-date='${atomdate}' -Djavadoc.web.zip=${env.WORKSPACE}/WEBZIP.zip"
sh "cp -r build-${clustername}-temp/nbbuild/nbms/** dist${versionnedpath}nbms/"
-
+
archiveArtifacts 'WEBZIP.zip'
-
+
def localRepo = ".repository"
def netbeansbase = "build-${clustername}-temp/nbbuild"
sh "ant -f build-${clustername}-temp/build.xml getallmavencoordinates"
-
+
withMaven(maven:tooling.myMaven,jdk:tooling.jdktool,publisherStrategy: 'EXPLICIT',mavenLocalRepo: localRepo,options:[artifactsPublisher(disabled: true)])
{
sh "mvn org.apache.maven.plugins:maven-dependency-plugin:3.1.1:get -Dartifact=org.apache.netbeans.utilities:nb-repository-plugin:${repopluginversion} -Dmaven.repo.local=${env.WORKSPACE}/.repository -DremoteRepositories=apache.snapshots.https::::https://repository.apache.org/snapshots"
def commonparam = "-Dexternallist=${netbeansbase}/build/external.info"
//sh "mvn org.apache.netbeans.utilities:nb-repository-plugin:1.5:download ${commonparam} -DrepositoryUrl=https://repo.maven.apache.org/maven2"
sh "mvn org.apache.netbeans.utilities:nb-repository-plugin:${repopluginversion}:populate ${commonparam} -DnetbeansNbmDirectory=${netbeansbase}/nbms -DnetbeansInstallDirectory=${netbeansbase}/netbeans -DnetbeansSourcesDirectory=${netbeansbase}/build/source-zips -DnetbeansJavadocDirectory=${netbeansbase}/build/javadoc -DparentGAV=org.apache.netbeans:netbeans-parent:2 -DforcedVersion=${mavenVersion} -DskipInstall=true -DdeployUrl=file://${env.WORKSPACE}/mavenrepository"
- }
+ }
archiveArtifacts 'mavenrepository/**'
-
+
+ // make vsix available to dist to pickup (only for main release)
+ sh "ant -f build-${clustername}-temp/java/java.lsp.server build-vscode-ext -Dvsix.version=vsixversion"
+ sh "cp -r build-${clustername}-temp/java/java.lsp.server/build/*.vsix dist${versionnedpath}nbms/"
}
-
+
// do checksum
def extensions = ['*.zip','*.nbm','*.gz','*.jar','*.xml','*.license']
- for (String extension in extensions) {
+ for (String extension in extensions) {
sh "cd dist"+' && for z in $(find . -name "'+"${extension}"+'") ; do cd $(dirname $z) ; sha512sum ./$(basename $z) > $(basename $z).sha512; cd - >/dev/null; done '
}
-
- archiveArtifacts 'dist/**'
-
-
- }
+
+ archiveArtifacts 'dist/**'
+
+
+ }
}
}
}
}
- }
+ }
}