store: Gitea Actions runner can't clone self-hosted composite actions - auth + cache fix

This commit is contained in:
Cal Corum 2026-02-18 11:59:33 -06:00
parent 90c1120101
commit b62ead55fe

View File

@ -0,0 +1,29 @@
---
id: 53328fc9-796a-47b7-81ae-fc57c9b3a202
type: solution
title: "Gitea Actions runner can't clone self-hosted composite actions - auth + cache fix"
tags: [gitea, ci-cd, actions, runner, authentication, composite-actions, troubleshooting, docker, homelab, lxc-225]
importance: 0.9
confidence: 0.8
created: "2026-02-18T17:59:33.367259+00:00"
updated: "2026-02-18T17:59:33.367259+00:00"
---
Problem: Gitea Actions runner fails to clone composite actions from cal/gitea-actions with 'authentication required: Unauthorized'. Three root causes found and fixed:
1. **Repo was private**: tea repos create defaults to private. Fixed by making public via API PATCH to /api/v1/repos/cal/gitea-actions with {private: false}.
2. **REQUIRE_SIGNIN_VIEW = true**: Even with public repos, Gitea's app.ini had REQUIRE_SIGNIN_VIEW=true in /etc/gitea/app.ini on LXC 225, which blocks unauthenticated git clone for ALL repos including public ones. Rather than disabling this (user preference), solved by adding .netrc authentication to the runner.
3. **Runner clone cache**: Failed clone attempts are cached at /root/.cache/act/<hash> in the runner container. Must manually clear: docker exec gitea-runner rm -rf /root/.cache/act/<hash>
Solution: Created /etc/gitea/runner-netrc on LXC 225 with machine entries for both git.manticorum.com and 10.10.0.225 using the Gitea API token. Recreated the runner container with:
- -v /etc/gitea/runner-netrc:/root/.netrc:ro (authentication for cloning)
- -v /etc/gitea/runner-config.yaml:/config.yaml:ro (container options)
- daemon --config /config.yaml
The runner config.yaml also sets container.options: --add-host=git.manticorum.com:host-gateway for job containers that need to reach the Gitea instance.
Key insight: The runner clones action repos in its OWN container (cached at /root/.cache/act/), not in the job containers. So .netrc on the runner container is what matters for action repo authentication. The container.options --add-host is for job container steps that need Gitea access.
Runner details: gitea/act_runner:latest on LXC 225 (10.10.0.225), connects to Gitea at http://10.10.0.225:3000 internally.