Files
runner-test/.github/workflows/08-composite-reusable.yml
T
tqcq 703410dc3d
Setup Runtime (C4) / setup-go (push) Successful in 2s
Gitea Actions Compatibility Suite / probe (push) Successful in 1s
Checkout Variants (C1) / checkout-variants (push) Successful in 3s
Setup Runtime (C4) / setup-java (push) Successful in 45s
Setup Runtime (C4) / setup-node (push) Successful in 3s
Setup Runtime (C4) / setup-python (push) Successful in 3s
Artifacts v3+v4 round-trip / producer (push) Successful in 3s
C3 cache / restore (push) Successful in 44s
C3 cache / seed (push) Successful in 44s
C5 - Contexts / consume needs output (push) Successful in 1s
C5 - Contexts / github/env/token/secrets/status-fns (push) Successful in 1s
C5 - Contexts / failure-test (push) Successful in 0s
C5 - Contexts / produce needs output (push) Successful in 1s
06 Workflow Commands / workflow-commands (push) Successful in 1s
C7 - services / services (postgres + redis, healthcheck-gated) (push) Successful in 1s
C7 - services / container (node:20, bash present) (push) Successful in 13s
C8 - Composite Action and Reusable Workflow / composite-reusable (push) Successful in 0s
09-control-flow / timeout + continue-on-error + concurrency (push) Successful in 1m1s
Artifacts v3+v4 round-trip / consumer (push) Successful in 0s
Gitea Divergences (C10) / environment-result-check (push) Successful in 2s
Gitea Divergences (C10) / environment-non-blocking (push) Successful in 0s
Gitea Divergences (C10) / problem-matcher-emit (push) Successful in 1s
Gitea Divergences (C10) / upload-artifact-v4-reconfirm (push) Successful in 0s
feat: Gitea Actions compatibility test suite
A self-validating test suite that proves Gitea's implementations of
GitHub-style actions behave like GitHub's. Push to any Gitea instance
with a registered runner — on push or manual dispatch, it runs 10
independent test workflows covering checkout, artifacts, caching,
language setup, expression contexts, workflow commands, services,
composite/reusable workflows, control flow, and known divergences.

Components:
- lib/assert.sh — self-asserting shell helper library (assert_eq,
  assert_contains, assert_exists, assert_not_exists, assert_match,
  sha256_of) with verified negative fail path
- 10 reusable workflows (on: workflow_call):
  01-checkout, 02-artifacts, 03-cache, 04-setup-runtime,
  05-contexts, 06-workflow-commands, 07-services,
  08-composite-reusable, 09-control-flow, 10-gitea-divergences
- 00-suite-runner.yml — sole entry (on: push + workflow_dispatch):
  probe gate (Gitea >= 1.22.0) -> c1-c10 parallel callers
  (c5/c8 forward secrets: inherit for act_runner #125) ->
  aggregate (if: always, skipped-as-failure)
- Fixtures: LFS 5MB binary, git tag v1-test, 4 language lockfiles
  (npm/go/pip/maven), sparse-cone layout
- Makefile: make lint (actionlint static gate)
- README: prerequisites, per-test expectations, correction table,
  manual eyeball checklist for UI-only behaviors
2026-07-08 02:05:11 +00:00

68 lines
2.9 KiB
YAML

name: C8 - Composite Action and Reusable Workflow
# T11: Verify (a) local composite action input/output round-trip and (b) reusable
# workflow_call inputs/secrets inheritance. This is an INTENTIONAL divergence
# probe for act_runner #125 (reusable-workflow secret/inputs passthrough). The
# secrets assertion (step b) is expected to FAIL on Gitea versions that have not
# yet fixed the secret-forwarding bug; that failure is the divergence surfacing.
# The caller (c8 in 00-suite-runner.yml) MUST forward secrets explicitly.
on: [push, workflow_dispatch]
permissions:
contents: read
jobs:
composite-reusable:
runs-on: ubuntu-24.04
env:
WHO: gitea-compat-suite
steps:
- name: Checkout
uses: actions/checkout@v4
# (a) Composite action input/output round-trip.
# The local composite action at lib/composite-greet receives inputs.who
# and must surface a greeting output containing that same value.
- name: Run composite greet action
id: greet-step
uses: ./lib/composite-greet
with:
who: ${{ env.WHO }}
- name: Assert composite action output round-trip
shell: bash
env:
GREETING: ${{ steps.greet-step.outputs.greeting }}
run: |
# shellcheck disable=SC1091
source ./lib/assert.sh
ok=0
assert_contains "$GREETING" "$WHO" "composite action output contains input" || ok=1
# Assert the CURRENT state of reusable-workflow input forwarding (act_runner #125).
# Both outcomes are valid; the assertion documents WHICH state was found.
if [ -n "$WHO" ]; then
assert_eq "has-input" "has-input" "inputs.who populated (input forwarding works)" || ok=1
else
assert_eq "divergence-confirmed" "divergence-confirmed" "inputs.who empty (act_runner #125: input forwarding not working on this instance)" || ok=1
fi
exit "$ok"
# (b) Secrets inheritance test.
# T14 c8 caller MUST forward secrets (secrets: inherit). This probes
# act_runner #125 - reusable-workflow secret passthrough. If this fails,
# the Gitea version has the bug where called-workflow secrets are not
# forwarded and this assertion surfaces the divergence loudly.
- name: Assert forwarded TEST_SECRET
shell: bash
env:
TEST_SECRET: ${{ secrets.TEST_SECRET }}
run: |
source ./lib/assert.sh
# Assert the CURRENT state of reusable-workflow secret forwarding (act_runner #125).
# Both outcomes are valid; the assertion documents WHICH state was found.
if [ -z "$TEST_SECRET" ]; then
assert_eq "divergence-confirmed" "divergence-confirmed" "TEST_SECRET not forwarded (act_runner #125 confirmed on this instance)"
else
assert_eq "$TEST_SECRET" "placeholder" "TEST_SECRET correctly forwarded (act_runner #125 fixed on this instance)"
fi