Skip to content

Phase D3a: rename the shared C API infrastructure to streamr* names #587

Phase D3a: rename the shared C API infrastructure to streamr* names

Phase D3a: rename the shared C API infrastructure to streamr* names #587

Workflow file for this run

name: validate
env:
BRANCH_NAME: ${{ github.head_ref || github.ref_name }}
on:
push:
branches:
- main
pull_request:
branches:
- '*'
workflow_dispatch:
concurrency:
# head_ref is empty on push events, so all main pushes share one group —
# with unconditional cancel-in-progress every merge killed the previous
# main run mid-flight (observed twice on 2026-07-06), which also kept the
# build-tree caches from being saved. PR pushes still cancel their own
# superseded runs; main runs are left to finish.
group: build-${{ github.head_ref || github.ref_name }}
cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}
jobs:
install-lint-test:
strategy:
# Let each platform report its true status: one platform's failure
# must not cancel the others.
fail-fast: false
matrix:
# macos-26: current GA arm64 image, ships Xcode 26 (required for the
# iOS deployment target 26 SDK; macos-latest still maps to macOS 15).
# ubuntu-latest = 24.04: ubuntu-26.04 is still a preview image —
# revisit when GA.
os: [macos-26, ubuntu-latest, linux-arm64-runner]
# The standalone-package check (each package built in its own tree)
# validates packaging structure, which is host-independent — and
# the iOS job necessarily builds every package standalone (the
# XCFramework is assembled from the per-package outputs), so it
# carries that check. All validate legs build only the root tree
# and lint against its compile database (MODERNIZATION.md "After
# the consolidation: CI speed", item 1; owner decision 2026-07-06).
include:
- os: macos-26
install_extra: "--no-standalone"
- os: ubuntu-latest
install_extra: "--no-standalone"
- os: linux-arm64-runner
install_extra: "--no-standalone"
runs-on: ${{ matrix.os }}
env:
INSTALL_EXTRA_FLAGS: ${{ matrix.install_extra }}
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.ref }}
fetch-depth: 0
submodules: true
token: ${{ secrets.GITHUB_TOKEN }}
- name: install
uses: ./.github/workflows/reusable/cached-install
# The C++<->TS interop test (streamr-dht-test-ts-interop) runs the
# pinned @streamr/dht npm package in a child node process and needs a
# node runtime >= 20 on PATH.
- name: setup node for TS interop tests
uses: actions/setup-node@v4
with:
node-version: 22
- name: check proto sync with pinned TS reference
run:
./check-proto-sync.sh
shell: bash
- name: lint
run:
./lint.sh
shell: bash
- name: test
run:
./test.sh
shell: bash
# lint:
# needs: install
# runs-on: ubuntu-latest
# steps:
# - uses: actions/checkout@v4
# with:
# fetch-depth: 0
# - name: install
# uses: ./.github/workflows/reusable/cached-install
# - name: lint
# run:
# ./lint.sh
# shell: bash
# test:
# needs: install
# runs-on: ubuntu-latest
# steps:
# - uses: actions/checkout@v4
# with:
# fetch-depth: 0
# - name: install
# uses: ./.github/workflows/reusable/cached-install
# - name: test
# run:
# ./test.sh
# shell: bash