Split out of #7 so the constraint is tracked rather than buried in a workflow
comment.
What was measured
.gitea/workflows/deploy.yml pins actions/upload-artifact and actions/download-artifact on the v3 line, not v4. #7's definition of done
asked for v4 (v3 is deprecated upstream). v4 was implemented, merged, and broke
the deploy on main; the second attempt measured why by running the jobs on a
branch.
Observed on branch pin-deploy-refs-observable, commit 2d328e7, via the
commit-status API:
probe / p2-alpine-apk-checkout success 5s checkout only
probe / p4-alpine-apk-upload failure 11s same job + upload-artifact v4
The two jobs are identical except for a trailing actions/upload-artifact v4
step. Every v3 build tested passes on the same runner and image:
So this is not a musl problem, not an image problem, and not a node-runtime
problem. Artifacts v4 is a different wire protocol from v3, and this
Gitea/act_runner deployment does not serve it. (Server is Gitea 1.25.4; the
runner version is not readable from this account.)
Why this is a real item and not just a note
v3 of both actions is deprecated upstream and will stop receiving fixes. The
repo is pinned by SHA either way, so nothing is mutable, but it is pinned to
a line that upstream has abandoned.
Done when
Either:
the artifact v4 protocol works on this instance (runner and/or Gitea
upgrade), deploy.yml moves to v4 pinned by SHA, and a branch run proves the
upload and download both pass; or
it is decided that v3 pinned by SHA is the permanent answer here, and the
workflow comment plus REPO_POLICIES.md say so explicitly.
Verifying this needs the same technique #7 used: a temporary branch trigger on on.push.branches plus the if: github.ref_name == 'main' guard on the deploy
job, so the build job runs for real without touching Cloudflare.
Split out of #7 so the constraint is tracked rather than buried in a workflow
comment.
## What was measured
`.gitea/workflows/deploy.yml` pins `actions/upload-artifact` and
`actions/download-artifact` on the **v3** line, not v4. #7's definition of done
asked for v4 (v3 is deprecated upstream). v4 was implemented, merged, and broke
the deploy on `main`; the second attempt measured why by running the jobs on a
branch.
Observed on branch `pin-deploy-refs-observable`, commit `2d328e7`, via the
commit-status API:
```
probe / p2-alpine-apk-checkout success 5s checkout only
probe / p4-alpine-apk-upload failure 11s same job + upload-artifact v4
```
The two jobs are identical except for a trailing `actions/upload-artifact` v4
step. Every v3 build tested passes on the same runner and image:
```
probe / q1-upload-v3-node16 success 7s v3.2.1 (ff15f030)
probe / q2-upload-v3-node20 success 22s v3.2.1-n20 (c24449f3)
probe / q3-build-for-roundtrip success 11s v3.2.2-n20 (c6a3b2bd)
```
and both v3 pairs round-trip an artifact across job containers:
```
probe / r2a-upload-proven / r2b-download-proven success 12s / 2s
probe / r3a-upload-node20 / r3b-download-node20 success 8s / 2s
```
So this is not a musl problem, not an image problem, and not a node-runtime
problem. Artifacts v4 is a different wire protocol from v3, and this
Gitea/`act_runner` deployment does not serve it. (Server is Gitea 1.25.4; the
runner version is not readable from this account.)
## Why this is a real item and not just a note
v3 of both actions is deprecated upstream and will stop receiving fixes. The
repo is pinned by SHA either way, so nothing is *mutable*, but it is pinned to
a line that upstream has abandoned.
## Done when
Either:
- the artifact v4 protocol works on this instance (runner and/or Gitea
upgrade), `deploy.yml` moves to v4 pinned by SHA, and a branch run proves the
upload and download both pass; or
- it is decided that v3 pinned by SHA is the permanent answer here, and the
workflow comment plus `REPO_POLICIES.md` say so explicitly.
Verifying this needs the same technique #7 used: a temporary branch trigger on
`on.push.branches` plus the `if: github.ref_name == 'main'` guard on the deploy
job, so the build job runs for real without touching Cloudflare.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Split out of #7 so the constraint is tracked rather than buried in a workflow
comment.
What was measured
.gitea/workflows/deploy.ymlpinsactions/upload-artifactandactions/download-artifacton the v3 line, not v4. #7's definition of doneasked for v4 (v3 is deprecated upstream). v4 was implemented, merged, and broke
the deploy on
main; the second attempt measured why by running the jobs on abranch.
Observed on branch
pin-deploy-refs-observable, commit2d328e7, via thecommit-status API:
The two jobs are identical except for a trailing
actions/upload-artifactv4step. Every v3 build tested passes on the same runner and image:
and both v3 pairs round-trip an artifact across job containers:
So this is not a musl problem, not an image problem, and not a node-runtime
problem. Artifacts v4 is a different wire protocol from v3, and this
Gitea/
act_runnerdeployment does not serve it. (Server is Gitea 1.25.4; therunner version is not readable from this account.)
Why this is a real item and not just a note
v3 of both actions is deprecated upstream and will stop receiving fixes. The
repo is pinned by SHA either way, so nothing is mutable, but it is pinned to
a line that upstream has abandoned.
Done when
Either:
upgrade),
deploy.ymlmoves to v4 pinned by SHA, and a branch run proves theupload and download both pass; or
workflow comment plus
REPO_POLICIES.mdsay so explicitly.Verifying this needs the same technique #7 used: a temporary branch trigger on
on.push.branchesplus theif: github.ref_name == 'main'guard on the deployjob, so the build job runs for real without touching Cloudflare.