-
Notifications
You must be signed in to change notification settings - Fork 1
182 lines (155 loc) · 5.66 KB
/
push.yml
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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
name: Push
on:
push:
branches:
- main
jobs:
push-operator:
name: Push Operator
if: "! contains(toJSON(github.event.commits.*.message), '[skip-ci]')"
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v3
with:
fetch-depth: 0
persist-credentials: false
# Run Tests
# - name: Test
# env:
# SKIP_INTEGRATION_TEST: "true"
# run: make test
- name: Generate Tag
id: generate_tag
uses: anothrNick/[email protected]
env:
GITHUB_TOKEN: ${{ secrets.STAKATER_GITHUB_TOKEN }}
WITH_V: false
DEFAULT_BUMP: patch
RELEASE_BRANCHES: main
DRY_RUN: true
- name: Generate image repository path
run: |
echo IMAGE_REPOSITORY=$(echo ghcr.io/stakater/${{ github.event.repository.name }} | tr '[:upper:]' '[:lower:]') >> $GITHUB_ENV
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Update Chart Version
env:
VERSION: ${{ steps.generate_tag.outputs.new_tag }}
run: make bump-chart
- name: Update Chart CRDs
run: make generate-crds
- name: Set up Helm
uses: azure/setup-helm@v3
with:
version: v3.8.2
- name: Login to Container Registry
uses: docker/login-action@v2
with:
registry: ghcr.io/stakater
username: ${{ secrets.GHCR_USERNAME }}
password: ${{ secrets.GHCR_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v4
id: build_and_push
with:
context: .
file: Dockerfile
pull: true
push: true
cache-to: type=inline
tags: |
${{ env.IMAGE_REPOSITORY }}:v${{ steps.generate_tag.outputs.new_tag }}
labels: |
org.opencontainers.image.source=${{ github.event.repository.clone_url }}
org.opencontainers.image.revision=${{ github.sha }}
# Build custom catalog for e2e tests
- name: Install CLI tools from OpenShift Mirror
uses: redhat-actions/openshift-tools-installer@v1
with:
source: "github"
operator-sdk: "v1.31.0"
- name: Build and Push Bundle and Catalog
run: make bundle bundle-build bundle-push catalog-build catalog-push
env:
IMAGE_DIGEST: ${{ steps.build_and_push.outputs.digest }}
VERSION: ${{ steps.generate_tag.outputs.new_tag }}
# Publish helm chart
- name: Publish Helm chart
run: |
helm dependency build ./charts/grafana-oncall
helm package ./charts/grafana-oncall --destination ./packaged-chart
helm push ./packaged-chart/*.tgz oci://ghcr.io/stakater/charts
rm -rf ./packaged-chart
# Commit back changes
- name: Commit files
run: |
git config --local user.email "[email protected]"
git config --local user.name "stakater-github-root"
git status
git add .
git reset bundle/
git commit -m "[skip-ci] Update artifacts" -a
- name: Push changes
uses: ad-m/github-push-action@master
with:
github_token: ${{ secrets.STAKATER_GITHUB_TOKEN }}
branch: main
- name: Push Latest Tag
uses: anothrNick/[email protected]
env:
GITHUB_TOKEN: ${{ secrets.STAKATER_GITHUB_TOKEN }}
DEFAULT_BUMP: patch
RELEASE_BRANCHES: main
WITH_V: true
outputs:
image_repository: ${{ env.IMAGE_REPOSITORY }}
version: ${{ steps.generate_tag.outputs.new_tag }}
notify-success:
name: Notify Success
runs-on: ubuntu-latest
if: always() && (needs.push-operator.result == 'success')
needs:
- push-operator
steps:
- name: Comment on PR
uses: mshick/add-pr-comment@v2
if: always()
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
message-success: "@${{ github.actor }} Image is available for testing. `docker pull ${{ needs.push-operator.outputs.image_repository }}:v${{ needs.push-operator.outputs.version }}`"
message-failure: '@${{ github.actor }} Yikes! You better fix it before anyone else finds out! [Build](https://github.com/${{ github.repository }}/commit/${{ github.event.pull_request.head.sha }}/checks) has Failed!'
allow-repeats: true
- name: Notify Slack
uses: 8398a7/action-slack@v3
if: always()
with:
status: success
fields: repo,author,action,eventName,ref,workflow
env:
SLACK_WEBHOOK_URL: ${{ secrets.STAKATER_DELIVERY_SLACK_WEBHOOK }}
notify-failure:
name: Notify Failure
runs-on: ubuntu-latest
if: always() && (needs.push-operator.result != 'success')
needs:
- push-operator
steps:
- name: Comment on PR
uses: mshick/add-pr-comment@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
message: '@${{ github.actor }} Yikes! You better fix it before anyone else finds out! [Build](https://github.com/${{ github.repository }}/commit/${{ github.event.pull_request.head.sha }}/checks) has Failed!'
allow-repeats: true
- name: Notify Slack
uses: 8398a7/action-slack@v3
if: always() && (needs.push-operator.result != 'success') || (needs.operator-e2e-test.result != 'success')
with:
status: failure
fields: repo,author,action,eventName,ref,workflow
env:
SLACK_WEBHOOK_URL: ${{ secrets.STAKATER_DELIVERY_SLACK_WEBHOOK }}