builder: pin the nixos/nix base image by digest #384
Workflow file for this run
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: 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 |