1616 tags :
1717 - " *"
1818
19+ env :
20+ DOCKER_REGISTRY : ${{ github.repository_owner == 'hyperledger' && 'docker.io' || 'ghcr.io' }}
21+
1922jobs :
2023
2124 setup :
@@ -111,7 +114,8 @@ jobs:
111114 :fabric-chaincode-integration-test:build
112115 -xdependencyCheckAnalyze
113116
114-
117+ # -----------
118+ # Publishing steps only run on 'tag' builds
115119 publishjars :
116120 runs-on : ubuntu-latest
117121 needs : [build]
@@ -128,52 +132,70 @@ jobs:
128132 - name : Push to registry
129133 run : |
130134 set -xev
131-
132135 ./gradlew -Psigning.key=${SIGNING_KEY} -Psigning.password=${SIGNING_PASSWORD} -PossrhUsername=${OSSRH_USER} -PossrhPassword=${OSSRH_PASSWORD} publishAllPublicationsToReleaseRepository
133136 env :
134137 SIGNING_PASSWORD : ${{ secrets.OSSRH_GPG_SECRET_KEY_PASSWORD }}
135138 SIGNING_KEY : ${{ secrets.OSSRH_GPG_SECRET_KEY }}
136139 OSSRH_USER : ${{ secrets.OSSRH_USERNAME }}
137140 OSSRH_PASSWORD : ${{ secrets.OSSRH_TOKEN }}}
138141
139-
140142 publishdocker :
141143 runs-on : ubuntu-latest
142144 needs : [setup,build]
143145 if : startsWith(github.ref, 'refs/tags/')
146+ permissions :
147+ contents : read
148+ packages : write
144149 steps :
145150 - uses : actions/checkout@v3
146151 - uses : actions/setup-java@v3
147152 with :
148153 distribution : ' temurin'
149154 java-version : ' 11'
150155 cache : ' gradle'
151- - uses : actions/download-artifact@v3
156+ - name : Validate Gradle wrapper
157+ uses : gradle/wrapper-validation-action@e6e38bacfdf1a337459f332974bb2327a31aaf4b
158+ - name : Build the depencies needed for the image
159+ uses : gradle/gradle-build-action@67421db6bd0bf253fb4bd25b31ebb98943c375e1
152160 with :
153- name : javaenv-docker-image
154- path : build/
155- - name : Push to registry
156- run : |
157- set -xev
158- wget -qO "$PWD/manifest-tool" https://github.com/estesp/manifest-tool/releases/download/v1.0.0/manifest-tool-linux-amd64
159- chmod +x ./manifest-tool
161+ arguments : |
162+ :fabric-chaincode-docker:copyAllDeps -x dependencyCheckAnalyze
163+
164+ - name : Set up QEMU
165+ uses : docker/setup-qemu-action@v2
166+
167+ - name : Set up Docker Buildx
168+ uses : docker/setup-buildx-action@v2
169+ with :
170+ buildkitd-flags : --debug
171+ config-inline : |
172+ [worker.oci]
173+ max-parallelism = 1
160174
161- # just debuging
162- echo ${{ needs.setup.outputs.PACKAGE_VERSION }}
163- echo "Version strings are ${PACKAGE_VERSION} ${MINOR_PACKAGE_VERSION}"
175+ - name : Login to the ${{ env.DOCKER_REGISTRY }} Container Registry
176+ uses : docker/login-action@v2
177+ with :
178+ registry : ${{ env.DOCKER_REGISTRY }}
179+ username : ${{ env.DOCKER_REGISTRY == 'docker.io' && secrets.DOCKERHUB_USERNAME || github.actor }}
180+ password : ${{ env.DOCKER_REGISTRY == 'docker.io' && secrets.DOCKERHUB_TOKEN || secrets.GITHUB_TOKEN }}
181+
182+ - name : Docker meta
183+ id : meta
184+ uses : docker/metadata-action@v4
185+ with :
186+ images : ${{ env.DOCKER_REGISTRY }}/${{ github.repository_owner }}/fabric-javaenv
187+ tags : |
188+ type=semver,pattern={{version}}
189+ type=semver,pattern={{major}}.{{minor}}
190+ type=semver,pattern={{major}}.{{minor}}.{{patch}}
191+ - name : Build and push ${{ matrix.COMPONENT }} Image
192+ id : push
193+ uses : docker/build-push-action@v3
194+ with :
195+ platforms : linux/amd64,linux/arm64
196+ file : fabric-chaincode-docker/Dockerfile
197+ context : fabric-chaincode-docker
198+ tags : ${{ steps.meta.outputs.tags }}
199+ push : ${{ github.event_name != 'pull_request' }}
200+ labels : ${{ steps.meta.outputs.labels }}
164201
165- docker image load --input build/fabric-javaenv.tar.gz
166- docker images
167- docker login ${DOCKER_REGISTRY_URL} --username=${DOCKER_REGISTRY_USERNAME} --password=${DOCKER_REGISTRY_PASSWORD}
168- echo "Logged in to docker registry"
169- # tag javaenv image to PACKAGE_VERSION
170- docker tag hyperledger/fabric-javaenv hyperledger/fabric-javaenv:amd64-${PACKAGE_VERSION}
171- # push javaenv to repository
172- docker push hyperledger/fabric-javaenv:amd64-${PACKAGE_VERSION}
173- ./manifest-tool push from-args --platforms linux/amd64 --template "hyperledger/fabric-javaenv:amd64-${PACKAGE_VERSION}" --target "hyperledger/fabric-javaenv:${PACKAGE_VERSION}"
174- ./manifest-tool push from-args --platforms linux/amd64 --template "hyperledger/fabric-javaenv:amd64-${PACKAGE_VERSION}" --target "hyperledger/fabric-javaenv:${MINOR_PACKAGE_VERSION}"
175- env :
176- DOCKER_REGISTRY_USERNAME : ${{ secrets.DOCKERHUB_USERNAME }}
177- DOCKER_REGISTRY_PASSWORD : ${{ secrets.DOCKERHUB_TOKEN }}
178- PACAKGE_VERSION : ${{ needs.setup.outputs.PACKAGE_VERSION }}
179- MINOR_PACKAGE_VERSION : ${{ needs.setup.outputs.MINOR_PACKAGE_VERSION }}
0 commit comments