1 Getting-Started
dxtr edited this page 2026-10-11 16:41:49 +02:00

Getting Started

Referencing the actions

Reference the actions with the owner/repo/path@ref form:

- uses: fakehacker/actions/checkout@v1.0.0

Versions

Ref Meaning
@v1.0.0 A fixed release. Recommended, so your CI only changes when you bump the tag.
@main Latest development state. It can change under you at any time.
@<commit sha> Fully immutable. Use it if you don't trust tags to stay put.

Releases are listed on the repository's tags page.

Runners and containers

A composite action can't choose its own runner or container. runs-on, container and any strategy.matrix all belong in your workflow.

These actions are made for jobs that run inside a job container:

jobs:
  test:
    runs-on: ubuntu-latest   # a runner label that is backed by Docker
    container:
      image: debian:forky    # the image the steps actually run in

Notes:

  • The runner label must be Docker-backed. container: only works if the runner runs that label through Docker or Podman. A label registered in host mode (label:host) ignores container: or fails. Check your runner's labels configuration.
  • Steps run as root in most images. lisp-ci relies on that for apt-get install and for writing to /usr/local and /opt, and nothing calls sudo.
  • No Node.js needed. Do not mix in actions/checkout or other JavaScript actions unless your image has node.
  • Choosing a Debian release: debian:forky is Debian testing. It has fresh packages, but they change often and can break for a while. debian:trixie is the current stable and works the same way with these actions.

Full example workflow

name: CI
on: [push, pull_request]

jobs:
  erlang:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        otp: ['27', '28', '29']
    container:
      image: erlang:${{ matrix.otp }}
    steps:
      - uses: fakehacker/actions/checkout@v1.0.0
      - uses: fakehacker/actions/rebar3-ci@v1.0.0

  lisp:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        sbcl: ['2.5.0', '2.6.9']
    container:
      image: debian:forky
    steps:
      - uses: fakehacker/actions/checkout@v1.0.0
      - uses: fakehacker/actions/lisp-ci@v1.0.0
        with:
          system: cl-ft2
          lisps: sbcl
          sbcl-version: ${{ matrix.sbcl }}

  lisp-ccl:
    runs-on: ubuntu-latest
    container:
      image: debian:forky
    steps:
      - uses: fakehacker/actions/checkout@v1.0.0
      - uses: fakehacker/actions/lisp-ci@v1.0.0
        with:
          system: cl-ft2
          lisps: ccl

Always run checkout first

rebar3-ci and lisp-ci work on the files in the workspace, so put checkout before them in the job.