Replace Woodpecker docs pipeline with Forgejo Actions #35

Merged
coding-agent-marvin8 merged 0 commits from refs/pull/35/head into main 2026-06-28 06:06:20 +00:00
coding-agent-marvin8 commented 2026-06-28 05:44:05 +00:00 (Migrated from codeberg.org)

Replaces the Woodpecker docs pipeline with an equivalent Forgejo Actions workflow. Uses git-pages/action@v2 to upload directly to grebedoc.dev, removing the webhook dependency. forge.token handles both the pages branch push and grebedoc authentication via the existing DNS allowlist record.

Closes #34

Replaces the Woodpecker docs pipeline with an equivalent Forgejo Actions workflow. Uses git-pages/action@v2 to upload directly to grebedoc.dev, removing the webhook dependency. forge.token handles both the pages branch push and grebedoc authentication via the existing DNS allowlist record. Closes #34
coding-agent-marvin8 commented 2026-06-28 05:57:11 +00:00 (Migrated from codeberg.org)

.forgejo/workflows/docs.yml line 19

Unsafe installation of uv via piping a script from an external URL without integrity verification…

Fixed in commit 32a3cf3 — replaced curl -LsSf https://astral.sh/uv/install.sh | sh with pip install uv. This eliminates the curl-pipe risk and uses PyPI's HTTPS + package hash verification instead. The "Add uv to PATH" step was also removed (pip installs to the system PATH on ubuntu-latest directly).

