ci(gitea): port 7 reusable workflows to .gitea/workflows/ (RFC #229 P1-1) #7
Reference in New Issue
Block a user
Delete Branch "feat/gitea-workflows-port"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Ports 7 reusable workflows from
.github/workflows/to.gitea/workflows/so Gitea Actions can read them. Each ported file is byte-identical to its.github/source plus a 16-line caller-migration header; no body changes.Files ported:
auto-promote-branch.ymlauto-promote-staging-pr.ymldisable-auto-merge-on-push.ymlpublish-template-image.ymlvalidate-org-template.ymlvalidate-plugin.ymlvalidate-workspace-template.ymlAll 7 are
on: workflow_callreusables. The 8th file in.github/workflows/,auto-promote-staging.yml, is the local push-triggered wrapper that consumes the reusable — out of scope (it isn't itself reusable).Note on count: RFC #229 P1-1 said "5 reusables". Audit a98e958ae0da53eb8 + the actual
.github/workflows/head shows 7workflow_callfiles. Ported all 7 since each one is referenced via cross-repouses:by at least one consumer (per/tmp/gitea-audit/heads/GH/*grep).Out of scope
.github/workflows/originals stay (transitional — both surfaces coexist for safe consumer migration).uses:paths in this PR. Each consumer is its own coordinated follow-up port.[actions].DEFAULT_ACTIONS_URLflip +actions/*mirror (task #109) — this PR is a prerequisite, not a switch-on.Cross-repo invocation caveat (Gitea 1.22.6)
Per memory
feedback_gitea_cross_repo_uses_blocked+ the rationale embedded in the existing.gitea/actions/audit-force-mergecomposite: cross-repouses: org/repo/...@ref(workflow_call form) does NOT resolve on Gitea 1.22.6 because[actions].DEFAULT_ACTIONS_URL=githubroutes the fetch to github.com (wheremolecule-aiis suspended). Even after consumers switch to the.gitea/path, callers will 404 until the operator-host server-side flip + actions/* mirror lands (task #109).So:
actions/*on Gitea + flip DEFAULT_ACTIONS_URL=self) → step 2.uses: ...migration → step 3 (one PR per consumer; ~24 plugins + 5 org-templates + 7 workspace-templates + others).Landing the port now unblocks step 2 from waiting on this scope.
Per-file diff summary
Every ported file diff against its
.github/source is exactly 16 added lines at the top — the caller-migration header comment block. Body unchanged. Verified viadiff .github/workflows/X.yml .gitea/workflows/X.ymlfor each file.Adaptations applied: NONE (intentionally). Each workflow already uses Gitea-compatible primitives:
actions/checkout@v4,actions/setup-python@v5,docker/*@v3/v6resolve via DEFAULT_ACTIONS_URL=github (against theactions/anddocker/orgs which are NOT suspended).secrets.GITHUB_TOKENis populated by act_runner with a synthetic per-job token. The validate-* workflows already direct-clone molecule-ci.git from Gitea (Gitea-aware as of #1, #2). Nomerge_grouptriggers, no GitHub-environment usage.If any workflow surfaces a Gitea-only issue at first cross-repo invocation post-task-#109, file as a follow-up — not in this PR's scope.
Verification
python3 -c 'import yaml; yaml.safe_load(...)'clean for all 7 files.actionlint .gitea/workflows/*.yml— same 5 shellcheck STYLE warnings as the.github/originals. No new errors.diff .github/workflows/X.yml .gitea/workflows/X.ymlfor each X = exactly the 16-line header.feat/gitea-workflows-port. Gitea Actions UI lists all 7 ported workflows under?branch=feat/gitea-workflows-port. Emptyrunslist is the correct semantics for pure-workflow_callfiles (no trigger fires on branch push).core-devopsperfeedback_per_agent_gitea_identity_default.Hostile self-review
#comment lines are valid YAML;yaml.safe_loadconfirmed..github/confuse callers? No — Gitea ignores.github/workflows/; GitHub doesn't fire becausemolecule-aiis suspended. Both surfaces are inert from the resolver's perspective; the .github/ originals remain only as a tombstone + diff target..molecule-ci/scripts/— Pre-existing in.github/(validate-org-template references.molecule-ci-canonical/.molecule-ci/scripts/, validate-workspace-template references.molecule-ci-canonical/scripts/). NOT touched by this port — fixing would scope-creep. File a follow-up if it bites.gh apicalls — the token is repo-scoped; cross-repogh api repos/<other>/...calls will 403. Pre-existing constraint; same on.github/originals when invoked via Gitea Actions. Documented for the post-#109 consumer-migration phase.Refs
feedback_phantom_required_check_after_gitea_migration,feedback_gitea_cross_repo_uses_blocked,feedback_per_agent_gitea_identity_default,feedback_dev_sop_phase_1_to_4🤖 Generated with Claude Code
Five-Axis review pass:
tier:medium correctly applied (multi-file infra change affecting all downstream callers). Author core-devops persona — correct separation from claude-ceo-assistant per feedback_per_agent_gitea_identity_default. Pre-existing path inconsistency in validate-org-template noted as separate follow-up — not in scope here.
Approving per RFC #229 P1-1 + auto-merge-when-CI-green policy (no CI applicable for workflow_call files).