From 97c3e0a3cdf93332cdb14519ddd30211057b4545 Mon Sep 17 00:00:00 2001 From: Gabriel Brown Date: Fri, 2 Oct 2026 04:36:47 -0400 Subject: [PATCH] CI: run on the VPS runner (plain shell instead of checkout/setup-bun actions) Rootless podman on cirunner-vps cannot copy cached actions into job containers (symlinks: "path escapes from parent"), so any job that landed there failed. Checkout is now plain git and Bun comes from its install script; both are verified on cirunner-vps. --- .gitea/workflows/build.yml | 34 +++++++++++++++++++++++++++++----- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml index a618001..e70f14e 100644 --- a/.gitea/workflows/build.yml +++ b/.gitea/workflows/build.yml @@ -8,10 +8,23 @@ jobs: quality: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 - - uses: oven-sh/setup-bun@v2 - with: - bun-version: 1.3.14 + - name: Checkout repository + # Plain git instead of actions/checkout: rootless podman on cirunner-vps + # rejects symlinks inside cached actions ("path escapes from parent"). + env: + GITEA_TOKEN: ${{ gitea.token }} + run: | + git init -q . + git remote add origin "${{ gitea.server_url }}/${{ gitea.repository }}.git" + auth="$(printf 'x-access-token:%s' "$GITEA_TOKEN" | base64 -w0)" + git -c http.extraHeader="Authorization: basic $auth" \ + fetch -q --depth 1 origin "${{ gitea.sha }}" + git checkout -q FETCH_HEAD + - name: Set up Bun + # Install script instead of oven-sh/setup-bun (same podman symlink issue). + run: | + curl -fsSL https://bun.sh/install | bash -s "bun-v1.3.14" >/dev/null + echo "$HOME/.bun/bin" >> "$GITHUB_PATH" - run: bun install --frozen-lockfile - name: Typecheck and test run: | @@ -22,7 +35,18 @@ jobs: needs: [quality] runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - name: Checkout repository + # Plain git instead of actions/checkout: rootless podman on cirunner-vps + # rejects symlinks inside cached actions ("path escapes from parent"). + env: + GITEA_TOKEN: ${{ gitea.token }} + run: | + git init -q . + git remote add origin "${{ gitea.server_url }}/${{ gitea.repository }}.git" + auth="$(printf 'x-access-token:%s' "$GITEA_TOKEN" | base64 -w0)" + git -c http.extraHeader="Authorization: basic $auth" \ + fetch -q --depth 1 origin "${{ gitea.sha }}" + git checkout -q FETCH_HEAD - name: Log in to container registry run: echo "${{ secrets.REGISTRY_PASSWORD }}" | docker login git.gbrown.org -u "${{ secrets.REGISTRY_USER }}" --password-stdin # One build-and-push step, fully-qualified tags, --push from the builder.