name: CI on: push: branches: [master] pull_request: branches: [master] jobs: format: runs-on: ubuntu-latest steps: - name: Install make run: sudo apt-get update && sudo apt-get install -y --no-install-recommends make - uses: actions/checkout@v7 - uses: actions/setup-go@v7 with: go-version-file: go.mod - run: make format - run: git diff --exit-code goreleaser-lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v7 - uses: goreleaser/goreleaser-action@v6.4.0 with: args: check lint: runs-on: ubuntu-latest steps: - name: Install make run: sudo apt-get update && sudo apt-get install -y --no-install-recommends make - uses: actions/checkout@v7 - uses: actions/setup-go@v7 with: go-version-file: go.mod - run: make ci-lint test: runs-on: ubuntu-latest steps: - name: Install make run: sudo apt-get update && sudo apt-get install -y --no-install-recommends make build-essential - uses: actions/checkout@v7 - uses: actions/setup-go@v7 with: go-version-file: go.mod - run: make test e2e: runs-on: ubuntu-latest services: dind: image: docker:27-dind env: DOCKER_TLS_CERTDIR: "" # GitHub honours this. The Forgejo runner ignores a workflow's options # and takes `privileged` from its own config, which is set there. options: --privileged # containerd takes a shade over ten seconds to boot on this runner and # dockerd waits exactly ten, so the first attempt always dies with # "timeout waiting for containerd to start". The second one wins. cmd: - sh - -c - >- for i in 1 2 3 4 5; do dockerd-entrypoint.sh dockerd --host=tcp://0.0.0.0:2375 --host=unix:///var/run/docker.sock && break; echo "dockerd attempt $i failed, retrying" >&2; sleep 2; done env: DOCKER_HOST: tcp://dind:2375 TESTCONTAINERS_RYUK_DISABLED: true steps: - name: Install make run: sudo apt-get update && sudo apt-get install -y --no-install-recommends make - uses: actions/checkout@v7 - uses: actions/setup-go@v7 with: go-version-file: e2e/go.mod - uses: oven-sh/setup-bun@v2 - name: Wait for Docker run: | for i in $(seq 1 120); do docker info >/dev/null 2>&1 && exit 0 sleep 1 done echo "Docker daemon not ready" >&2 exit 1 - name: Install Playwright browsers run: make e2e-install - run: make e2e build: runs-on: ubuntu-latest steps: - name: Install make and UPX run: sudo apt-get update && sudo apt-get install -y --no-install-recommends make upx-ucl - uses: actions/checkout@v7 - uses: actions/setup-go@v7 with: go-version-file: go.mod - uses: oven-sh/setup-bun@v2 - uses: goreleaser/goreleaser-action@v6.4.0 with: install-only: true - run: make build