forked from grafana/grafana-operator
-
Notifications
You must be signed in to change notification settings - Fork 4
180 lines (169 loc) · 4.79 KB
/
pr-validation.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
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
name: PR Validation
on: pull_request
env:
NAME: "grafana-operator"
jobs:
go-lint:
runs-on: ubuntu-latest
steps:
- name: Clone repo
uses: actions/[email protected]
- name: Setup go
uses: actions/setup-go@v3
with:
go-version: "1.22"
- name: golangci-lint
uses: golangci/[email protected]
with:
version: "v1.46.2"
only-new-issues: true
fmt:
runs-on: ubuntu-latest
steps:
- name: Clone repo
uses: actions/[email protected]
- name: Setup go
uses: actions/setup-go@v3
with:
go-version: "1.22"
- name: Run fmt
run: |
make fmt
- name: Check if working tree is dirty
run: |
if [[ $(git status --porcelain) ]]; then
git diff
echo 'run make fmt and commit changes'
exit 1
fi
manifests:
runs-on: ubuntu-latest
steps:
- name: Clone repo
uses: actions/[email protected]
- name: Setup go
uses: actions/setup-go@v3
with:
go-version: "1.22"
- name: Run manifests
run: |
make manifests
- name: Check if working tree is dirty
run: |
if [[ $(git status --porcelain) ]]; then
git diff
echo 'run make manifests and commit changes'
exit 1
fi
api-docs:
runs-on: ubuntu-latest
steps:
- name: Clone repo
uses: actions/[email protected]
- name: Setup go
uses: actions/setup-go@v3
with:
go-version: "1.22"
- name: Run api-docs
run: |
make api-docs
- name: Check if working tree is dirty
run: |
if [[ $(git status --porcelain) ]]; then
git diff
echo 'run make api-docs and commit changes'
exit 1
fi
test:
runs-on: ubuntu-latest
steps:
- name: Clone repo
uses: actions/[email protected]
- name: Setup go
uses: actions/setup-go@v3
with:
go-version: "1.22"
- name: Run test
shell: bash
run: |
make test
- name: Check if working tree is dirty
run: |
if [[ $(git status --porcelain) ]]; then
git diff
echo 'run make test and commit changes'
exit 1
fi
build:
name: github super-linter
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/[email protected]
with:
fetch-depth: 0
- name: super-linter
uses: docker://ghcr.io/github/super-linter:slim-v4
env:
VALIDATE_ALL_CODEBASE: false
DEFAULT_BRANCH: master
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# VALIDATE_GITHUB_ACTIONS: true
VALIDATE_MARKDOWN: true
# VALIDATE_YAML: false
build-container:
runs-on: ubuntu-latest
env:
DOCKER_PLATFORMS: linux/amd64,linux/arm64,linux/s390x,linux/ppc64le
services:
registry:
image: registry:2
ports:
- 5000:5000
steps:
- name: Clone repo and checkout submodules
uses: actions/[email protected]
with:
submodules: recursive
- name: Setup go
uses: actions/setup-go@v3
with:
go-version: "1.22"
- name: Prepare
id: prep
run: |
VERSION=sha-${GITHUB_SHA::8}
if [[ $GITHUB_REF == refs/tags/* ]]; then
VERSION=${GITHUB_REF/refs\/tags\//}
fi
echo ::set-output name=BUILD_DATE::$(date -u +'%Y-%m-%dT%H:%M:%SZ')
echo ::set-output name=VERSION::${VERSION}
echo ::set-output name=BUILDARCH::$(go env GOARCH)
- name: Lint Dockerfile with hadolint
uses: hadolint/[email protected]
with:
dockerfile: Dockerfile
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v1
with:
driver-opts: network=host
- name: Build and push to ephemeral registry
uses: docker/build-push-action@v2
with:
builder: ${{ steps.buildx.outputs.name }}
platforms: ${{ env.DOCKER_PLATFORMS }}
push: true
tags: localhost:${{ job.services.registry.ports[5000] }}/${{ env.NAME }}:${{ steps.prep.outputs.VERSION }}
- name: Run Trivy vulnerability scanner
uses: aquasecurity/trivy-action@master
with:
image-ref: registry:${{ job.services.registry.ports[5000] }}/${{ env.NAME }}:${{ steps.prep.outputs.VERSION }}
format: "table"
exit-code: "1"
ignore-unfixed: true
severity: "CRITICAL,HIGH"
env:
TRIVY_NON_SSL: "true"