9
9
GHCR_REGISTRY : ghcr.io/${{ github.repository_owner }}
10
10
DOCKER_REGISTRY : ${{ secrets.DOCKER_ORG }}
11
11
QUAY_REGISTRY : quay.io/${{ secrets.QUAY_ORG }}
12
- REGISTRY : quay.io/${{ secrets.QUAY_ORG }}
13
- metadata_flavor : latest=false
14
- metadata_tags : type=ref,event=tag
12
+ REGISTRY : ${{ env.QUAY_REGISTRY }}
13
+
15
14
jobs :
16
- manager-image :
17
- name : Build and push manager image
15
+
16
+ build-image :
17
+ name : Build and Push Image
18
18
runs-on : ubuntu-latest
19
+
20
+ permissions :
21
+ packages : write # needed to push docker image to ghcr.io
22
+
19
23
steps :
20
- - name : Checkout code
24
+
25
+ - name : Checkout git repo
21
26
uses : actions/checkout@v3
22
- with :
23
- fetch-depth : 0
24
- - uses : actions/setup-go@v4
25
- with :
26
- go-version-file : ' ./go.mod'
27
+
27
28
- name : Set up QEMU
28
29
uses : docker/setup-qemu-action@v2
30
+
29
31
- name : Set up Docker Buildx
30
32
uses : docker/setup-buildx-action@v2
31
33
32
- - name : Generate metadata
33
- id : meta
34
- uses : ./.github/actions/metadata
35
- with :
36
- docker_username : ${{ secrets.DOCKER_USERNAME }}
37
- quay_username : ${{ secrets.QUAY_USERNAME }}
38
- metadata_flavor : ${{ env.metadata_flavor }}
39
- metadata_tags : ${{ env.metadata_tags }}
40
-
41
- - name : Log in to ghcr.io
34
+ - name : Login to ghcr.io registry
42
35
uses : docker/login-action@v2
43
36
with :
44
37
registry : ghcr.io
@@ -64,58 +57,64 @@ jobs:
64
57
username : ${{ secrets.QUAY_USERNAME }}
65
58
password : ${{ secrets.QUAY_PASSWORD }}
66
59
60
+ - name : Docker meta
61
+ id : docker_meta
62
+ uses : docker/metadata-action@v4
63
+ with :
64
+ images : |
65
+ ${{ env.QUAY_REGISTRY }}/${{ env.IMAGE_NAME }}
66
+ ${{ env.GHCR_REGISTRY }}/${{ env.IMAGE_NAME }}
67
+ ${{ env.DOCKER_REGISTRY }}/${{ env.IMAGE_NAME }}
68
+ flavor : |
69
+ latest=auto
70
+ tags : |
71
+ type=semver,pattern={{version}}
72
+ type=ref,event=branch
73
+ type=ref,event=tag
74
+ type=ref,event=pr
75
+ type=sha
76
+
67
77
- name : Setup Env
68
78
run : |
69
79
DOCKER_BUILD_LDFLAGS="$(hack/version.sh)"
70
80
echo 'DOCKER_BUILD_LDFLAGS<<EOF' >> $GITHUB_ENV
71
81
echo $DOCKER_BUILD_LDFLAGS >> $GITHUB_ENV
72
82
echo 'EOF' >> $GITHUB_ENV
73
83
74
- - name : Build and push manager image
84
+ - name : Docker Build and Push
75
85
uses : docker/build-push-action@v4
76
86
with :
77
87
context : .
78
88
push : true
79
89
build-args : |
80
90
LDFLAGS=${{ env.DOCKER_BUILD_LDFLAGS }}
81
- tags : ${{ steps.meta.outputs.tags }}
82
- labels : ${{ steps.meta.outputs.labels }}
83
- platforms : linux/amd64,linux/arm64
84
- cache-from : type=gha, scope=${{ github.workflow }}
85
- cache-to : type=gha, mode=max, scope=${{ github.workflow }}
91
+ tags : ${{ steps.docker_meta.outputs.tags }}
92
+ labels : ${{ steps.docker_meta.outpus.labels }}
93
+ cache-from : type=gha
94
+ cache-to : type=gha,mode=max
95
+ platforms : linux/amd64, linux/arm64, linux/arm/v7
96
+
97
+ outputs :
98
+ image-tag : " ${{ steps.docker_meta.outputs.version }}"
86
99
87
100
release :
88
- name : Release
101
+ name : Create Release
89
102
runs-on : ubuntu-latest
90
- needs :
91
- - manager-image
103
+ needs : [build-image]
104
+ env :
105
+ TAG : ${{ needs.build-image.outputs.image-tag }}
106
+
92
107
steps :
93
- - name : Checkout code
108
+
109
+ - name : checkout
94
110
uses : actions/checkout@v3
111
+
95
112
- uses : actions/setup-go@v4
96
113
with :
97
114
go-version-file : ' ./go.mod'
98
- - uses : actions/cache@v3
99
- with :
100
- path : hack/tools/bin
101
- key : ${{ runner.os }}-tools-bin-release-${{ hashFiles('Makefile') }}
102
- restore-keys : |
103
- ${{ runner.os }}-tools-bin-release-
104
- ${{ runner.os }}-tools-bin-
105
-
106
- - name : Generate metadata
107
- id : meta
108
- uses : ./.github/actions/metadata
109
- with :
110
- docker_username : ${{ secrets.DOCKER_USERNAME }}
111
- quay_username : ${{ secrets.QUAY_USERNAME }}
112
- metadata_flavor : ${{ env.metadata_flavor }}
113
- metadata_tags : ${{ env.metadata_tags }}
114
115
115
- - name : manifest
116
+ - name : Make Release
116
117
run : make release
117
- env :
118
- TAG : ${{ steps.meta.outputs.version }}
119
118
120
119
- name : Generate Release Notes
121
120
run : |
@@ -127,11 +126,12 @@ jobs:
127
126
GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
128
127
OWNER : ${{ github.repository_owner }}
129
128
REPO : ${{ github.event.repository.name }}
129
+
130
130
- name : Create Release
131
131
uses : softprops/action-gh-release@v1
132
132
if : startsWith(github.ref, 'refs/tags/')
133
133
with :
134
134
files : out/release/*
135
135
body : ${{ env.RELEASE_NOTES }}
136
136
draft : false
137
- prerelease : false
137
+ prerelease : false
0 commit comments