-
-
Notifications
You must be signed in to change notification settings - Fork 34
138 lines (132 loc) · 4.28 KB
/
ci.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
name: ci
on:
push:
branches-ignore:
- "github-pages"
pull_request: {}
env:
# renovate: datasource=github-tags depName=golangci/golangci-lint
GOLANGCI_LINT_VERSION: "v1.61.0"
GOLANG_VERSION: "^1.23.0"
jobs:
changes:
runs-on: ubuntu-latest
outputs:
go: ${{ steps.filter.outputs.go }}
config: ${{ steps.filter.outputs.config }}
docker: ${{ steps.filter.outputs.docker }}
steps:
- uses: actions/checkout@v4
- uses: dorny/paths-filter@v3
id: filter
with:
token: ${{ secrets.GITHUB_TOKEN }}
filters: |
go:
- '**/*.go'
- 'go.mod'
- 'go.sum'
config:
- '.github/workflows/ci.yml'
- '.goreleaser.yml'
- '.golangci.yaml'
- 'Makefile'
docker:
- 'Dockerfile'
lint:
if: |
(needs.changes.outputs.go == 'true') ||
(needs.changes.outputs.config == 'true')
runs-on: ubuntu-latest
needs:
- changes
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: ${{ env.GOLANG_VERSION }}
- uses: golangci/golangci-lint-action@v6
with:
# Optional: version of golangci-lint to use in form of v1.2 or v1.2.3 or `latest` to use the latest version
version: ${{ env.GOLANGCI_LINT_VERSION }}
# Optional: working directory, useful for monorepos
# working-directory: somedir
# Optional: golangci-lint command line arguments.
args: --timeout=3600s
# Optional: show only new issues if it's a pull request. The default value is `false`.
# only-new-issues: true
# Optional: if set to true then the action will use pre-installed Go.
# skip-go-installation: true
# Optional: if set to true then the action don't cache or restore ~/go/pkg.
# skip-pkg-cache: true
# Optional: if set to true then the action don't cache or restore ~/.cache/go-build.
# skip-build-cache: true
build:
if: |
(needs.changes.outputs.go == 'true') ||
(needs.changes.outputs.config == 'true')
runs-on: ubuntu-latest
needs:
- changes
- lint
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: ${{ env.GOLANG_VERSION }}
- run: make code/build
build-cross:
if: |
(needs.changes.outputs.go == 'true') ||
(needs.changes.outputs.config == 'true')
runs-on: ubuntu-latest
env:
DOCKER_CLI_EXPERIMENTAL: "enabled"
needs:
- changes
- lint
steps:
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: ${{ env.GOLANG_VERSION }}
- run: make code/build-cross
test:
if: |
(needs.changes.outputs.go == 'true') ||
(needs.changes.outputs.config == 'true') ||
(needs.changes.outputs.docker == 'true')
runs-on: ubuntu-latest
needs:
- changes
- lint
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: ${{ env.GOLANG_VERSION }}
- run: |
if [ -f /usr/local/bin/dockerize ]; then
echo "dockerize found; skipping installation";
else
wget https://github.com/jwilder/dockerize/releases/download/v0.6.0/dockerize-linux-amd64-v0.6.0.tar.gz \
&& sudo tar -C /usr/local/bin -xzvf dockerize-linux-amd64-v0.6.0.tar.gz \
&& rm dockerize-linux-amd64-v0.6.0.tar.gz;
fi
- run: make setup/services
- run: dockerize -wait tcp://localhost:8088 -timeout 5m
- run: dockerize -wait tcp://localhost:8181 -timeout 5m
- run: docker logs keycloak
- run: make test/all
- run: make test/coverage
- run: go install github.com/mattn/goveralls@latest
- env:
COVERALLS_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: goveralls -coverprofile=c.out -service=github
- name: Publish Test Report
uses: mikepenz/action-junit-report@v4
if: success() || failure() # always run even if the previous step fails
with:
report_paths: "junit.xml"