Skip to content

Commit 7d361d2

Browse files
authored
Merge pull request #281 from mbwhite/rel25/docker-build
Enable Docker builds
2 parents e8bcec5 + e73330f commit 7d361d2

File tree

1 file changed

+51
-29
lines changed

1 file changed

+51
-29
lines changed

.github/workflows/build.yml

Lines changed: 51 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@ on:
1616
tags:
1717
- "*"
1818

19+
env:
20+
DOCKER_REGISTRY: ${{ github.repository_owner == 'hyperledger' && 'docker.io' || 'ghcr.io' }}
21+
1922
jobs:
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

Comments
 (0)