Remove deprecated Debian and CentOS versions from CI and Makefile; up… #24
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
| --- | |
| on: | |
| push: | |
| pull_request: | |
| workflow_dispatch: | |
| name: Docker Test | |
| permissions: | |
| contents: read | |
| jobs: | |
| docker-test: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 15 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: | |
| - name: ubuntu-18.04 | |
| image: ubuntu:18.04 | |
| - name: ubuntu-20.04 | |
| image: ubuntu:20.04 | |
| - name: ubuntu-22.04 | |
| image: ubuntu:22.04 | |
| - name: ubuntu-24.04 | |
| image: ubuntu:24.04 | |
| - name: debian-11 | |
| image: debian:11 | |
| - name: debian-12 | |
| image: debian:12 | |
| - name: centos-stream-9 | |
| image: quay.io/centos/centos:stream9 | |
| - name: fedora-40 | |
| image: fedora:40 | |
| - name: fedora-41 | |
| image: fedora:41 | |
| - name: rocky-8 | |
| image: rockylinux:8 | |
| - name: rocky-9 | |
| image: rockylinux:9 | |
| - name: almalinux-8 | |
| image: almalinux:8 | |
| - name: almalinux-9 | |
| image: almalinux:9 | |
| - name: archlinux | |
| image: archlinux:latest | |
| - name: oraclelinux-8 | |
| image: oraclelinux:8 | |
| - name: oraclelinux-9 | |
| image: oraclelinux:9 | |
| - name: amazonlinux-2 | |
| image: amazonlinux:2 | |
| - name: amazonlinux-2023 | |
| image: amazonlinux:2023 | |
| name: ${{ matrix.os.name }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Docker Buildx | |
| uses: docker/setup-buildx-action@v3 | |
| - name: Build server image | |
| run: | | |
| docker build \ | |
| --build-arg BASE_IMAGE=${{ matrix.os.image }} \ | |
| -t openvpn-server \ | |
| -f test/Dockerfile.server . | |
| - name: Build client image | |
| run: docker build -t openvpn-client -f test/Dockerfile.client . | |
| - name: Create Docker network | |
| run: docker network create --subnet=172.28.0.0/24 vpn-test | |
| - name: Create shared volume | |
| run: docker volume create shared-config | |
| - name: Start OpenVPN server | |
| run: | | |
| docker run -d \ | |
| --name openvpn-server \ | |
| --hostname openvpn-server \ | |
| --cap-add=NET_ADMIN \ | |
| --device=/dev/net/tun:/dev/net/tun \ | |
| --sysctl net.ipv4.ip_forward=1 \ | |
| --network vpn-test \ | |
| --ip 172.28.0.10 \ | |
| -v shared-config:/shared \ | |
| openvpn-server | |
| - name: Wait for server installation and startup | |
| run: | | |
| echo "Waiting for OpenVPN server to install and start..." | |
| for i in {1..60}; do | |
| if docker exec openvpn-server pgrep openvpn > /dev/null 2>&1; then | |
| echo "OpenVPN server is running!" | |
| break | |
| fi | |
| echo "Waiting... ($i/60)" | |
| sleep 5 | |
| # Show logs for debugging | |
| docker logs --tail 20 openvpn-server 2>&1 || true | |
| done | |
| # Final check | |
| if ! docker exec openvpn-server pgrep openvpn > /dev/null 2>&1; then | |
| echo "ERROR: OpenVPN server failed to start" | |
| docker logs openvpn-server | |
| exit 1 | |
| fi | |
| - name: Verify client config was generated | |
| run: | | |
| docker run --rm -v shared-config:/shared alpine \ | |
| ls -la /shared/ | |
| docker run --rm -v shared-config:/shared alpine \ | |
| cat /shared/client.ovpn | |
| - name: Start OpenVPN client and run tests | |
| run: | | |
| docker run \ | |
| --name openvpn-client \ | |
| --hostname openvpn-client \ | |
| --cap-add=NET_ADMIN \ | |
| --device=/dev/net/tun:/dev/net/tun \ | |
| --network vpn-test \ | |
| --ip 172.28.0.20 \ | |
| -v shared-config:/shared:ro \ | |
| openvpn-client & | |
| # Wait for tests to complete (look for success message) | |
| for i in {1..60}; do | |
| if docker logs openvpn-client 2>&1 | grep -q "ALL TESTS PASSED" | |
| then | |
| echo "Tests passed!" | |
| exit 0 | |
| fi | |
| if docker logs openvpn-client 2>&1 | grep -q "FAIL:"; then | |
| echo "Tests failed!" | |
| docker logs openvpn-client | |
| exit 1 | |
| fi | |
| echo "Waiting for tests... ($i/60)" | |
| sleep 2 | |
| done | |
| echo "Timeout waiting for tests" | |
| docker logs openvpn-client | |
| exit 1 | |
| - name: Show server logs | |
| if: always() | |
| run: docker logs openvpn-server 2>&1 || true | |
| - name: Show client logs | |
| if: always() | |
| run: docker logs openvpn-client 2>&1 || true | |
| - name: Cleanup | |
| if: always() | |
| run: | | |
| docker stop openvpn-server openvpn-client 2>/dev/null || true | |
| docker rm openvpn-server openvpn-client 2>/dev/null || true | |
| docker network rm vpn-test 2>/dev/null || true | |
| docker volume rm shared-config 2>/dev/null || true |