The frontend job was added while CI still targeted host-executor runners, so it never gained the `container:` key the lint and test jobs use. On the Docker executor it lands on a bare job container and fails the same way the Rust jobs did before this branch: `npm` is missing, the Chromium install shells out to `sudo apt-get`, and `npm run verify-generated` regenerates the Rust wire contracts, so it needs `cargo` too. Run it in the SDK image, which already ships Node.js, Chromium at the path the browser smoke test defaults to, and the pinned Rust toolchain. Installing Chromium per run is then redundant. Drop the job's trailing `reuse lint`. The SDK image deliberately carries nothing REUSE-related, and the separate `reuse` job lints the whole repository with the upstream action, generated assets included. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GdyUjuXejCEfiub675z6cz Signed-off-by: Stan Grams <sjg@haxx.space>
90 lines
2.7 KiB
YAML
90 lines
2.7 KiB
YAML
# SPDX-FileCopyrightText: 2026 Stan Grams <sjg@haxx.space>
|
|
#
|
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
# CI for the Docker-executor runner (VM). The lint, test and frontend jobs run
|
|
# inside the shared trx-rs SDK image (container/Containerfile), which bakes in
|
|
# the pinned Rust toolchain, Node.js, Chromium and all build dependencies. The
|
|
# reuse job uses the upstream Docker action, which the Docker executor launches
|
|
# as a sibling container.
|
|
|
|
name: CI
|
|
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
pull_request:
|
|
|
|
env:
|
|
CARGO_TERM_COLOR: always
|
|
# sccache: shared compilation cache persisted on the runner host (see the
|
|
# -v mount in runner-config.example.yaml). CARGO_INCREMENTAL=0 because
|
|
# sccache cannot cache incremental artifacts.
|
|
RUSTC_WRAPPER: sccache
|
|
CARGO_INCREMENTAL: "0"
|
|
SCCACHE_DIR: /sccache
|
|
SCCACHE_CACHE_SIZE: "20G"
|
|
|
|
jobs:
|
|
lint:
|
|
runs-on: ubuntu-latest
|
|
container: git.haxx.space/sjg/trx-rs/sdk:latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: rustfmt
|
|
run: cargo fmt --all -- --check
|
|
- name: clippy
|
|
run: cargo clippy --workspace --all-targets --all-features -- -D warnings
|
|
- name: sccache stats
|
|
if: always()
|
|
run: sccache --show-stats
|
|
|
|
test:
|
|
runs-on: ubuntu-latest
|
|
container: git.haxx.space/sjg/trx-rs/sdk:latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Build
|
|
run: cargo build --workspace --all-targets --locked
|
|
- name: Test
|
|
run: cargo test --workspace --locked
|
|
- name: sccache stats
|
|
if: always()
|
|
run: sccache --show-stats
|
|
|
|
frontend:
|
|
runs-on: ubuntu-latest
|
|
container: git.haxx.space/sjg/trx-rs/sdk:latest
|
|
defaults:
|
|
run:
|
|
working-directory: src/trx-client/trx-frontend/trx-frontend-http/frontend
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Cache npm downloads
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: ~/.npm
|
|
key: npm-${{ runner.os }}-${{ hashFiles('src/trx-client/trx-frontend/trx-frontend-http/frontend/package-lock.json') }}
|
|
restore-keys: |
|
|
npm-${{ runner.os }}-
|
|
- name: Install locked frontend dependencies
|
|
run: npm ci
|
|
- name: Type-check
|
|
run: npm run typecheck
|
|
- name: Lint
|
|
run: npm run lint
|
|
- name: Test
|
|
run: npm test
|
|
# Chromium comes from the SDK image at the path the smoke test defaults
|
|
# to, so there is nothing to install here.
|
|
- name: Browser smoke test
|
|
run: npm run test:browser
|
|
- name: Verify generated assets
|
|
run: npm run verify-generated
|
|
|
|
reuse:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: fsfe/reuse-action@v5
|