Skip to content

feat(workflows): add python-app CI + python-release gold-standard reusables#252

Merged
CybotTM merged 1 commit into
mainfrom
feat/python-gold-standard
Jul 21, 2026
Merged

feat(workflows): add python-app CI + python-release gold-standard reusables#252
CybotTM merged 1 commit into
mainfrom
feat/python-gold-standard

Conversation

@CybotTM

@CybotTM CybotTM commented Jul 21, 2026

Copy link
Copy Markdown
Member

Adds the python-app archetype gold standard: python-app-ci.yml (meta: python-ci + python-build + python-audit + codeql + gitleaks + dependency-review + zizmor + scorecard, all toggleable) + python-release.yml (tag-triggered: build -> OIDC PyPI publish -> GitHub Release; environment: gate only on publish; publish-pypi:false = GH-Release-only). Prereq: PyPI Trusted Publishing must be configured before python-release can go green. Local linters clean. Piloted against coding_agent_cli_toolset before merge.

…sables

Signed-off-by: Sebastian Mendel <sebastian.mendel@netresearch.de>
Copilot AI review requested due to automatic review settings July 21, 2026 06:09
@sonarqubecloud

Copy link
Copy Markdown

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request updates the documentation in docs/reusable-workflow-permissions.md to specify permissions for individual Python workflows instead of using a wildcard. A review comment suggests sorting the list of workflows requiring contents: read alphabetically to improve readability and maintainability.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

Comment thread docs/reusable-workflow-permissions.md
@CybotTM
CybotTM merged commit 291e8ab into main Jul 21, 2026
11 of 12 checks passed
@CybotTM
CybotTM deleted the feat/python-gold-standard branch July 21, 2026 06:23
CybotTM added a commit to netresearch/coding_agent_cli_toolset that referenced this pull request Jul 21, 2026
## What

Pilot the new `python-app-ci.yml` gold-standard **meta**-reusable from
`netresearch/.github` on this repo.

One `app-ci` call now composes:
- **python-ci** — lint (flake8) + type-check (mypy, non-blocking) +
tests (pytest + coverage)
- **python-build** — `python -m build` + `twine check`
- **python-audit** — pip-audit + bandit + CycloneDX SBOM
- **gitleaks** — secret scanning
- **dependency-review** — on PRs

This replaces the former separate `lint` / `test` / `build`
reusable-call jobs in `ci.yml` **and** the `audit` job in `security.yml`
(deleted). Bespoke jobs `shell-tests`, `docs`, `integration-e2e` are
kept unchanged as siblings.

## Reference pinning

The meta is pinned to `netresearch/.github@feat/python-gold-standard`
(not yet on `main`). **Flip to `@main` after netresearch/.github#252
merges.**

## Input mapping (repo commands → meta inputs)

| Meta input | Value |
|---|---|
| `package-manager` | `pip` |
| `python-versions` | `["3.14"]` |
| `os-versions` | ubuntu + macos + windows (preserves the prior cross-OS
test matrix) |
| `install-cmd` | `pip install -r requirements-dev.txt` |
| `lint-cmd` | the repo's existing flake8 command |
| `type-check-cmd` | `mypy cli_audit --ignore-missing-imports \|\| true`
(kept non-blocking) |
| `test-cmd` | the repo's existing unit + integration pytest command |
| `enable-build` | true (`python -m build` / `twine check dist/*`) |
| `run-bandit` | true (matches prior default) |
| `enable-gitleaks` | true (org `GITLEAKS_LICENSE` available) |
| `enable-codeql` | **false** — repo uses CodeQL **default setup**
(actions + python); enabling the advanced workflow would conflict |

## Pilot findings / notes for reviewers

1. **Coverage upload gate mismatch (meta gap).** The meta does not
expose `coverage-os` / `coverage-python-version`; the underlying
`python-ci.yml` defaults `coverage-python-version` to `3.13`. This repo
is `3.14`-only, so the Codecov upload gate never matches and coverage
will **not** upload despite `coverage-upload: true`. Recommend the meta
forward those two inputs (or default the coverage cell to the first
matrix entry).
2. **Dropped weekly schedule.** The deleted `security.yml` ran the audit
on a weekly cron (`0 6 * * 1`) in addition to push/PR. The meta/`ci.yml`
runs on push/PR only. If the weekly scheduled audit should be preserved,
add a `schedule:` trigger to `ci.yml` or keep a slimmed schedule-only
`security.yml`.
3. Combining lint/type/test into one matrixed `ci` job means flake8 +
mypy now also run on macOS/windows cells (previously ubuntu-only); tests
already ran on all three.

## Do not merge

Pilot only. No branch-protection changes (repo has no required status
checks configured).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants