Add Forgejo Actions CI and release workflows #5

Merged
johnpreston merged 5 commits from chore/forgejo-ci into chore/test-cleanup 2026-09-13 20:29:42 +00:00
Owner

CI (push to main + PRs):

  • lint: pre-commit (ruff-check + ruff-format)
  • tests: pytest matrix on Python 3.10-3.14 with dummy AWS credentials for placebo replay
  • docs: sphinx-apidoc + sphinx-build
  • build: poetry build + twine check + artifact upload

Release (v* tags): poetry build, twine check, poetry publish to PyPI.

Containers pull from the public.ecr.aws docker.io mirror (anonymous, not throttled).

Before the first release: set the PYPI_TOKEN secret (Settings -> Secrets -> Actions). Runners must advertise the docker label and need github.com egress for the pre-commit hook repos.

CI (push to main + PRs): - lint: pre-commit (ruff-check + ruff-format) - tests: pytest matrix on Python 3.10-3.14 with dummy AWS credentials for placebo replay - docs: sphinx-apidoc + sphinx-build - build: poetry build + twine check + artifact upload Release (v* tags): poetry build, twine check, poetry publish to PyPI. Containers pull from the public.ecr.aws docker.io mirror (anonymous, not throttled). Before the first release: set the **PYPI_TOKEN** secret (Settings -> Secrets -> Actions). Runners must advertise the `docker` label and need github.com egress for the pre-commit hook repos.
Add Forgejo Actions CI and release workflows
Some checks failed
CI / Lint (pre-commit) (pull_request) Has been cancelled
CI / Tests (Python 3.10) (pull_request) Has been cancelled
CI / Tests (Python 3.11) (pull_request) Has been cancelled
CI / Tests (Python 3.12) (pull_request) Has been cancelled
CI / Tests (Python 3.13) (pull_request) Has been cancelled
CI / Tests (Python 3.14) (pull_request) Has been cancelled
CI / Docs build (pull_request) Has been cancelled
CI / Package build (pull_request) Has been cancelled
c88b2fda7b
CI (push/PR): pre-commit lint, pytest matrix on Python 3.10-3.14,
sphinx docs build, poetry build + twine check with artifact upload.

Release (v* tags): build, twine check, poetry publish to PyPI via the
PYPI_TOKEN secret.

Containers use the public.ecr.aws docker.io mirror (anonymous, not
throttled). Tests run with dummy AWS credentials for placebo replay;
three tests broken on main (missing route53 placebos, vpc recordings
replaying ClientError) are deselected pending fixed recordings.
CI: runs-on ubuntu-latest, add workflow_dispatch trigger
Some checks failed
CI / Lint (pre-commit) (pull_request) Failing after 1m22s
CI / Tests (Python 3.11) (pull_request) Failing after 1m34s
CI / Tests (Python 3.10) (pull_request) Failing after 1m35s
CI / Tests (Python 3.12) (pull_request) Failing after 19s
CI / Tests (Python 3.13) (pull_request) Failing after 18s
CI / Docs build (pull_request) Failing after 3s
CI / Tests (Python 3.14) (pull_request) Failing after 15s
CI / Package build (pull_request) Failing after 7s
372039d318
The single registered runner advertises no 'docker' label; switch to
the conventional ubuntu-latest and add a manual dispatch trigger so
pipeline pickup can be verified without a merge to main.
CI: shell-based checkout, drop JS actions
Some checks failed
CI / Tests (Python 3.10) (pull_request) Successful in 1m29s
CI / Tests (Python 3.11) (pull_request) Successful in 1m19s
CI / Tests (Python 3.13) (pull_request) Has been cancelled
CI / Tests (Python 3.14) (pull_request) Has been cancelled
CI / Docs build (pull_request) Has been cancelled
CI / Package build (pull_request) Has been cancelled
CI / Tests (Python 3.12) (pull_request) Has been cancelled
CI / Lint (pre-commit) (pull_request) Has been cancelled
cda11145bf
actions/checkout and actions/upload-artifact are node actions executed
inside the job container; the python images have no node binary. Use a
plain git clone with the job-scoped github.token instead and drop the
artifact upload step.
CI: run ruff directly in the lint job
All checks were successful
CI / Lint (ruff) (pull_request) Successful in 17s
CI / Tests (Python 3.10) (pull_request) Successful in 2m9s
CI / Tests (Python 3.11) (pull_request) Successful in 1m50s
CI / Tests (Python 3.12) (pull_request) Successful in 1m45s
CI / Tests (Python 3.13) (pull_request) Successful in 1m40s
CI / Tests (Python 3.14) (pull_request) Successful in 1m52s
CI / Docs build (pull_request) Successful in 2m6s
CI / Package build (pull_request) Successful in 43s
1f1c8d9a55
The runner network cannot reach github.com, so pre-commit cannot
fetch its hook repositories there. Lint with ruff pinned to the lock
file version instead; pre-commit remains the local development tool.
Make CI logic portable: Makefile entry points, CodeBuild spec
All checks were successful
CI / Lint (ruff) (pull_request) Successful in 2m59s
CI / Tests (Python 3.10) (pull_request) Successful in 4m49s
CI / Tests (Python 3.11) (pull_request) Successful in 2m8s
CI / Tests (Python 3.12) (pull_request) Successful in 1m57s
CI / Tests (Python 3.13) (pull_request) Successful in 2m10s
CI / Tests (Python 3.14) (pull_request) Successful in 1m39s
CI / Package build (pull_request) Successful in 1m47s
CI / Docs build (pull_request) Successful in 2m16s
1f5c93265d
- Workflows now only bootstrap the environment and delegate to make
  targets (lint, test, docs, dist-check), so Forgejo Actions, GitHub
  Actions, AWS CodeBuild or a laptop run identical commands
- Makefile: dummy AWS credentials for placebo tests exported with ?=
  (overridable), docs target no longer opens a browser (new docs-open),
  new dist-check target (poetry build + twine check), release targets
  reuse dist-check, coverage via poetry run
- twine added to dev dependencies so dist-check works from the lock
- Optional buildspec.yml to run the same pipeline on AWS CodeBuild
johnpreston merged commit 2bbd22c613 into chore/test-cleanup 2026-09-13 20:29:42 +00:00
johnpreston deleted branch chore/forgejo-ci 2026-09-13 20:29:45 +00:00
Sign in to join this conversation.
No reviewers
No labels
ci::lib
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
compose-x/compose-x-common!5
No description provided.