1- name : Publish Docker image
2- run-name : Publish branch ${{ github.ref_name }} to tag ${{ inputs.dockerTag }}
1+ name : Publish Docker image to GHCR
2+ run-name : Publish branch ${{ github.ref_name }} to tags ${{ inputs.dockerTags }}
33
44on :
55 workflow_dispatch :
66 inputs :
7- dockerTag :
8- description : ' Docker tag '
7+ dockerTags :
8+ description : ' Docker tags '
99 required : true
10- type : string
1110 baseImage :
1211 description : ' Base image'
1312 required : true
1413 default : ' eclipse-temurin:21-jre-noble'
15- type : string
1614
1715env :
1816 IMAGE_NAME : ghcr.io/${{ github.repository }}
@@ -27,15 +25,38 @@ jobs:
2725 id-token : write
2826 steps :
2927 - uses : actions/checkout@v4
28+ - uses : regclient/actions/regctl-installer@4d6888fcc4842c9630f60ebc91715a45dd9bd7a3
3029 - uses : proudust/gh-describe@70f72d4f6304ea053cf5a3d71c36211d5acc0c73
3130 id : ghd
31+ - run : |
32+ echo "base-image-digest=$(regctl manifest digest ${{ inputs.baseImage }})" >> "$GITHUB_OUTPUT"
33+ echo "node-version=$(echo ${{ steps.ghd.outputs.describe }} | cut -c 2-)" >> "$GITHUB_OUTPUT"
34+ id: versions
3235 - uses : actions/setup-java@v4
3336 with :
3437 distribution : ' temurin'
3538 java-version : ' 11'
3639 cache : ' sbt'
3740 - uses : sbt/setup-sbt@v1
38- - run : sbt --batch -Dproject.version=$(echo ${{ steps.ghd.outputs.describe }} | cut -c 2-) buildTarballsForDocker
41+ - run : sbt --batch -Dproject.version=${{ steps.versions.outputs.node-version }} buildTarballsForDocker
42+ - run : |
43+ {
44+ echo 'tags<<EOF'
45+ echo ${{ inputs.dockerTags }} | tr ',' '\n' | sed -e 's/^/type=raw,value=/'
46+ echo type=sha
47+ echo EOF
48+ } >> "$GITHUB_OUTPUT"
49+ {
50+ echo 'annotations<<EOF'
51+ echo org.opencontainers.image.source=https://github.com/${{ github.repository }}/tree/${{ github.sha }}/docker
52+ echo org.opencontainers.image.licenses=MIT
53+ echo org.opencontainers.image.description=Unit Zero Node
54+ echo org.opencontainers.image.base.name=${{ inputs.baseImage }}
55+ echo org.opencontainers.image.base.digest=${{ steps.versions.outputs.base-image-digest }}
56+ echo org.opencontainers.image.version=${{ steps.versions.outputs.node-version }}
57+ echo EOF
58+ } >> "$GITHUB_OUTPUT"
59+ id: tag-list
3960 - uses : docker/login-action@v3
4061 with :
4162 registry : ghcr.io
@@ -44,25 +65,30 @@ jobs:
4465 - uses : docker/setup-buildx-action@v3
4566 - uses : docker/metadata-action@v5
4667 id : meta
68+ env :
69+ DOCKER_METADATA_ANNOTATIONS_LEVELS : index,manifest-descriptor,index-descriptor
4770 with :
4871 images : ${{ env.IMAGE_NAME }}
49- flavor : latest=false
50- tags : |
51- type=sha
52- type=raw,value=${{ inputs.dockerTag }}
53- labels : |
54- org.opencontainers.image.source=https://github.com/${{ github.repository }}
55- org.opencontainers.image.licenses=MIT
56- org.opencontainers.image.description="Waves Node"
57- - uses : docker/build-push-action@v5
72+ flavor : latest=${{ contains(inputs.dockerTags, 'latest') }}
73+ tags : ${{ steps.tag-list.outputs.tags }}
74+ labels : ${{ steps.tag-list.outputs.annotations }}
75+ annotations : ${{ steps.tag-list.outputs.annotations }}
76+ - uses : docker/build-push-action@v6
5877 id : push
5978 with :
6079 context : ./docker
6180 platforms : linux/amd64,linux/arm64
6281 push : true
63- pull : true
64- build-args : baseImage=${{ inputs.baseImage }}
82+ build-args : baseImage=${{ inputs.baseImage }}@${{ steps.versions.outputs.base-image-digest }}
6583 tags : ${{ steps.meta.outputs.tags }}
6684 labels : ${{ steps.meta.outputs.labels }}
85+ annotations : ${{ steps.meta.outputs.annotations }}
6786 cache-from : type=gha
6887 cache-to : type=gha,mode=max
88+ - run : |
89+ {
90+ echo '## Image Info'
91+ echo '- This image: `${{ env.IMAGE_NAME }}@${{ steps.push.outputs.digest }}`'
92+ echo '- Base image: `${{ inputs.baseImage }}@${{ steps.versions.outputs.base-image-digest }}`'
93+ echo '- Version: `${{ steps.versions.outputs.node-version }}`'
94+ } >> $GITHUB_STEP_SUMMARY
0 commit comments