-
Notifications
You must be signed in to change notification settings - Fork 88
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@9780b0c442fbb1117ed29e0efdff1e18412f7567
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@369eb591f429131d6889c46b94e711f089e6ca96
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@369eb591f429131d6889c46b94e711f089e6ca96
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@369eb591f429131d6889c46b94e711f089e6ca96
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@369eb591f429131d6889c46b94e711f089e6ca96
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 }}