blob: 088fb4b912193a1b85fe2a9d23fc34b8d24bd04d (
plain)
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
|
name: tests
on:
push:
branches:
- master
- beta
- stable
tags-ignore:
- '**'
paths-ignore:
- '**.md'
pull_request:
paths-ignore:
- '**.md'
jobs:
validate-config-file:
name: Validate config file
runs-on: ubuntu-20.04
steps:
- name: Check out code
uses: actions/checkout@v2
- name: Setup nodejs
uses: actions/setup-node@v2
with:
node-version: '14'
- name: Install linter
run: npm install -g ajv-cli # Package page: <https://www.npmjs.com/package/ajv-cli>
- name: Run linter
run: ajv validate --all-errors --verbose -s ./schemas/config/2.0.schema.json -d ./.rr.yaml
golangci-lint:
name: Golang-CI (lint)
runs-on: ubuntu-20.04
steps:
- name: Check out code
uses: actions/checkout@v2
- name: Run linter
uses: golangci/golangci-lint-action@v2 # Action page: <https://github.com/golangci/golangci-lint-action>
with:
version: v1.43 # without patch version
only-new-issues: false # show only new issues if it's a pull request
args: --build-tags=safe --timeout=10m
go-test:
name: Unit tests
runs-on: ubuntu-20.04
steps:
- name: Set up Go
uses: actions/setup-go@v2
with:
go-version: 1.17.7
- name: Check out code
uses: actions/checkout@v2
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@v2
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-20.04
needs: [ golangci-lint, go-test ]
strategy:
fail-fast: false
matrix:
os: [ linux, darwin, windows ]
steps:
- name: Set up Go
uses: actions/setup-go@v2 # action page: <https://github.com/actions/setup-go>
with:
go-version: 1.17.7
- name: Check out code
uses: actions/checkout@v2
- name: Init Go modules Cache # Docs: <https://git.io/JfAKn#go---modules>
uses: actions/cache@v2
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 "::set-output name=version::`echo ${GITHUB_REF##*/}`@`echo ${GITHUB_SHA} | cut -c1-8`"
echo "::set-output name=timestamp::`date +%FT%T%z`"
- name: Compile binary file
env:
GOOS: ${{ matrix.os }}
GOARCH: amd64
CGO_ENABLED: 0
LDFLAGS: -s
-X github.com/roadrunner-server/roadrunner/v2/internal/meta.version=${{ steps.values.outputs.version }}
-X github.com/roadrunner-server/roadrunner/v2/internal/meta.buildTime=${{ steps.values.outputs.timestamp }}
run: go build -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@v2
with:
name: rr-${{ matrix.os }}
path: ./rr
if-no-files-found: error
retention-days: 90
docker-image:
name: Build docker image
runs-on: ubuntu-latest
needs: [ golangci-lint, go-test ]
steps:
- name: Check out code
uses: actions/checkout@v2
- name: Build image
run: docker build -t rr:local -f ./Dockerfile .
- name: Try to execute
run: docker run --rm rr:local -v
- name: Install grype
run: curl -sSfL https://raw.githubusercontent.com/anchore/grype/main/install.sh | sh -s -- -b /usr/local/bin
- name: Scan Image
run: grype rr:local
|