ci(integration): print the runner facts that rules 79 and 81 assert (#3237)
CI & Build / TypeScript typecheck (push) Failing after 2s
CI & Build / Python lint (push) Successful in 3s
CI & Build / Plugin hooks (push) Successful in 10s
CI & Build / integration (push) Successful in 30s
CI & Build / Python tests (push) Successful in 1m4s
CI & Build / Build & push image (push) Skipped
CI & Build / TypeScript typecheck (push) Failing after 2s
CI & Build / Python lint (push) Successful in 3s
CI & Build / Plugin hooks (push) Successful in 10s
CI & Build / integration (push) Successful in 30s
CI & Build / Python tests (push) Successful in 1m4s
CI & Build / Build & push image (push) Skipped
Three conditional rules state facts about this act_runner — services are not reachable by hostname (79), the service container's name is derived from the job's truncated display name (80), and `run:` steps execute under a shell without bash features (81). None had ever been verified, because each check reads "add a step to a live CI job and read the log" and nobody wants to arrange a throwaway run to do it. So the step is not throwaway. Two lines on every integration run turn the next sweep of these rules into a log read. Rule 80 needs nothing new: the container listing the suite step already prints for the name filter is its evidence, and run 5055's log already answers it. Every command is guarded with a fallback. This observes the lane; it must not be able to break it.
This commit is contained in:
@@ -279,6 +279,21 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
UV_PROJECT_ENVIRONMENT: /opt/venv
|
UV_PROJECT_ENVIRONMENT: /opt/venv
|
||||||
run: uv sync --locked --extra dev
|
run: uv sync --locked --extra dev
|
||||||
|
# Standing answers to the checks carried by rules 81 and 79 — two facts
|
||||||
|
# about THIS runner that conditional rules assert as fact, and that
|
||||||
|
# otherwise need a throwaway job to confirm (#3237). Printing them on
|
||||||
|
# every integration run makes the next rulebook sweep a log read.
|
||||||
|
# Rule 80's evidence is the container listing the next step already
|
||||||
|
# prints. Every command is guarded: a diagnostic that can break the lane
|
||||||
|
# it observes is worse than no diagnostic.
|
||||||
|
- name: Runner facts (rules 79 and 81)
|
||||||
|
run: |
|
||||||
|
echo "--- rule 81: which shell runs a run: step ---"
|
||||||
|
readlink -f /bin/sh || echo "/bin/sh: not a symlink"
|
||||||
|
ps -p $$ -o comm= || true
|
||||||
|
echo "--- rule 79: is a service reachable by its hostname yet? ---"
|
||||||
|
getent hosts postgres \
|
||||||
|
|| echo "no — 'postgres' does not resolve; the bridge-IP lookup is still required"
|
||||||
- name: Integration suite (resolve service IP, migrate, test)
|
- name: Integration suite (resolve service IP, migrate, test)
|
||||||
run: |
|
run: |
|
||||||
set -eux
|
set -eux
|
||||||
|
|||||||
Reference in New Issue
Block a user