Skip to content

ALPN-based h2 upstream dispatch + fix silently-dropped JS-wrapper config fields #65

ALPN-based h2 upstream dispatch + fix silently-dropped JS-wrapper config fields

ALPN-based h2 upstream dispatch + fix silently-dropped JS-wrapper config fields #65

Workflow file for this run

name: CI
on:
push:
branches: [main]
tags-ignore: ['**']
pull_request:
jobs:
build-linux:
name: Build – ${{ matrix.target }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- target: x86_64-unknown-linux-gnu
image: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-debian
artifact: symphony.linux-x64-gnu.node
- target: x86_64-unknown-linux-musl
image: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine
artifact: symphony.linux-x64-musl.node
- target: aarch64-unknown-linux-gnu
image: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-debian-aarch64
artifact: symphony.linux-arm64-gnu.node
- target: aarch64-unknown-linux-musl
image: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine
artifact: symphony.linux-arm64-musl.node
steps:
- uses: actions/checkout@v4
- name: Cache cargo registry
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
key: ${{ matrix.target }}-cargo-${{ hashFiles('Cargo.lock') }}
restore-keys: ${{ matrix.target }}-cargo-
- name: Build (${{ matrix.target }})
uses: addnab/docker-run-action@v3
with:
image: ${{ matrix.image }}
options: >-
-v ${{ github.workspace }}:/build
-v ${{ env.HOME }}/.cargo/registry:/usr/local/cargo/registry
-v ${{ env.HOME }}/.cargo/git:/usr/local/cargo/git
-w /build
run: |
set -e
rustup update stable
npm ci --ignore-scripts
if [ "${{ matrix.target }}" = "aarch64-unknown-linux-musl" ]; then
rustup target add aarch64-unknown-linux-musl
export CARGO_TARGET_AARCH64_UNKNOWN_LINUX_MUSL_LINKER=aarch64-linux-musl-gcc
export CC_aarch64_unknown_linux_musl=aarch64-linux-musl-gcc
fi
npm run build -- --target ${{ matrix.target }}
strip --strip-unneeded ${{ matrix.artifact }} 2>/dev/null || true
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.artifact }}
path: ${{ matrix.artifact }}
if-no-files-found: error
build-macos:
name: Build – macOS (arm64 + x64)
runs-on: macos-14
steps:
- uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: '24'
- name: Install Rust targets
run: |
rustup target add aarch64-apple-darwin
rustup target add x86_64-apple-darwin
- name: Cache cargo registry
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
key: macos-cargo-${{ hashFiles('Cargo.lock') }}
restore-keys: macos-cargo-
- name: Install dependencies
run: npm install --ignore-scripts
- name: Build aarch64-apple-darwin
run: npm run build -- --target aarch64-apple-darwin
- name: Build x86_64-apple-darwin
run: npm run build -- --target x86_64-apple-darwin
- name: Upload aarch64 artifact
uses: actions/upload-artifact@v4
with:
name: symphony.darwin-arm64.node
path: symphony.darwin-arm64.node
if-no-files-found: error
- name: Upload x64 artifact
uses: actions/upload-artifact@v4
with:
name: symphony.darwin-x64.node
path: symphony.darwin-x64.node
if-no-files-found: error
test:
name: Test – ${{ matrix.os }} Node ${{ matrix.node }}
runs-on: ${{ matrix.os }}
needs: [build-linux, build-macos]
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-latest
artifact: symphony.linux-x64-gnu.node
node: '20'
- os: ubuntu-latest
artifact: symphony.linux-x64-gnu.node
node: '22'
- os: macos-14
artifact: symphony.darwin-arm64.node
node: '20'
- os: macos-13
artifact: symphony.darwin-x64.node
node: '20'
steps:
- uses: actions/checkout@v4
- name: Setup Node ${{ matrix.node }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node }}
- name: Download artifact
uses: actions/download-artifact@v4
with:
name: ${{ matrix.artifact }}
- name: Install dependencies
run: npm ci
- name: Run tests
run: npm test
integration-test:
name: Integration Test – Harper UDS proxy
runs-on: ubuntu-latest
needs: [build-linux]
steps:
- uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: '24'
- name: Download artifact
uses: actions/download-artifact@v4
with:
name: symphony.linux-x64-gnu.node
- name: Install dependencies
run: npm install --ignore-scripts
- name: Checkout harper-pro
uses: actions/checkout@v4
with:
repository: ${{ github.repository_owner }}/harper-pro
path: harper-pro
token: ${{ secrets.HARPER_PRO_TOKEN || github.token }}
- name: Build harper
run: npm ci && npm run build
working-directory: harper-pro
- name: Run integration tests
run: npm run test:integration
env:
HARPER_INTEGRATION_TEST_INSTALL_SCRIPT: ${{ github.workspace }}/harper-pro/dist/bin/harper.js