-
Notifications
You must be signed in to change notification settings - Fork 15
131 lines (112 loc) · 3.42 KB
/
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
131
name: Release
on:
push:
tags:
- 'v*'
env:
GO_VERSION: 1.19
BUILD_PLATFORMS: linux/amd64,linux/arm64
permissions:
contents: write
packages: write
jobs:
goreleaser:
runs-on: ubuntu-latest
environment: production
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
token: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
- name: Fetch all tags
run: git fetch --force --tags
- name: Set up Go
uses: actions/setup-go@v4
with:
go-version: "${{ env.GO_VERSION }}"
- name: Get ldflags env values
run: |
echo "BUILD_TIMESTAMP=$(date +'%s')" >> $GITHUB_ENV
echo "VERSION=${{ github.ref_name }}" >> $GITHUB_ENV
echo "COMMIT_HASH=${{ github.sha }}" >> $GITHUB_ENV
- name: Run GoReleaser
uses: goreleaser/goreleaser-action@v3
with:
distribution: goreleaser
version: latest
args: release --clean
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
version:
runs-on: ubuntu-latest
environment: production
env:
CHART_PATH: ./deploy/charts/burrito
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
ref: main
- name: Bump VERSION file
run: |
echo ${{ github.ref_name }} > VERSION
- name: Bump Helm Chart versions
run: |
export CHART_VERSION=$(echo ${{ github.ref_name }} | sed 's/v//g')
export APP_VERSION=${{ github.ref_name }}
yq -i '.version = env(CHART_VERSION)' $CHART_PATH/Chart.yaml
yq -i '.appVersion = env(APP_VERSION)' $CHART_PATH/Chart.yaml
- name: Commit version to repository
uses: stefanzweifel/git-auto-commit-action@v4
with:
commit_message: "chore(release): bump version to ${{ github.ref_name }}"
push_options: --force
build-and-push:
name: Build & Push
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Get Build timestamp and branch name
run: |
echo "BUILD_TIMESTAMP=$(date +'%s')" >> $GITHUB_ENV
echo "VERSION=$( echo ${{ github.head_ref || github.ref_name }} | tr '/' '-' )" >> $GITHUB_ENV
- name: Docker tags & labels
id: meta
uses: docker/metadata-action@v4
with:
images: ghcr.io/${{ github.repository }}
# generate Docker tags:
# - type=raw,VERSION -> branch name
# - type=ref,event=tag -> tag name
# - type=sha,format=long,prefix= -> commit sha
tags: |
type=raw,${{ env.VERSION }}
type=ref,event=tag
type=sha,format=long,prefix=
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Login to GHCR
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v4
with:
push: true
provenance: false
platforms: ${{ env.BUILD_PLATFORMS }}
build-args: |
VERSION=${{ env.VERSION }}
BUILD_TIMESTAMP=${{ env.BUILD_TIMESTAMP }}
COMMIT_HASH=${{ github.sha }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max