-
Notifications
You must be signed in to change notification settings - Fork 81
130 lines (115 loc) · 4.6 KB
/
multi-arch-ghcr-on-release.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
name: Create and publish Docker multi-arch images to ghcr on release
on:
push:
branches:
- release-v*
- stable
env:
REGISTRY: ghcr.io
CONTROLLER_IMAGE_NAME: ${{ github.repository }}-controller
WATCHER_IMAGE_NAME: ${{ github.repository }}-watcher
WEBHOOK_IMAGE_NAME: ${{ github.repository }}-webhook
TKN_PAC_IMAGE_NAME: ${{ github.repository }}-tkn-pac
jobs:
build-and-push-image:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Log in to the Container registry
uses: docker/login-action@0d4c9c5ea7693da7b068278f7b52bda2a190a446
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Fetch version from branch name
id: fetch-version
run: |
releaseBranchFormat='release-v'
if [[ ${{ github.ref_name }} == ${releaseBranchFormat}* ]]; then
echo "version=${${{ github.ref_name }}#*-}" >> $GITHUB_OUTPUT
else
echo "version=${{ github.ref_name }}" >> $GITHUB_OUTPUT
fi
- name: Extract metadata (tags, labels) for Docker (Controller)
id: meta
uses: docker/metadata-action@8e5442c4ef9f78752691e2d8f8d19755c6f78e81
with:
images: ${{ env.REGISTRY }}/${{ env.CONTROLLER_IMAGE_NAME }}
tags: |
${{ steps.fetch-version.outputs.version }}
type=raw,value=latest,enable=${{ github.ref == format('refs/heads/{0}', 'stable') }}
- name: Build and push controller docker image
uses: docker/[email protected]
with:
context: .
build-args: |
BINARY_NAME=pipelines-as-code-controller
platforms: linux/amd64,linux/ppc64le,linux/arm64
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
- name: Extract metadata (tags, labels) for Docker (Watcher)
id: meta-watcher
uses: docker/metadata-action@8e5442c4ef9f78752691e2d8f8d19755c6f78e81
with:
images: ${{ env.REGISTRY }}/${{ env.WATCHER_IMAGE_NAME }}
tags: |
${{ steps.fetch-version.outputs.version }}
type=raw,value=latest,enable=${{ github.ref == format('refs/heads/{0}', 'stable') }}
- name: Build and push watcher docker image
uses: docker/[email protected]
with:
context: .
build-args: |
BINARY_NAME=pipelines-as-code-watcher
platforms: linux/amd64,linux/ppc64le,linux/arm64
push: true
tags: ${{ steps.meta-watcher.outputs.tags }}
labels: ${{ steps.meta-watcher.outputs.labels }}
- name: Extract metadata (tags, labels) for Docker (Webhook)
id: meta-webhook
uses: docker/metadata-action@8e5442c4ef9f78752691e2d8f8d19755c6f78e81
with:
images: ${{ env.REGISTRY }}/${{ env.WEBHOOK_IMAGE_NAME }}
tags: |
${{ steps.fetch-version.outputs.version }}
type=raw,value=latest,enable=${{ github.ref == format('refs/heads/{0}', 'stable') }}
- name: Build and push webhook docker image
uses: docker/[email protected]
with:
context: .
build-args: |
BINARY_NAME=pipelines-as-code-webhook
platforms: linux/amd64,linux/ppc64le,linux/arm64
push: true
tags: ${{ steps.meta-webhook.outputs.tags }}
labels: ${{ steps.meta-webhook.outputs.labels }}
- name: Extract metadata (tags, labels) for tkn-pac
id: meta-cli
uses: docker/metadata-action@8e5442c4ef9f78752691e2d8f8d19755c6f78e81
with:
images: ${{ env.REGISTRY }}/${{ env.TKN_PAC_IMAGE_NAME }}
tags: |
${{ steps.fetch-version.outputs.version }}
type=raw,value=latest,enable=${{ github.ref == format('refs/heads/{0}', 'stable') }}
- name: Build and push cli docker image
uses: docker/[email protected]
with:
context: .
build-args: |
BINARY_NAME=tkn-pac
platforms: linux/amd64,linux/ppc64le,linux/arm64
push: true
tags: ${{ steps.meta-cli.outputs.tags }}
labels: ${{ steps.meta-cli.outputs.labels }}