hermes-agent/.github/workflows
Teknium 3ea2c90d23
refactor(ci): DRY the retried label-fetch into a composite action
Address @ethernet8023's review nits (both flagged non-blocking):

- Extract the copy-pasted retried `gh pr view` label-fetch loop (lint.yml
  ci-review gate + supply-chain-audit.yml mcp-catalog gate) into a single
  .github/actions/gh-pr-labels composite action. It preserves the exact
  semantics the reviewer verified: retry on transient API failure, exit 1
  after N attempts (re-runnable), and a clean fetch that simply lacks the
  label reports has-label=false rather than hard-failing. Both gates now
  consume the has-label output.
- Rewrite the Dockerfile playwright retry from the compact
  `&& break || { ... }` one-liner into the readable multi-line if/sleep
  form used everywhere else.

E2E-verified the composite action against a stubbed gh across four cases:
label present -> has-label=true; absent -> has-label=false; API always
fails -> exit 1 + annotation, no output written; transient (fail-once) ->
recovers and reports true. All workflow/action YAML parses; bash -n clean.
2026-07-17 13:56:18 -07:00
..
ci.yml fix(ci): kill the remaining transient-failure classes in workflows + Dockerfile 2026-07-17 13:54:04 -07:00
contributor-check.yml fix(ci): job timeouts everywhere + retries on all network installs 2026-07-17 13:54:04 -07:00
deploy-site.yml fix(ci): curl retries on deploy hook + skills-index probe 2026-07-17 13:54:04 -07:00
docker-lint.yml change(ci): docker-publish.yml -> docker.yml 2026-06-26 19:15:18 -07:00
docker.yml fix(ci): kill the remaining transient-failure classes in workflows + Dockerfile 2026-07-17 13:54:04 -07:00
docs-site-checks.yml fix(ci): job timeouts everywhere + retries on all network installs 2026-07-17 13:54:04 -07:00
history-check.yml fix(ci): job timeouts everywhere + retries on all network installs 2026-07-17 13:54:04 -07:00
js-autofix.yml ci(js-autofix): skip apply-patch job when no fixes found 2026-07-16 16:13:50 -04:00
js-tests.yml fix(ci): job timeouts everywhere + retries on all network installs 2026-07-17 13:54:04 -07:00
lint.yml refactor(ci): DRY the retried label-fetch into a composite action 2026-07-17 13:56:18 -07:00
lockfile-diff.yml feat(ci): semantic package-lock.json diff as an upserted PR comment (#65206) 2026-07-16 03:18:15 +00:00
osv-scanner.yml ci: add 2 minute timeout to osv scan (#66410) 2026-07-17 18:29:42 +00:00
skills-index-freshness.yml fix(ci): curl retries on deploy hook + skills-index probe 2026-07-17 13:54:04 -07:00
skills-index.yml fix(ci): job timeouts everywhere + retries on all network installs 2026-07-17 13:54:04 -07:00
supply-chain-audit.yml refactor(ci): DRY the retried label-fetch into a composite action 2026-07-17 13:56:18 -07:00
tests.yml fix(ci): kill the remaining transient-failure classes in workflows + Dockerfile 2026-07-17 13:54:04 -07:00
upload_to_pypi.yml fix(ci): job timeouts everywhere + retries on all network installs 2026-07-17 13:54:04 -07:00
uv-lockfile-check.yml fix(ci): kill the remaining transient-failure classes in workflows + Dockerfile 2026-07-17 13:54:04 -07:00