[`.forgejo/workflows/docs.yml` line 19](https://codeberg.org/marvin8/wuming/pulls/35#issuecomment-18195959) > Unsafe installation of uv via piping a script from an external URL without integrity verification… ✅ Fixed in commit `32a3cf3` — replaced `curl -LsSf https://astral.sh/uv/install.sh | sh` with `pip install uv`. This eliminates the curl-pipe risk and uses PyPI's HTTPS + package hash verification instead. The "Add uv to PATH" step was also removed (pip installs to the system PATH on `ubuntu-latest` directly).
coding-agent-marvin8 commented 2026-06-28 05:57:18 +00:00 (Migrated from codeberg.org)

.forgejo/workflows/docs.yml line 39

A03: Command injection vulnerability. The ${{ github.ref_name }} is user-controlled and directly interpolated into the shell command…

Fixed in commit 32a3cf3${{ github.ref_name }} is now passed through an env: block as TAG_NAME and referenced as "$TAG_NAME" (quoted) in the shell command. This separates Actions expression evaluation from shell execution, eliminating the injection surface.

[`.forgejo/workflows/docs.yml` line 39](https://codeberg.org/marvin8/wuming/pulls/35#issuecomment-18195965) > A03: Command injection vulnerability. The ${{ github.ref_name }} is user-controlled and directly interpolated into the shell command… ✅ Fixed in commit `32a3cf3` — `${{ github.ref_name }}` is now passed through an `env:` block as `TAG_NAME` and referenced as `"$TAG_NAME"` (quoted) in the shell command. This separates Actions expression evaluation from shell execution, eliminating the injection surface.
coding-agent-marvin8 commented 2026-06-28 06:02:15 +00:00 (Migrated from codeberg.org)

.forgejo/workflows/docs.yml line 19

Running an unsigned script from an external URL (curl ... | sh) without integrity verification…

Already fixed in commit 32a3cf3 — replaced curl -LsSf https://astral.sh/uv/install.sh | sh with pip install uv. The "Add uv to PATH" step was also removed as pip installs directly to the system PATH.

[`.forgejo/workflows/docs.yml` line 19](https://codeberg.org/marvin8/wuming/pulls/35#issuecomment-18196202) > Running an unsigned script from an external URL (curl ... | sh) without integrity verification… ✅ Already fixed in commit `32a3cf3` — replaced `curl -LsSf https://astral.sh/uv/install.sh | sh` with `pip install uv`. The "Add uv to PATH" step was also removed as pip installs directly to the system PATH.
coding-agent-marvin8 commented 2026-06-28 06:02:22 +00:00 (Migrated from codeberg.org)

.forgejo/workflows/docs.yml line 39

Potential OS command injection via untrusted input ${{ github.ref_name }} in shell command…

Already fixed in commit 32a3cf3${{ github.ref_name }} is now passed through an env: block as TAG_NAME and referenced as "$TAG_NAME" (quoted) in the shell command, separating Actions expression evaluation from shell execution.

[`.forgejo/workflows/docs.yml` line 39](https://codeberg.org/marvin8/wuming/pulls/35#issuecomment-18196205) > Potential OS command injection via untrusted input `${{ github.ref_name }}` in shell command… ✅ Already fixed in commit `32a3cf3` — `${{ github.ref_name }}` is now passed through an `env:` block as `TAG_NAME` and referenced as `"$TAG_NAME"` (quoted) in the shell command, separating Actions expression evaluation from shell execution.
coding-agent-marvin8 commented 2026-06-28 06:02:29 +00:00 (Migrated from codeberg.org)

.forgejo/workflows/docs.yml line 36

Sensitive token ${{ forge.token }} is embedded directly in a git remote URL on line 36, which may be logged or exposed in process listings…

🔴 Acknowledged but not actioned. This is the standard pattern for token-authenticated git pushes in Forgejo/GitHub Actions CI. The token is not hardcoded — it is injected at runtime via the env: block (FORGEJO_TOKEN: ${{ forge.token }}), so it does not appear in the workflow file itself. Forgejo Actions masks values that originate from the token context in log output. A credential-helper approach would eliminate the process-listing exposure but adds meaningful complexity for a single git remote set-url + git push operation; the risk/benefit tradeoff favours keeping the current pattern here.

[`.forgejo/workflows/docs.yml` line 36](https://codeberg.org/marvin8/wuming/pulls/35#issuecomment-18196208) > Sensitive token `${{ forge.token }}` is embedded directly in a git remote URL on line 36, which may be logged or exposed in process listings… 🔴 Acknowledged but not actioned. This is the standard pattern for token-authenticated git pushes in Forgejo/GitHub Actions CI. The token is not hardcoded — it is injected at runtime via the `env:` block (`FORGEJO_TOKEN: ${{ forge.token }}`), so it does not appear in the workflow file itself. Forgejo Actions masks values that originate from the token context in log output. A credential-helper approach would eliminate the process-listing exposure but adds meaningful complexity for a single `git remote set-url` + `git push` operation; the risk/benefit tradeoff favours keeping the current pattern here.
coding-agent-marvin8 commented 2026-06-28 06:02:35 +00:00 (Migrated from codeberg.org)

.forgejo/workflows/docs.yml line 36

Invalid context reference 'forge.token'. Forgejo Actions uses 'secrets' context for secrets (e.g., 'secrets.FORGEJO_TOKEN')…

🔴 Not actioned — forge.token is intentional. The git-pages/action README (codeberg.org/git-pages/action) explicitly uses ${{ forge.token }} in its example workflows; this is Forgejo Actions' built-in repository token, analogous to ${{ github.token }} in GitHub Actions. It does not require a named secret. If it fails to resolve on the first real tag push, the fallback is straightforward: add the PAT as a named secret and switch to ${{ secrets.CODEBERG_TOKEN }}.

[`.forgejo/workflows/docs.yml` line 36](https://codeberg.org/marvin8/wuming/pulls/35#issuecomment-18196394) > Invalid context reference 'forge.token'. Forgejo Actions uses 'secrets' context for secrets (e.g., 'secrets.FORGEJO_TOKEN')… 🔴 Not actioned — `forge.token` is intentional. The `git-pages/action` README ([codeberg.org/git-pages/action](https://codeberg.org/git-pages/action)) explicitly uses `${{ forge.token }}` in its example workflows; this is Forgejo Actions' built-in repository token, analogous to `${{ github.token }}` in GitHub Actions. It does not require a named secret. If it fails to resolve on the first real tag push, the fallback is straightforward: add the PAT as a named secret and switch to `${{ secrets.CODEBERG_TOKEN }}`.
coding-agent-marvin8 commented 2026-06-28 06:02:43 +00:00 (Migrated from codeberg.org)

.forgejo/workflows/docs.yml line 52

Same invalid context reference 'forge.token'. Should use 'secrets.FORGEJO_TOKEN' (or the actual secret name)…

🔴 Same reasoning as the Configure git step above — forge.token is the correct Forgejo Actions built-in token per the git-pages/action documentation. Both uses are consistent and intentional. Will verify on first live run.

[`.forgejo/workflows/docs.yml` line 52](https://codeberg.org/marvin8/wuming/pulls/35#issuecomment-18196397) > Same invalid context reference 'forge.token'. Should use 'secrets.FORGEJO_TOKEN' (or the actual secret name)… 🔴 Same reasoning as the Configure git step above — `forge.token` is the correct Forgejo Actions built-in token per the git-pages/action documentation. Both uses are consistent and intentional. Will verify on first live run.
Sign in to join this conversation.
No reviewers
No labels
No milestone
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Reference
marvin8/wuming!35
No description provided.