Skip to content

builder: pin the nixos/nix base image by digest (#156) #385

builder: pin the nixos/nix base image by digest (#156)

builder: pin the nixos/nix base image by digest (#156) #385

Workflow file for this run

name: test
on:
push:
branches: [master, main]
pull_request:
concurrency:
group: test-${{ github.ref }}
cancel-in-progress: true
jobs:
unit:
name: unit + lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: astral-sh/setup-uv@v5
with:
enable-cache: true
- name: check workspace lock
run: |
uv lock --check
uv sync --locked --dry-run --all-packages --all-extras
# The whole uv workspace — core + every plugin member. Plugin
# tests (e.g. agentix.nix discovery) need the members installed.
- name: sync workspace
run: uv sync --locked --all-packages --all-extras
- name: lint
run: uv run ruff check .
- name: types
run: uv run pyright
# `addopts = -m "not e2e"` (pyproject) keeps the bundle build out
# of this job — it runs in `e2e` below.
# Keep examples out of this invocation: they are standalone projects
# with their own dependencies and locks, not uv workspace members.
- name: core + plugin unit tests
run: uv run pytest tests/ plugins/ -v -rs
e2e:
name: build e2e (${{ matrix.source_platform }} to ${{ matrix.target_platform }})
runs-on: ${{ matrix.runner }}
strategy:
fail-fast: false
matrix:
include:
# The native amd64 pair runs the full pytest e2e — build,
# `agentix deploy docker` (real-bundle extraction), and boot
# checks inside a task container. The deploy path once broke
# on real bundles while every synthetic unit test passed
# (nightly run 28558780157); only a real-artifact round trip
# catches that class.
- runner: ubuntu-24.04
source_platform: linux/amd64
target_platform: linux/amd64
deploy_e2e: true
- runner: ubuntu-24.04
source_platform: linux/amd64
target_platform: linux/arm64
- runner: ubuntu-24.04-arm
source_platform: linux/arm64
target_platform: linux/amd64
- runner: ubuntu-24.04-arm
source_platform: linux/arm64
target_platform: linux/arm64
steps:
- uses: actions/checkout@v4
- uses: astral-sh/setup-uv@v5
with:
enable-cache: true
- uses: docker/setup-qemu-action@v3
with:
platforms: amd64,arm64
- uses: docker/setup-buildx-action@v3
# Build the minimal bundle directly for each runner/target pair.
# Nix runs inside the build container, so the runner needs only Docker.
- name: build hello-world bundle
if: ${{ !matrix.deploy_e2e }}
working-directory: examples/hello-world
run: uv run agentix build . --platform "${{ matrix.target_platform }}"
- name: sync workspace
if: ${{ matrix.deploy_e2e }}
run: uv sync --locked --all-packages --all-extras
- name: build + deploy + boot e2e
if: ${{ matrix.deploy_e2e }}
run: uv run pytest tests/e2e -m e2e -v