v2 / .github / workflows / websockets_ci.yml
102 lines · 88 sloc · 3.33 KB · a51ed8416224e15d17196584165f9fae71ec613f
Raw
1name: Websockets CI
2
3on:
4 push:
5 paths-ignore:
6 - '**.md'
7 - '**.yml'
8 - '!**/websockets_ci.yml'
9 - 'cmd/tools/**'
10 - '!cmd/tools/builders/**.v'
11 pull_request:
12 paths-ignore:
13 - '**.md'
14 - '**.yml'
15 - '!**/websockets_ci.yml'
16 - 'cmd/tools/**'
17 - '!cmd/tools/builders/**.v'
18
19concurrency:
20 group: websockets-${{ github.workflow }}-${{ github.ref == 'refs/heads/master' && github.sha || github.ref }}
21 cancel-in-progress: true
22
23jobs:
24 websocket_tests:
25 runs-on: ubuntu-24.04
26 timeout-minutes: 121
27 env:
28 VFLAGS: -cc tcc -no-retry-compilation
29 steps:
30 - uses: actions/checkout@v6
31 - uses: ./.github/actions/cache-apt-packages-action
32 - name: Build v
33 run: |
34 echo "$VFLAGS"
35 sudo ln -s "$PWD/thirdparty/tcc/tcc.exe" /usr/local/bin/tcc ## TODO: remove
36 make -j4 && ./v symlink
37 ./v -g -o v cmd/v
38 - name: Install dependencies
39 run: v retry -- sudo apt install --quiet -y libssl-dev
40 - name: v doctor
41 run: ./v doctor
42 - name: Run websockets tests
43 run: ./v -g test vlib/net/websocket/
44
45 ## Autobahn integrations tests
46 - name: Run autobahn services
47 run: docker compose -f ${{github.workspace}}/vlib/net/websocket/tests/autobahn/docker-compose.yml up -d
48
49 - name: Wait for the service to start
50 run: sleep 10s
51
52 - name: Build client test
53 run: docker exec autobahn_client "/src/v" "/src/vlib/net/websocket/tests/autobahn/autobahn_client.v"
54 - name: Run client test
55 run: docker exec autobahn_client "/src/vlib/net/websocket/tests/autobahn/autobahn_client"
56
57 - name: Build client wss test
58 run: docker exec autobahn_client "/src/v" "/src/vlib/net/websocket/tests/autobahn/autobahn_client_wss.v"
59
60 - name: Run client wss test
61 run: docker exec autobahn_client "/src/vlib/net/websocket/tests/autobahn/autobahn_client_wss"
62 - name: Run server test
63 run: docker exec autobahn_server "wstest" "-m" "fuzzingclient" "-s" "/config/fuzzingclient.json"
64
65 - name: Copy reports
66 run: docker cp autobahn_server:/reports ${{github.workspace}}/reports
67 - name: Copy reports wss
68 run: docker cp autobahn_server_wss:/reports ${{github.workspace}}/reports_wss
69 - name: Test success
70 run: docker exec autobahn_server "python" "/check_results.py"
71 - name: Test success WSS
72 run: docker exec autobahn_server_wss "python" "/check_results.py"
73
74 - name: Publish all reports
75 uses: actions/upload-artifact@v7
76 with:
77 name: full report
78 path: ${{github.workspace}}/reports
79
80 - name: Publish report client
81 uses: actions/upload-artifact@v7
82 with:
83 name: client
84 path: ${{github.workspace}}/reports/clients/index.html
85
86 - name: Publish report server
87 uses: actions/upload-artifact@v7
88 with:
89 name: server
90 path: ${{github.workspace}}/reports/servers/index.html
91
92 - name: Publish all reports WSS
93 uses: actions/upload-artifact@v7
94 with:
95 name: full report wss
96 path: ${{github.workspace}}/reports_wss
97
98 - name: Publish report client wss
99 uses: actions/upload-artifact@v7
100 with:
101 name: client wss
102 path: ${{github.workspace}}/reports_wss/clients/index.html
103