-
Notifications
You must be signed in to change notification settings - Fork 6
138 lines (117 loc) · 4.97 KB
/
linux.yml
File metadata and controls
138 lines (117 loc) · 4.97 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: kafka
on:
push:
branches:
- master
- stable
pull_request:
branches:
- master
- stable
jobs:
kafka_test:
name: Kafka plugin (Go ${{ matrix.go }}, PHP ${{ matrix.php }}, OS ${{matrix.os}})
runs-on: ${{ matrix.os }}
timeout-minutes: 60
strategy:
matrix:
php: [ "8.4" ]
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: Install Go dependencies
run: go mod download
- name: Run golang tests with coverage
run: |
cd tests
mkdir ./coverage-ci
sudo apt update
sudo apt install -y libnss3-tools default-jdk
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/
openssl pkcs12 -export -in test-certs/localhost+2.pem -inkey test-certs/localhost+2-key.pem -chain -CAfile test-certs/rootCA.pem -out test-certs/kafka.keystore.p12 -name localhost -password pass:confluent
keytool -importkeystore -deststorepass confluent -destkeystore test-certs/kafka.keystore.pkcs12 -srckeystore test-certs/kafka.keystore.p12 -deststoretype PKCS12 -srcstoretype PKCS12 -noprompt -srcstorepass confluent
keytool -keystore test-certs/kafka.truststore.pkcs12 -alias CARoot -import -file test-certs/rootCA.pem -storepass confluent -noprompt -storetype PKCS12
echo "confluent" > test-certs/kafka_keystore_creds
docker compose -f env/docker-compose-kafka.yaml -f env/docker-compose-kafka-tls.yaml up -d
sleep 40
if [ "$(docker ps -q -f status=running -f name=broker)" ]; then
echo "Kafka Docker container started successfully."
else
echo "Failed to start Kafka Docker container."
exit 1
fi
go test -timeout 20m -v -race -cover -tags=debug -failfast -coverpkg=$(cat pkgs.txt) -coverprofile=./coverage-ci/kafka.out -covermode=atomic jobs_kafka_test.go jobs_kafka_tls_test.go
docker compose -f env/docker-compose-kafka.yaml -f env/docker-compose-kafka-tls.yaml down
- name: Archive code coverage results
uses: actions/upload-artifact@v6
with:
name: coverage
path: ./tests/coverage-ci/kafka.out
codecov:
name: Upload codecov
runs-on: ubuntu-latest
needs:
- kafka_test
timeout-minutes: 60
steps:
- name: Check out code
uses: actions/checkout@v6
- name: Download code coverage results
uses: actions/download-artifact@v7
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\/kafka\/v5\// {
sub(/^github\.com\/roadrunner-server\/kafka\/v5\//, "", $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