fix(dmsg): restore proxyproto USE policy (v0.15 REQUIRE default broke dmsg data-plane fleet-wide) #318
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # Phase 5 of the #1525 IPv6 plan: a CI lane that BUILDS and RUNS a | |
| # dual-stack dmsg deployment on a docker bridge configured for both | |
| # IPv4 and IPv6, then asserts, at the wire level, that dmsg works over | |
| # IPv6 — the crown jewel being a full dmsg Noise handshake completed | |
| # straight to the server's IPv6 endpoint. | |
| # | |
| # This replaces the earlier compose-syntax-only check: the images are | |
| # built from source via a self-contained Dockerfile (no docker_build.sh | |
| # / image_tag / base_image prerequisite), the stack is brought up, and | |
| # docker/dmsg/scripts/assert-ipv6-e2e.sh runs the v6 assertions. | |
| # | |
| # Runs in addition to the existing Test lane in test.yml; the v4-only | |
| # path there continues to validate the backward-compat case (visor | |
| # with no RemoteAddrV6, server with no AddressV6 — the pre-#1525 | |
| # semantics). | |
| # | |
| # Trigger: PRs that touch the IPv6 surface, or anything under | |
| # pkg/dmsg / pkg/address-resolver / pkg/transport/network / the | |
| # v6-aware compose + config + workflow files themselves. Avoids waking | |
| # this lane for changes that can't affect v6 (docs, CI for other lanes). | |
| on: | |
| pull_request: | |
| paths: | |
| - 'pkg/dmsg/**' | |
| - 'pkg/address-resolver/**' | |
| - 'pkg/transport/network/**' | |
| - 'pkg/services/dmsgsrv/**' | |
| - 'pkg/services/dmsgdisc/**' | |
| - 'cmd/dmsg/**' | |
| - 'docker/dmsg/**' | |
| - 'docker/config/dmsg-server-v6.json' | |
| - 'docker/config/services-dmsg-v6.json' | |
| - '.github/workflows/test-ipv6.yml' | |
| workflow_dispatch: | |
| name: Test IPv6 dual-stack | |
| jobs: | |
| ipv6-e2e: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 30 | |
| steps: | |
| - uses: actions/checkout@v5 | |
| with: | |
| fetch-depth: 0 | |
| fetch-tags: true | |
| # Docker has IPv6 support compiled in but daemon-level IPv6 is | |
| # off by default on ubuntu-latest runners. Enable it before the | |
| # compose stack tries to allocate v6 addresses on the bridge. | |
| - name: Enable Docker IPv6 | |
| run: | | |
| set -eux | |
| sudo bash -c 'cat > /etc/docker/daemon.json <<EOF | |
| { | |
| "ipv6": true, | |
| "fixed-cidr-v6": "fd00:dead:cafe::/64", | |
| "experimental": false | |
| } | |
| EOF' | |
| sudo systemctl restart docker | |
| docker info | grep -i ipv6 || true | |
| # Build the self-contained image once (skywire + dmsgprobe from | |
| # source). Both compose services reference this tag, so the | |
| # subsequent `up` needs no --build and won't rebuild. | |
| - name: Build dmsg dual-stack image | |
| run: | | |
| set -eux | |
| docker build \ | |
| -f docker/dmsg/images/dmsg-e2e/Dockerfile \ | |
| -t skywire-dmsg-e2e:local . | |
| - name: Validate dual-stack compose config | |
| working-directory: docker/dmsg | |
| run: | | |
| set -eux | |
| docker compose -f docker-compose.e2e-v6.yml config > /tmp/compose-rendered.yml | |
| # Sanity: rendered output mentions both address families. | |
| grep -q '172.21.0.4' /tmp/compose-rendered.yml | |
| grep -q 'fd00:dead:beef::4' /tmp/compose-rendered.yml | |
| # The v6 server config must exist and set the v6 endpoint. | |
| grep -q '"public_address_v6"' ../config/dmsg-server-v6.json | |
| - name: Bring up the dual-stack dmsg stack | |
| run: | | |
| set -eux | |
| docker compose -f docker/dmsg/docker-compose.e2e-v6.yml up -d --wait | |
| - name: Assert dmsg works over IPv6 (wire-level) | |
| run: | | |
| set -eux | |
| bash docker/dmsg/scripts/assert-ipv6-e2e.sh | |
| - name: Dump logs on failure | |
| if: failure() | |
| run: | | |
| docker compose -f docker/dmsg/docker-compose.e2e-v6.yml ps || true | |
| docker compose -f docker/dmsg/docker-compose.e2e-v6.yml logs --tail=200 || true | |
| - name: Tear down | |
| if: always() | |
| run: | | |
| docker compose -f docker/dmsg/docker-compose.e2e-v6.yml down --remove-orphans -v || true |