-
Notifications
You must be signed in to change notification settings - Fork 12
129 lines (112 loc) · 4.29 KB
/
linux.yml
File metadata and controls
129 lines (112 loc) · 4.29 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
name: http
on:
push:
branches:
- master
- stable
pull_request:
branches:
- master
- stable
jobs:
http_test:
name: HTTP plugin (Go ${{ matrix.go }}, PHP ${{ matrix.php }}, OS ${{matrix.os}})
runs-on: ${{ matrix.os }}
timeout-minutes: 60
strategy:
matrix:
php: [ "8.5" ]
go: [ stable ]
os: [ "ubuntu-latest" ]
steps:
- name: Set up Go ${{ matrix.go }}
uses: actions/setup-go@v6 # action page: <https://github.com/actions/setup-go>
with:
go-version: ${{ matrix.go }}
- name: Set up PHP ${{ matrix.php }}
uses: shivammathur/setup-php@v2 # action page: <https://github.com/shivammathur/setup-php>
with:
php-version: ${{ matrix.php }}
extensions: sockets
- name: Check out code
uses: actions/checkout@v6
- name: Get Composer Cache Directory
id: composer-cache
run: |
cd tests/php_test_files
echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
- name: Init Composer Cache # Docs: <https://git.io/JfAKn#php---composer>
uses: actions/cache@v5
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-composer-${{ matrix.php }}-${{ hashFiles('**/composer.json') }}
restore-keys: ${{ runner.os }}-composer-
- name: Install Composer dependencies
run: cd tests/php_test_files && composer update --prefer-dist --no-progress --ansi
- name: Init Go modules Cache # Docs: <https://git.io/JfAKn#go---modules>
uses: actions/cache@v5
with:
path: ~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: ${{ runner.os }}-go-
- name: Create folders
run: |
mkdir ./tests/coverage-ci
- name: Install Go dependencies
run: go mod download
- name: Run HTTP unit tests with coverage
run: |
go test -timeout 20m -v -race -cover -tags=debug -failfast -coverpkg=./... -coverprofile=./tests/coverage-ci/httpu.out -covermode=atomic ./handler
- name: Run golang tests with coverage
run: |
cd tests
sudo apt update
sudo apt install -y libnss3-tools
curl -JLO "https://dl.filippo.io/mkcert/latest?for=linux/amd64"
chmod +x mkcert-v*-linux-amd64
sudo cp mkcert-v*-linux-amd64 /usr/local/bin/mkcert
mkcert -install
mkcert localhost 127.0.0.1 ::1
mkcert -client localhost 127.0.0.1 ::1
mkdir test-certs
cp -r localhost+2-client-key.pem localhost+2-client.pem localhost+2-key.pem localhost+2.pem test-certs/
cp -r $(mkcert -CAROOT)/rootCA.pem test-certs/
docker compose -f env/docker-compose-otel.yaml up -d
sleep 30
go test -timeout 20m -v -race -cover -tags=debug -failfast -coverpkg=./... -coverprofile=./coverage-ci/http.out -covermode=atomic attributes_test.go handler_test.go http_otlp_test.go http_plugin2_test.go http_plugin3_test.go http_plugin4_test.go http_plugin_test.go uploads_test.go
docker compose -f env/docker-compose-otel.yaml down
- name: Archive code coverage results
uses: actions/upload-artifact@v7
with:
name: coverage
path: ./tests/coverage-ci
codecov:
name: Upload codecov
runs-on: ubuntu-latest
needs:
- http_test
timeout-minutes: 60
steps:
- name: Check out code
uses: actions/checkout@v6
- name: Download code coverage results
uses: actions/download-artifact@v8
with:
name: coverage
path: coverage
- run: |
echo 'mode: atomic' > summary.txt
tail -q -n +2 coverage/*.out >> summary.txt
awk '
NR == 1 { print; next }
/^github\.com\/roadrunner-server\/http\/v6\// {
sub(/^github\.com\/roadrunner-server\/http\/v6\//, "", $0)
print
}
' summary.txt > summary.filtered.txt
mv summary.filtered.txt summary.txt
- name: upload to codecov
uses: codecov/codecov-action@v5 # Docs: <https://github.com/codecov/codecov-action>
with:
files: summary.txt
fail_ci_if_error: false