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