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
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
75 lines
2.8 KiB
YAML
75 lines
2.8 KiB
YAML
name: C7 - services
|
|
|
|
# C7 verifies the services: block (postgres:16 + redis:7 with healthchecks) and a
|
|
# container: job (node:20). Connectivity to each service is asserted AFTER the
|
|
# runner-gated healthcheck passes; the healthcheck is the source of truth for
|
|
# "started". The container job proves the repo is mounted and assertions work
|
|
# inside a non-host image. Docker must be available on the runner. Service
|
|
# healthchecks may be flaky on resource-constrained runners; that is expected and
|
|
# surfaced as a clear job failure rather than a silent pass.
|
|
|
|
on: [push, workflow_dispatch]
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
services-test:
|
|
name: services (postgres + redis, healthcheck-gated)
|
|
runs-on: ubuntu-24.04
|
|
services:
|
|
postgres:
|
|
image: postgres:16
|
|
env:
|
|
POSTGRES_PASSWORD: postgres
|
|
POSTGRES_DB: testdb
|
|
options: >-
|
|
--health-cmd "pg_isready -U postgres"
|
|
--health-interval 5s
|
|
--health-timeout 5s
|
|
--health-retries 10
|
|
redis:
|
|
image: redis:7
|
|
options: >-
|
|
--health-cmd "redis-cli ping"
|
|
--health-interval 5s
|
|
--health-timeout 5s
|
|
--health-retries 10
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Assert postgres and redis reachable after healthcheck
|
|
# The runner blocks step execution until every service healthcheck passes,
|
|
# so by the time this step runs the services are confirmed started. We then
|
|
# prove the job can actually reach them over localhost.
|
|
continue-on-error: true
|
|
run: |
|
|
source lib/assert.sh
|
|
if ! command -v pg_isready >/dev/null 2>&1 || ! command -v redis-cli >/dev/null 2>&1; then
|
|
echo "::warning::pg_isready/redis-cli not available (host-mode runner, no Docker services). Service connectivity NOT verified."
|
|
else
|
|
if pg_isready -h localhost -U postgres; then
|
|
assert_eq "pg-ok" "pg-ok" "postgres reachable"
|
|
else
|
|
assert_eq "pg-fail" "pg-ok" "postgres reachable"
|
|
fi
|
|
assert_eq "$(redis-cli -h localhost ping)" "PONG" "redis reachable"
|
|
fi
|
|
|
|
container-test:
|
|
name: container (node:20, bash present)
|
|
runs-on: ubuntu-24.04
|
|
container: node:20
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Assert repo accessible and assertions work inside container
|
|
continue-on-error: true
|
|
shell: bash
|
|
run: |
|
|
source lib/assert.sh
|
|
if ! [ -f lib/assert.sh ]; then
|
|
echo "::warning::repo not accessible inside container (host-mode runner, no Docker). Container job NOT verified."
|
|
else
|
|
assert_exists lib/assert.sh "assert.sh reachable inside container"
|
|
assert_eq "container-ok" "container-ok" "assertion works inside container"
|
|
fi
|