Skip to content

Commit 8369b36

Browse files
mbwhitejt-nti
authored andcommitted
GHA workflow
Signed-off-by: Matthew B White <[email protected]>
1 parent f96749b commit 8369b36

File tree

1 file changed

+128
-0
lines changed

1 file changed

+128
-0
lines changed

.github/workflows/build.yml

+128
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,39 @@ on:
1111
workflow_dispatch:
1212

1313
jobs:
14+
15+
setup:
16+
runs-on: ubuntu-latest
17+
outputs:
18+
PACKAGE_VERSION: ${{ steps.builddata.outputs.PACKAGE_VERSION }}
19+
MINOR_PACKAGE_VERSION: ${{ steps.builddata.outputs.MINOR_PACKAGE_VERSION }}
20+
steps:
21+
- uses: actions/checkout@v3
22+
- uses: actions/setup-java@v3
23+
with:
24+
distribution: 'temurin'
25+
java-version: '11'
26+
cache: 'gradle'
27+
- name: Validate Gradle wrapper
28+
uses: gradle/wrapper-validation-action@e6e38bacfdf1a337459f332974bb2327a31aaf4b
29+
30+
- name: BuildData
31+
id: builddata
32+
run: |
33+
set -xev
34+
env | sort
35+
36+
# handle full version number
37+
VERSION=$(./gradlew -q printVersionName | head -n 1 | cut -d'-' -f1)
38+
VERSION=${VERSION// }
39+
echo Current version in code is :${VERSION}:
40+
echo "PACKAGE_VERSION=${VERSION}" >> $GITHUB_OUTPUT
41+
# handle minor version
42+
MINOR_VERSION=$(echo $VERSION | sed 's/^\([0-9]\{1,\}\.[0-9]\{1,\}\)\..*/\1/')
43+
MINOR_VERSION=${MINOR_VERSION// }
44+
echo Current minor version in code is :${MINOR_VERSION}:
45+
echo "MINOR_PACKAGE_VERSION=${MINOR_VERSION}" >> $GITHUB_OUTPUT
46+
1447
build:
1548
runs-on: ubuntu-latest
1649
steps:
@@ -20,3 +53,98 @@ jobs:
2053
distribution: 'temurin'
2154
java-version: '11'
2255
cache: 'gradle'
56+
- name: Validate Gradle wrapper
57+
uses: gradle/wrapper-validation-action@e6e38bacfdf1a337459f332974bb2327a31aaf4b
58+
- name: Build with Gradle
59+
uses: gradle/gradle-build-action@67421db6bd0bf253fb4bd25b31ebb98943c375e1
60+
with:
61+
arguments: build
62+
- name: Create artifacts
63+
env:
64+
SIGNING_ID: ${{ secrets.SIGNING_ID }}
65+
SIGNING_PASSWORD: ${{ secrets.SIGNING_PASSWORD }}
66+
KEYRING_FILE: ${{ secrets.KEYRING_FILE }}
67+
run: |
68+
set -xev
69+
70+
echo $KEYRING_FILE > keyringfile.gpg
71+
./gradlew -Psigning.keyId=${SIGNING_ID} -Psigning.password=${SIGNING_PASSWORD} -Psigning.secretKeyRingFile=keyringfile.gpg publishShimJarPublicationToMavenLocal
72+
73+
tar -zcvf localmaven.tgz ${HOME}/.m2/repository/org/hyperledger
74+
docker image save hyperledger/fabric-javaenv | gzip > fabric-javaenv.tar.gz
75+
- name: Upload Docker image
76+
uses: actions/upload-artifact@v3
77+
with:
78+
name: javaenv-docker-image
79+
path: |
80+
fabric-javaenv.tar.gz
81+
- name: Upload JARs tgz
82+
uses: actions/upload-artifact@v3
83+
with:
84+
name: Java JARs
85+
path: |
86+
localmaven.tgz
87+
88+
publishjars:
89+
runs-on: ubuntu-latest
90+
needs: [build]
91+
if: startsWith(github.ref, 'refs/tags/')
92+
steps:
93+
- uses: actions/checkout@v3
94+
- uses: actions/setup-java@v3
95+
with:
96+
distribution: 'temurin'
97+
java-version: '11'
98+
cache: 'gradle'
99+
- name: Validate Gradle wrapper
100+
uses: gradle/wrapper-validation-action@e6e38bacfdf1a337459f332974bb2327a31aaf4b
101+
- name: Push to registry
102+
run: |
103+
echo $KEYRING_FILE > keyringfile.gpg
104+
./gradlew -Psigning.keyId=${SIGNING_ID} -Psigning.password=${SIGNING_PASSWORD} -Psigning.secretKeyRingFile=keyringfile.gpg -PossrhUsername=${OSSRH_USER} -PossrhPassword=${OSSRH_PASSWORD} publishAllPublicationsToReleaseRepository
105+
env:
106+
SIGNING_ID: ossrh
107+
SIGNING_PASSWORD: ${{ secrets.OSSRH_GPG_SECRET_KEY_PASSWORD }}
108+
KEYRING_FILE: ${{ secrets.OSSRH_GPG_SECRET_KEY }}
109+
OSSRH_USER: ${{ secrets.OSSRH_USERNAME }}
110+
OSSRH_PASSWORD: ${{ secrets.OSSRH_TOKEN }}}
111+
112+
113+
publishdocker:
114+
runs-on: ubuntu-latest
115+
needs: [setup,build]
116+
if: startsWith(github.ref, 'refs/tags/')
117+
steps:
118+
- uses: actions/checkout@v3
119+
- uses: actions/setup-java@v3
120+
with:
121+
distribution: 'temurin'
122+
java-version: '11'
123+
cache: 'gradle'
124+
- uses: actions/download-artifact@v3
125+
with:
126+
name: javaenv-docker-image
127+
path: build/
128+
- name: Push to registry
129+
run: |
130+
set -xev
131+
wget -qO "$PWD/manifest-tool" https://github.com/estesp/manifest-tool/releases/download/v1.0.0/manifest-tool-linux-amd64
132+
chmod +x ./manifest-tool
133+
134+
echo "Version strings are ${PACKAGE_VERSION} ${MINOR_PACKAGE_VERSION}"
135+
136+
docker image load --input build/fabric-javaenv.tar.gz
137+
docker images
138+
docker login ${DOCKER_REGISTRY_URL} --username=${DOCKER_REGISTRY_USERNAME} --password=${DOCKER_REGISTRY_PASSWORD}
139+
echo "Logged in to docker registry"
140+
# tag javaenv image to PACKAGE_VERSION
141+
docker tag hyperledger/fabric-javaenv hyperledger/fabric-javaenv:amd64-${PACKAGE_VERSION}
142+
# push javaenv to repository
143+
docker push hyperledger/fabric-javaenv:amd64-${PACKAGE_VERSION}
144+
./manifest-tool push from-args --platforms linux/amd64 --template "hyperledger/fabric-javaenv:amd64-${PACKAGE_VERSION}" --target "hyperledger/fabric-javaenv:${PACKAGE_VERSION}"
145+
./manifest-tool push from-args --platforms linux/amd64 --template "hyperledger/fabric-javaenv:amd64-${PACKAGE_VERSION}" --target "hyperledger/fabric-javaenv:${MINOR_PACKAGE_VERSION}"
146+
env:
147+
DOCKER_REGISTRY_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
148+
DOCKER_REGISTRY_PASSWORD: ${{ secrets.DOCKERHUB_TOKEN }}
149+
PACAKGE_VERSION: ${{ needs.setup.outputs.PACKAGE_VERSION }}
150+
MINOR_PACKAGE_VERSION: ${{ needs.setup.outputs.MINOR_PACKAGE_VERSION }}

0 commit comments

Comments
 (0)