-
Notifications
You must be signed in to change notification settings - Fork 0
130 lines (118 loc) · 4.2 KB
/
main.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
name: Main
on:
push:
branches:
- main
jobs:
test-go:
runs-on: elisa-normal
timeout-minutes: 15
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Setup Go and Mage
uses: elisa-actions/setup-go-and-mage@v1
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to Quay
uses: docker/login-action@v3
with:
registry: quay.io
username: ${{ secrets.QUAY_USERNAME }}
password: ${{ secrets.QUAY_TOKEN }}
- uses: actions/setup-node@v4
with:
node-version: latest
- name: Verify dependencies
run: |
go mod tidy
git diff --exit-code -- go.mod go.sum || (echo "Deps are not up to date: run 'go mod tidy' before commit" && exit 1)
- run: mage go:lint
working-directory: ./godemo
- run: mage go:tidy
working-directory: ./godemo
- run: mage go:tidyAndVerify
working-directory: ./godemo
- run: mage go:vulnCheck
continue-on-error: true
working-directory: ./godemo
- run: mage go:licenses
working-directory: ./godemo
- run: mage go:unitTest
working-directory: ./godemo
- run: mage go:integrationTest
working-directory: ./godemo
- run: mage go:coverProfile
working-directory: ./godemo
- run: mage go:build
working-directory: ./godemo
- run: mage go:crossBuild
working-directory: ./godemo
- run: mage docker:build
working-directory: ./godemo
- run: mage docker:push
working-directory: ./godemo
env:
DOCKER_IMAGE_TAGS: sha-${{ github.sha }}
- run: mage docs:openAPI
working-directory: ./godemo
- run: |
if ($(mage yaml:lint)) ; then
echo "mage yaml:lint should have failed!"
exit 1
fi
working-directory: ./godemo
- run: mage yaml:fmt
working-directory: ./godemo
- run: mage yaml:lint
working-directory: ./godemo
- run: mage npm:test
working-directory: ./godemo
- run: mage npm:cleanBuild
working-directory: ./godemo
- run: mage npm:lint
working-directory: ./godemo
- run: test -x godemo/target/bin/linux/amd64/godemo
- run: test -f godemo/target/bin/linux/amd64/godemo.sha256
- run: test -x godemo/target/bin/darwin/amd64/godemo
- run: test -f godemo/target/bin/linux/amd64/godemo.sha256
- run: test -x godemo/target/bin/darwin/arm64/godemo
- run: test -f godemo/target/bin/linux/amd64/godemo.sha256
- run: test -x godemo/target/bin/windows/amd64/godemo
- run: test -f godemo/target/bin/windows/amd64/godemo.sha256
- run: test -f godemo/target/tests/bin/linux/amd64/godemo
- run: test -d godemo/target/tests/cover/unit/
- run: test -d godemo/target/tests/cover/int/
- run: test -f godemo/target/tests/cover/combined/cover.txt
- name: Validate merge coverage
working-directory: ./godemo
run: go tool cover -func target/tests/cover/combined/cover.txt | grep LoadSpec | grep '100.0%'
- run: docker images | grep 'quay.io/elisaoyj/sre-godemo'
- name: Notify failure
if: failure()
env:
MATTERMOST_WEBHOOK_URL: ${{ secrets.MATTERMOST_WEBHOOK_URL }}
MATTERMOST_TEXT: "${{ github.repository }} PR build. Please check [here](${{ github.event.pull_request.html_url }}/checks)."
run: |
send-to-mattermost
release-drafter:
runs-on: elisa-normal
timeout-minutes: 5
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 1
- uses: elisa-actions/release-drafter@v5
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
disable-releaser: false
disable-autolabeler: true
- name: Notify failure
if: failure()
env:
MATTERMOST_WEBHOOK_URL: ${{ secrets.MATTERMOST_WEBHOOK_URL }}
MATTERMOST_TEXT: "${{ github.repository }} [${{ github.event.ref }}](${{ github.event.repository.html_url }}/tree/${{ github.event.ref }}) release failed."
run: |
send-to-mattermost