11name : Release
22
33on :
4- [ workflow_dispatch, push, pull_request ]
4+ push :
5+ tags :
6+ - v*
7+ branches :
8+ - main
9+ pull_request :
10+ branches :
11+ - main
12+ # workflow_dispatch:
13+ # inputs:
14+ # tag:
15+ # description: 'Tag to create'
16+ # required: true
17+ # default: 'v0.0.0'
18+ # version:
19+ # description: 'Version to create'
20+ # required: true
21+ # default: '0.0.0'
522permissions :
623 pull-requests : read
724 contents : read
1532 outputs :
1633 generated_version : ${{ steps.output-generated-version.outputs.generated_version }}
1734 image_tag : ${{ steps.generate_tag.outputs.image_tag }}
35+ image_tag_latest : ${{ steps.generate_tag.outputs.image_tag_latest }}
1836 tag_prefix : ${{ steps.generate_tag.outputs.tag_prefix }}
1937 permissions :
2038 contents : write
2442 name : Checkout
2543 uses : actions/checkout@v4
2644 with :
45+ fetch-tags : true
2746 fetch-depth : 0
2847 -
2948 name : Generate next version
4160 echo "generated_version=${{ steps.semantic-version.outputs.version }}" >> $GITHUB_OUTPUT
4261
4362 -
44- name : Version tag ${{ steps.semantic-version.outputs.version }} on main branch
45- if : ${{ github.ref == 'refs/heads/main' }}
63+ name : Version tag ${{ steps.semantic-version.outputs.version }} on main branch or tag
64+ if : ${{ github.ref == 'refs/heads/main' }} || startsWith(github.ref, 'refs/tags/v')
4665 shell : bash
4766 run : |
4867 echo "generated_tag=${{ steps.semantic-version.outputs.version }}" >> $GITHUB_ENV
6685 # image tag needs to be all lower case
6786 repo_name=$(echo ${{ github.repository }} | tr '[:upper:]' '[:lower:]')
6887 echo "image_tag=${{ env.OCI_REGISTRY }}/${repo_name}:${{ env.generated_tag }}" >> $GITHUB_OUTPUT
88+ echo "image_tag_latest=${{ env.OCI_REGISTRY }}/${repo_name}:latest" >> $GITHUB_OUTPUT
6989
7090 docker-image-release :
7191 needs : [generate-release-version]
83103 -
84104 uses : actions/checkout@v4
85105 -
86- uses : docker/setup-docker-action@v4.1 .0
106+ uses : docker/setup-docker-action@v4.3 .0
87107 -
88108 name : Login to GitHub Container Registry
89109 uses : docker/login-action@v3
@@ -100,12 +120,12 @@ jobs:
100120 docker image inspect ${{ needs.generate-release-version.outputs.image_tag }}-${{ runner.arch }}
101121 -
102122 name : Push image for ${{ matrix.os }}
103- if : github.event_name != 'pull_request'
123+ if : startsWith( github.ref, 'refs/tags/v')
104124 run : |
105125 docker push ${{ needs.generate-release-version.outputs.image_tag }}-${{ runner.arch }}
106126
107- create-release :
108- if : github.event_name == 'push' && github. ref == 'refs/heads/main'
127+ create-image- release :
128+ if : startsWith( github.ref, 'refs/tags/v')
109129 permissions :
110130 packages : write
111131 id-token : write
@@ -119,7 +139,7 @@ jobs:
119139 -
120140 uses : actions/checkout@v4
121141 -
122- uses : docker/setup-docker-action@v4.1 .0
142+ uses : docker/setup-docker-action@v4.3 .0
123143 -
124144 name : Login to GitHub Container Registry
125145 uses : docker/login-action@v3
@@ -136,19 +156,11 @@ jobs:
136156 --amend ${{ needs.generate-release-version.outputs.image_tag }}-ARM64
137157 docker manifest push ${{ needs.generate-release-version.outputs.image_tag }}
138158 docker manifest inspect ${{ needs.generate-release-version.outputs.image_tag }}
139- -
140- name : Release
141- env :
142- GH_TOKEN : ${{ github.token }}
143- run : |
144- sha=$(git rev-parse --short HEAD)
145- tag_value=${{ needs.generate-release-version.outputs.generated_version }}
146- if [ -z "${{ needs.generate-release-version.outputs.tag_prefix }}" ]; then
147- tag_value+="${{ github.ref_name }}-${sha}"
148- else
149- tag_value="${{ needs.generate-release-version.outputs.tag_prefix }}${{ needs.generate-release-version.outputs.generated_version }}"
150- fi
151- gh release create "${tag_value}" \
152- --title "Release ${tag_value}" \
153- --generate-notes \
154- --repo ${{ github.repository }}
159+
160+ docker manifest create \
161+ ${{ needs.generate-release-version.outputs.image_tag_latest }} \
162+ --amend ${{ needs.generate-release-version.outputs.image_tag }}-X64 \
163+ --amend ${{ needs.generate-release-version.outputs.image_tag }}-ARM64
164+ docker manifest push ${{ needs.generate-release-version.outputs.image_tag_latest }}
165+ docker manifest inspect ${{ needs.generate-release-version.outputs.image_tag_latest }}
166+
0 commit comments