88# cf https://crontab.guru/#0_23_*_*_*
99schedules :
1010 - cron : " 0 23 * * *"
11- displayName : ' Chaincode Java Nightly Driver'
11+ displayName : ' Chaincode 1.4 Java Nightly Driver'
1212 branches :
1313 include :
14- - master
1514 - release-1.4
1615 always : true
1716
@@ -21,7 +20,6 @@ trigger:
2120 branches :
2221 include :
2322 - ' master'
24- - ' release-1.4'
2523 tags :
2624 include :
2725 - ' *'
@@ -31,8 +29,16 @@ trigger:
3129# this isn't set so command line output is given
3230#
3331variables :
34- component : fabric-chaincode-node
35- pipeline : ci
32+ - group : Chaincode_Java_Creds
33+ - group : JARSigningPublish
34+ - name : component
35+ value : fabric-chaincode-java
36+ - name : pipeline
37+ value : ci
38+ - name : NEXUS_REPO_URL
39+ value : nexus3.hyperledger.org:10003
40+ - name : PUSH_VERSION
41+ value : stable
3642
3743pool :
3844 vmImage : ' ubuntu-latest'
@@ -45,7 +51,9 @@ stages:
4551 jobs :
4652 - job : main
4753 steps :
48- - script : env
54+ - script : |
55+ env | sort
56+ java -version
4957 - task : Gradle@2
5058 inputs :
5159 workingDirectory : ' '
@@ -60,24 +68,101 @@ stages:
6068 - task : PublishCodeCoverageResults@1
6169 inputs :
6270 summaryFileLocation : ' $(System.DefaultWorkingDirectory)/**/fabric-chaincode-shim/build/reports/jacoco/test/jacocoTestReport.xml'
71+ - task : PublishCodeCoverageResults@1
72+ inputs :
73+ summaryFileLocation : " $(System.DefaultWorkingDirectory)/**/fabric-chaincode-shim/build/reports/jacoco/test/jacocoTestReport.xml"
74+ # Copy the built artifacts to the staging directory, tgz, and the docker image
75+ - script : |
76+ set -ev
77+ ./gradlew publishToMavenLocal
78+ tar -zcvf localmaven.tgz ${HOME}/.m2/repository/org/hyperledger
79+ docker image save hyperledger/fabric-javaenv | gzip > $(Build.ArtifactStagingDirectory)/fabric-javaenv.tar.gz
80+ displayName: 'Package tgz and docker image'
81+ - task : PublishBuildArtifacts@1
82+ inputs :
83+ pathToPublish : localmaven.tgz
84+ artifactName : java-tgz
85+ - task : PublishBuildArtifacts@1
86+ inputs :
87+ pathToPublish : $(Build.ArtifactStagingDirectory)/fabric-javaenv.tar.gz
88+ artifactName : javaenv-docker-image
89+
90+
91+ # Publish the snapshot images etc.
92+ # Original source of these is https://github.com/hyperledger/ci-management/blob/master/jjb/fabric-chaincode-java/shell/include-raw-publish-docker-jar.sh
93+ - job :
94+ dependsOn : main
95+ condition : and(succeeded(),eq(variables['Build.Reason'], 'IndividualCI'))
96+ steps :
97+ - task : DownloadPipelineArtifact@2
98+ inputs :
99+ artifact : java-docker-image
100+ path : $(Build.SourcesDirectory)/build
101+ - script : |
102+ docker image load --input build/fabric-javaenv.tar.gz
103+ docker images
104+ # Publish docker images to nexus repository
105+ docker login ${DOCKER_REGISTRY_URL} --username=${DOCKER_REGISTRY_USERNAME} --password=${DOCKER_REGISTRY_PASSWORD}
106+ echo "Logged in to docker registry"
107+ # tag javaenv image to $PUSH_VERSION
108+ docker tag hyperledger/fabric-javaenv ${DOCKER_REGISTRY_URL}/fabric-javaenv:amd64-${MAPPED_VERSION}
109+ # push javaenv to nexus repository
110+ docker push ${DOCKER_REGISTRY_URL}/fabric-javaenv:amd64-${MAPPED_VERSION}
111+ env:
112+ DOCKER_REGISTRY_USERNAME: $(GITHUB_REGISTRY_USER)
113+ DOCKER_REGISTRY_PASSWORD: $(GITHUB_REGISTRY_PWD_TOKEN)
114+ DOCKER_REGISTRY_URL: docker.pkg.github.com/hyperledger/fabric-chaincode-java
115+ MAPPED_VERSION: $(PUSH_VERSION)
116+
117+ # As the next script is more complex and uses loops, run this descretely in a sh file
118+ # Publishing step for git tags
63119 - stage : Publish_tag
64120 condition : and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/tags'))
65121 jobs :
66- - job : update_version
122+ - job : publish_release
67123 steps :
124+
125+ - task : DownloadPipelineArtifact@2
126+ inputs :
127+ artifact : java-docker-image
128+ path : $(Build.SourcesDirectory)/build
129+ - task : DownloadSecureFile@1
130+ name : keyring
131+ inputs :
132+ secureFile : secring.gpg
68133 - script : |
69134 env | sort
70- echo "Update the version number"
71- echo "Make sure release notes are present"
72- echo "Make sure change history is present"
73- - job : npm_publish
74- steps :
75- - script : |
76- echo "Setup .npmrc"
77- echo "Use pipeline secret to login"
78- echo "publish"
79- - job : jsdoc_publish
80- steps :
135+
136+ # temporarily use this approach instead of the gittag
137+ VERSION=$(cat build.gradle | sed -n "s/version =.*'\(.*\)\(-SNAPSHOT\)\?'/\1/p"
138+ VERSION=${VERSION// }
139+ echo Version is :${VERSION}:
140+
141+
142+ docker image load --input build/fabric-javaenv.tar.gz
143+ docker images
144+ # Publish docker images to nexus repository
145+ docker login ${DOCKER_REGISTRY_URL} --username=${DOCKER_REGISTRY_USERNAME} --password=${DOCKER_REGISTRY_PASSWORD}
146+ echo "Logged in to docker registry"
147+ # tag javaenv image to $PUSH_VERSION
148+ docker tag hyperledger/fabric-javaenv fabric-javaenv:amd64-${VERSION}
149+ # push javaenv to nexus repository
150+ docker push fabric-javaenv:amd64-${VERSION}
151+ env:
152+ DOCKER_REGISTRY_USERNAME: $(DockerHub-Username)
153+ DOCKER_REGISTRY_PASSWORD: $(DockerHub-Password)
81154 - script : |
82- echo "checkout docs branch"
83- echo "checking"
155+ env | sort
156+
157+ # temporarily use this approach instead of the gittag
158+ VERSION=$(cat build.gradle | sed -n "s/version =.*'\(.*\)\(-SNAPSHOT\)\?'/\1/p"
159+ VERSION=${VERSION// }
160+ echo Version is :${VERSION}:
161+
162+ ./gradlew -Psigning.keyId=${SIGNING_ID} -Psigning.password=${SIGNING_PASSWORD} -Psigning.secretKeyRingFile=${KEYRING_FILE} -PossrhUsername=${OSSRH_USER} -PossrhPassword=${OSSRH_PASSWORD} uploadArchives
163+ env:
164+ SIGNING_ID: $(JAR-Signing-Id)
165+ SIGNING_PASSWORD: $(JAR-Signing-Password)
166+ KEYRING_FILE: $(keyring.secureFilePath)
167+ OSSRH_USER: $(OSSRH-User)
168+ OSSRH_PASSWORD: $(OSSRH-Password)
0 commit comments