-
Notifications
You must be signed in to change notification settings - Fork 1.2k
138 lines (119 loc) · 4.36 KB
/
project-check.yml
File metadata and controls
138 lines (119 loc) · 4.36 KB
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: Project Check
on:
push:
branches: [ master, release-* ]
pull_request:
branches: [ master, release-* ]
env:
GO_VERSION: 1.24.12
# Declare default permissions as read only.
permissions:
contents: read
jobs:
staticcheck:
runs-on: ubuntu-latest
steps:
- name: Set up Go
uses: actions/setup-go@7a3fe6cf4cb3a834922a1244abfce67bcef6a0c5 # v6.2.0
with:
go-version: ${{ env.GO_VERSION }}
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: dominikh/staticcheck-action@024238d2898c874f26d723e7d0ff4308c35589a2 # v1
with:
install-go: false
version: "2025.1.1"
lint:
runs-on: ubuntu-latest
env:
GOPATH: ${{ github.workspace }}
GO111MODULE: auto
defaults:
run:
working-directory: ${{ env.GOPATH }}/src/github.com/fluid-cloudnative/fluid
steps:
- name: Set up Go
uses: actions/setup-go@7a3fe6cf4cb3a834922a1244abfce67bcef6a0c5 # v6.2.0
with:
go-version: ${{ env.GO_VERSION }}
- name: Checkout code
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
path: ${{ env.GOPATH }}/src/github.com/fluid-cloudnative/fluid
- name: Lint golang code
uses: golangci/golangci-lint-action@55c2c1448f86e01eaae002a5a3a9624417608d84 # v6.5.2
with:
version: latest
args: --timeout 10m --verbose
- name: Lint preparation
run: |
arch=$(go env GOARCH)
os=$(go env GOOS)
curl -L https://get.helm.sh/helm-v3.11.1-${os}-${arch}.tar.gz | tar -xz -C /tmp
chmod u+x /tmp/${os}-${arch}/helm && sudo mv /tmp/${os}-${arch}/helm /usr/local/bin/helm
- name: CRD validation check
run: |
make update-crd
git status --porcelain
if [ -z "`git status --porcelain`" ]; then echo "CRD validation passed."; else echo "CRD validation failed. Please use 'make update-crd' to keep CRDs latest"; exit 1; fi
- name: OpenAPI validation check
run: |
make gen-openapi
echo $(git status --porcelain | grep generated)
if [ -z "$(git status --porcelain | grep generated)" ]; then echo "openapi validation passed."; else echo "openapi validation failed. Please use 'make gen-openapi' to update openapi"; exit 1; fi
- name: Code fmt check
run: |
gofmt -l ./pkg ./cmd ./api | grep . && echo "Please run "make fmt" to verify gofmt" && exit 1 || exit 0
- name: Project lint
run: |
test -z "$(go fmt ./... 2>/dev/null | tee /dev/stderr)" || (echo "please format Go code with 'gofmt'")
go vet ./...
find ./charts | grep Chart.yaml | xargs dirname | xargs helm lint
build:
strategy:
fail-fast: false
matrix:
runner: ["ubuntu-latest", "ubuntu-24.04-arm"]
env:
GOPATH: ${{ github.workspace }}
GO111MODULE: auto
defaults:
run:
working-directory: ${{ env.GOPATH }}/src/github.com/fluid-cloudnative/fluid
runs-on: ${{ matrix.runner }}
steps:
- name: Set up Go
uses: actions/setup-go@7a3fe6cf4cb3a834922a1244abfce67bcef6a0c5 # v6.2.0
with:
go-version: ${{ env.GO_VERSION }}
- name: Checkout code
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
path: ${{ env.GOPATH }}/src/github.com/fluid-cloudnative/fluid
- name: CI script
run: |
make build
unittest:
runs-on: ubuntu-latest
env:
GOPATH: ${{ github.workspace }}
GO111MODULE: auto
CI_TEST_FLAGS: -race -coverprofile=coverage.txt -covermode=atomic
defaults:
run:
working-directory: ${{ env.GOPATH }}/src/github.com/fluid-cloudnative/fluid
steps:
- name: Set up Go
uses: actions/setup-go@7a3fe6cf4cb3a834922a1244abfce67bcef6a0c5 # v6.2.0
with:
go-version: ${{ env.GO_VERSION }}
- name: Checkout code
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
path: ${{ env.GOPATH }}/src/github.com/fluid-cloudnative/fluid
- name: CI script
run: |
make test
- name: Upload coverage to Codecov
uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
with:
token: ${{ secrets.CODECOV_TOKEN }}