feat: process-per-connection architecture with full proxy support #307
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
| --- | |
| name: build | |
| on: | |
| push: | |
| branches: | |
| - master | |
| pull_request: | |
| branches: | |
| - master | |
| permissions: | |
| contents: read | |
| jobs: | |
| # Linux x86_64 - main CI | |
| linux: | |
| name: Linux x86_64 OTP-${{matrix.otp}} | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| otp: ["27.2", "28.0"] | |
| rebar3: ['3.24.0'] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: recursive | |
| - uses: erlef/setup-beam@v1 | |
| with: | |
| otp-version: ${{matrix.otp}} | |
| rebar3-version: ${{matrix.rebar3}} | |
| - uses: awalsh128/cache-apt-pkgs-action@latest | |
| with: | |
| packages: python3 python3-httpbin python3-pip cmake golang | |
| version: 1.1 | |
| - run: | | |
| pip3 install gunicorn | |
| gunicorn -b 127.0.0.1:8000 -b unix:httpbin.sock httpbin:app& | |
| - run: rebar3 xref | |
| - run: rebar3 eunit | |
| - run: rebar3 dialyzer | |
| # Linux x86_64 with QUIC support | |
| linux-quic: | |
| name: Linux x86_64 OTP-${{matrix.otp}} (QUIC) | |
| runs-on: ubuntu-latest | |
| if: ${{ false }} # Disabled until QUIC deps are vendored | |
| strategy: | |
| matrix: | |
| otp: ["27.2"] | |
| rebar3: ['3.24.0'] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: recursive | |
| - uses: erlef/setup-beam@v1 | |
| with: | |
| otp-version: ${{matrix.otp}} | |
| rebar3-version: ${{matrix.rebar3}} | |
| - uses: awalsh128/cache-apt-pkgs-action@latest | |
| with: | |
| packages: cmake libssl-dev golang | |
| version: 1.1 | |
| - name: Build with QUIC | |
| run: | | |
| make quic-deps || true | |
| rebar3 compile | |
| - run: rebar3 eunit | |
| # Linux ARM64 | |
| linux-arm64: | |
| name: Linux ARM64 OTP-${{matrix.otp}} | |
| runs-on: ubuntu-24.04-arm | |
| strategy: | |
| matrix: | |
| otp: ["27.2"] | |
| rebar3: ['3.24.0'] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: recursive | |
| - uses: erlef/setup-beam@v1 | |
| with: | |
| otp-version: ${{matrix.otp}} | |
| rebar3-version: ${{matrix.rebar3}} | |
| - uses: awalsh128/cache-apt-pkgs-action@latest | |
| with: | |
| packages: cmake golang | |
| version: 1.1 | |
| - run: rebar3 xref | |
| - run: rebar3 eunit | |
| # macOS ARM64 (Apple Silicon) | |
| macos: | |
| name: macOS ARM64 OTP-${{matrix.otp}} | |
| runs-on: macos-15 | |
| strategy: | |
| matrix: | |
| otp: ["27"] | |
| rebar3: ['3.24.0'] | |
| steps: | |
| - name: Install Erlang and Go | |
| env: | |
| HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK: "1" | |
| run: | | |
| brew update | |
| brew install erlang@${{ matrix.otp }} go | |
| echo "$(brew --prefix erlang@${{ matrix.otp }})/bin" >> $GITHUB_PATH | |
| - name: Install rebar3 | |
| run: | | |
| wget https://github.com/erlang/rebar3/releases/download/${{ matrix.rebar3 }}/rebar3 && chmod +x rebar3 | |
| sudo mv rebar3 /usr/local/bin/ && sudo chmod +x /usr/local/bin/rebar3 | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: recursive | |
| - run: make test | |
| # FreeBSD | |
| freebsd: | |
| name: FreeBSD 14.2 OTP-28 | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: recursive | |
| - name: Test on FreeBSD | |
| uses: vmactions/freebsd-vm@v1 | |
| with: | |
| release: "14.2" | |
| usesh: true | |
| prepare: | | |
| pkg install -y erlang-runtime28 rebar3 cmake git gmake go | |
| run: | | |
| # Ensure Erlang 28 is in PATH | |
| export PATH="/usr/local/lib/erlang28/bin:$PATH" | |
| echo "Erlang version:" | |
| erl -eval 'erlang:display(erlang:system_info(otp_release)), halt().' -noshell | |
| echo "Architecture:" | |
| uname -m | |
| git config --global --add safe.directory $GITHUB_WORKSPACE | |
| rebar3 eunit | |