Skip to main content
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 — 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