name: Websockets CI on: push: paths-ignore: - '**.md' - '**.yml' - '!**/websockets_ci.yml' - 'cmd/tools/**' - '!cmd/tools/builders/**.v' pull_request: paths-ignore: - '**.md' - '**.yml' - '!**/websockets_ci.yml' - 'cmd/tools/**' - '!cmd/tools/builders/**.v' concurrency: group: websockets-${{ github.workflow }}-${{ github.ref == 'refs/heads/master' && github.sha || github.ref }} cancel-in-progress: true jobs: websocket_tests: runs-on: ubuntu-24.04 timeout-minutes: 121 env: VFLAGS: -cc tcc -no-retry-compilation steps: - uses: actions/checkout@v6 - uses: ./.github/actions/cache-apt-packages-action - name: Build v run: | echo "$VFLAGS" sudo ln -s "$PWD/thirdparty/tcc/tcc.exe" /usr/local/bin/tcc ## TODO: remove make -j4 && ./v symlink ./v -g -o v cmd/v - name: Install dependencies run: v retry -- sudo apt install --quiet -y libssl-dev - name: v doctor run: ./v doctor - name: Run websockets tests run: ./v -g test vlib/net/websocket/ ## Autobahn integrations tests - name: Run autobahn services run: docker compose -f ${{github.workspace}}/vlib/net/websocket/tests/autobahn/docker-compose.yml up -d - name: Wait for the service to start run: sleep 10s - name: Build client test run: docker exec autobahn_client "/src/v" "/src/vlib/net/websocket/tests/autobahn/autobahn_client.v" - name: Run client test run: docker exec autobahn_client "/src/vlib/net/websocket/tests/autobahn/autobahn_client" - name: Build client wss test run: docker exec autobahn_client "/src/v" "/src/vlib/net/websocket/tests/autobahn/autobahn_client_wss.v" - name: Run client wss test run: docker exec autobahn_client "/src/vlib/net/websocket/tests/autobahn/autobahn_client_wss" - name: Run server test run: docker exec autobahn_server "wstest" "-m" "fuzzingclient" "-s" "/config/fuzzingclient.json" - name: Copy reports run: docker cp autobahn_server:/reports ${{github.workspace}}/reports - name: Copy reports wss run: docker cp autobahn_server_wss:/reports ${{github.workspace}}/reports_wss - name: Test success run: docker exec autobahn_server "python" "/check_results.py" - name: Test success WSS run: docker exec autobahn_server_wss "python" "/check_results.py" - name: Publish all reports uses: actions/upload-artifact@v7 with: name: full report path: ${{github.workspace}}/reports - name: Publish report client uses: actions/upload-artifact@v7 with: name: client path: ${{github.workspace}}/reports/clients/index.html - name: Publish report server uses: actions/upload-artifact@v7 with: name: server path: ${{github.workspace}}/reports/servers/index.html - name: Publish all reports WSS uses: actions/upload-artifact@v7 with: name: full report wss path: ${{github.workspace}}/reports_wss - name: Publish report client wss uses: actions/upload-artifact@v7 with: name: client wss path: ${{github.workspace}}/reports_wss/clients/index.html