Skip to main content

Documentation Index

Fetch the complete documentation index at: https://athanor.alexisbouchez.com/llms.txt

Use this file to discover all available pages before exploring further.

Athanor runs standard GitHub Actions workflow YAML. If your workflow works on GitHub, it should work on Athanor (within the supported features).

Minimal Workflow

name: CI
on: push
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Build
        run: go build ./...
      - name: Test
        run: go test ./...

Using Expressions

Athanor evaluates ${{ }} expressions with full context support:
steps:
  - name: Show info
    run: |
      echo "Repo: ${{ github.repository }}"
      echo "SHA: ${{ github.sha }}"
      echo "Branch: ${{ github.ref_name }}"

Matrix Strategy

jobs:
  test:
    strategy:
      matrix:
        go: ['1.21', '1.22']
        os: [ubuntu-latest]
    steps:
      - uses: actions/checkout@v4
      - name: Test with Go ${{ matrix.go }}
        run: go test ./...

Job Dependencies and Outputs

jobs:
  build:
    outputs:
      version: ${{ steps.ver.outputs.version }}
    steps:
      - id: ver
        run: echo "version=1.0.0" >> "$GITHUB_OUTPUT"

  deploy:
    needs: build
    steps:
      - run: echo "Deploying ${{ needs.build.outputs.version }}"

Conditions

steps:
  - name: Always runs
    if: always()
    run: echo "cleanup"

  - name: Only on failure
    if: failure()
    run: echo "something went wrong"

  - name: Branch check
    if: github.ref_name == 'main'
    run: echo "on main"

Environment Variables

Three levels, where each inherits from the one above:
env:
  GLOBAL_VAR: hello

jobs:
  build:
    env:
      JOB_VAR: world
    steps:
      - name: Use vars
        env:
          STEP_VAR: "!"
        run: echo "$GLOBAL_VAR $JOB_VAR$STEP_VAR"

      - name: Set env for next steps
        run: echo "DYNAMIC=value" >> "$GITHUB_ENV"

Job Defaults

Set default shell and working directory for all steps in a job:
jobs:
  build:
    defaults:
      run:
        shell: bash
        working-directory: ./src
    steps:
      - run: pwd          # runs in ./src
      - run: echo "hi"
        shell: sh         # overrides the default

Notes for Athanor

  • runs-on: is parsed but not used for image selection. All jobs run in the same rootfs.
  • actions/checkout@v4 has a built-in shim. It runs a git checkout on the already-cloned workspace.
  • Node.js actions work if node is installed in the VM rootfs
  • Docker actions (docker://) are not supported