-
-
Notifications
You must be signed in to change notification settings - Fork 414
137 lines (115 loc) · 4 KB
/
tests.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
name: rr_cli_tests
on:
push:
branches:
- master
- stable
pull_request:
jobs:
golangci-lint:
name: Golang-CI (lint)
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5 # action page: <https://github.com/actions/setup-go>
with:
go-version: stable
- name: Run linter
uses: golangci/[email protected]
with:
version: v1.60 # without patch version
only-new-issues: false # show only new issues if it's a pull request
args: -v --build-tags=race --timeout=10m
go-test:
name: Unit tests
runs-on: ubuntu-latest
steps:
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: stable
- name: Check out code
uses: actions/checkout@v4
with:
fetch-depth: 2 # Fixes codecov error 'Issue detecting commit SHA'
- name: Init Go modules Cache # Docs: <https://git.io/JfAKn#go---modules>
uses: actions/cache@v4
with:
path: ~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: ${{ runner.os }}-go-
- name: Install Go dependencies
run: go mod download
- name: Run Unit tests
run: go test -race -covermode=atomic -coverprofile /tmp/coverage.txt ./...
- name: Upload Coverage report to CodeCov
continue-on-error: true
uses: codecov/[email protected] # https://github.com/codecov/codecov-action
with:
file: /tmp/coverage.txt
build:
name: Build for ${{ matrix.os }}
runs-on: ubuntu-latest
needs: [ go-test ]
strategy:
fail-fast: false
matrix:
os: [ linux, darwin, windows, freebsd ]
steps:
- name: Set up Go
uses: actions/setup-go@v5 # action page: <https://github.com/actions/setup-go>
with:
go-version: stable
- name: Check out code
uses: actions/checkout@v4
- name: Init Go modules Cache # Docs: <https://git.io/JfAKn#go---modules>
uses: actions/cache@v4
with:
path: ~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: ${{ runner.os }}-go-
- name: Install Go dependencies
run: go mod download && go mod verify
- name: Generate version value
id: values # for PR this value will be `merge@__hash__`, SO: <https://stackoverflow.com/a/59780579/2252921>
run: |
echo "version=$(echo ${GITHUB_REF##*/} | sed -e 's/^[vV ]*//')" >> $GITHUB_OUTPUT
echo "timestamp=$(echo $(date +%FT%T%z))" >> $GITHUB_OUTPUT
- name: Compile binary file
env:
GOOS: ${{ matrix.os }}
GOARCH: amd64
CGO_ENABLED: 0
LDFLAGS: -s
-X github.com/roadrunner-server/roadrunner/v2024/internal/meta.version=${{ steps.values.outputs.version }}
-X github.com/roadrunner-server/roadrunner/v2024/internal/meta.buildTime=${{ steps.values.outputs.timestamp }}
run: go build -pgo=roadrunner.pprof -trimpath -ldflags "$LDFLAGS" -o ./rr ./cmd/rr
- name: Try to execute
if: matrix.os == 'linux'
run: ./rr -v
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: rr-${{ matrix.os }}
path: ./rr
if-no-files-found: error
retention-days: 10
docker-image:
name: Build docker image
runs-on: ubuntu-latest
needs: [ go-test ]
steps:
- name: Check out code
uses: actions/checkout@v4
- name: Build image
run: docker build -t rr:local -f ./Dockerfile .
- name: Try to execute
run: docker run --rm rr:local -v
- uses: aquasecurity/[email protected] # action page: <https://github.com/aquasecurity/trivy-action>
with:
image-ref: rr:local
format: "table"
severity: HIGH,CRITICAL
exit-code: 1