diff --git a/.github/PULL_REQUEST_TEMPLATE/new_extension.md b/.github/PULL_REQUEST_TEMPLATE/new_extension.md new file mode 100644 index 0000000..44c8600 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE/new_extension.md @@ -0,0 +1,87 @@ + + +## Extension + + + + + +Closes # + +--- + +## Contributor checklist + + + +- [ ] My commits are signed off for [DCO](https://developercertificate.org/) + compliance (`git commit -s`). +- [ ] Experimental commits have been squashed into a single, well-formed commit. +- [ ] This PR targets the `main` branch of the upstream repository. +- [ ] A [New Extension Proposal](https://github.com/cloudnative-pg/postgres-extensions-containers/issues/new/choose) + issue exists and is referenced via `Closes #` above. +- [ ] The commit message follows the format: + ``feat: add `` container image``. +- [ ] The Debian package was verified to exist in the `main` component on both + Debian `stable` (`trixie`) and `oldstable` (`bookworm`) via `apt search`. +- [ ] The extension was scaffolded with `task create-extension NAME=` and all + `TODO` comments in the generated files were resolved. +- [ ] `metadata.hcl` sets the correct `package` (full Debian version) and, when + `create_extension = true`, the matching `sql` (catalog) version. +- [ ] `create_extension` is set correctly (`false` for PostgreSQL *modules* with + no `.control` file, verified with `dpkg -L`). +- [ ] The `renovate:` annotations in `metadata.hcl` and `README.md` are present + and intact (`suite=`, `depName=`, `extractVersion=`). +- [ ] Every component in the image is covered by a license on the + [CNCF Allowlist](https://github.com/cncf/foundation/blob/main/policies-guidance/allowed-third-party-license-policy.md); + SPDX `licenses` in `metadata.hcl` are accurate. +- [ ] `task checks:all` passes locally. +- [ ] Full E2E passes: `task e2e:test:full TARGET=""`. +- [ ] `README.md` is complete and includes a working `Cluster` example (plus a + `Database` example with `CREATE EXTENSION` when `create_extension = true`). +- [ ] An entry for the new extension folder was added to + [`CODEOWNERS`](https://github.com/cloudnative-pg/postgres-extensions-containers/blob/main/CODEOWNERS) + with the component owner's GitHub handle(s). +- [ ] I confirm my commitment to maintain this extension on behalf of the + CloudNativePG community. + +--- + +## Maintainer review checklist + + + +- [ ] The linked proposal issue is approved (label `new-extension`) and the + `Closes #` reference is correct. +- [ ] CI is green: the `bake` workflow built the new target for the full + `pgVersions × distributions × {amd64, arm64}` matrix. +- [ ] DCO check passes and history is a single clean commit with the required + `feat: add ...` message format. +- [ ] License compliance reviewed: all redistributed components (extension + + transitive/system libs) are on the CNCF Allowlist; SPDX `licenses` match. +- [ ] `metadata.hcl` reviewed: `package`/`sql` versions, `create_extension`, + runtime settings (`shared_preload_libraries`, `*_path`, `env`, + `required_extensions`) and behavior flags are correct. +- [ ] `renovate:` annotations are intact so automated version PRs will track + the package going forward. +- [ ] `Dockerfile` reviewed: final stage is `FROM scratch` and contains only the + expected artifacts; the `USER 65532:65532` directive matches the nonroot + convention. +- [ ] E2E / Chainsaw tests pass: the extension is registered (when + `create_extension = true`), or the Cluster reaches Healthy with the image + mounted for preload-only modules. +- [ ] `README.md` is clear and its `Cluster` example (and `Database` example + when `create_extension = true`) are valid. +- [ ] `CODEOWNERS` entry is present and the component owner(s) accept the + long-term maintenance commitment. +- [ ] PR targets `main` and is ready to merge. diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 0000000..df91bd9 --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,59 @@ + + +## Description + + + + + +## Type of change + + + +- [ ] Update to an existing extension (version bump, fix) +- [ ] Shared build infrastructure / tooling change +- [ ] Documentation only +- [ ] Other (please describe above) + + + + +--- + +## Contributor checklist + +- [ ] My commits are signed off for [DCO](https://developercertificate.org/) + compliance (`git commit -s`). +- [ ] This PR targets the `main` branch of the upstream repository. +- [ ] `task checks:all` passes locally. +- [ ] For changes affecting one or more extensions, the relevant build and E2E + tests pass (e.g. `task bake TARGET=`, `task e2e:test:full TARGET=`). +- [ ] Any `// renovate:` comments touched in `metadata.hcl` / `README.md` remain + intact (`suite=`, `depName=`, `extractVersion=`). +- [ ] Documentation (`README.md`, `BUILD.md`, ...) updated where relevant. + +--- + +## Maintainer review checklist + + + +- [ ] CI is green for all affected targets / shared changes. +- [ ] DCO check passes. +- [ ] Change reviewed for correctness and scope; no unintended targets rebuilt. +- [ ] `// renovate:` annotations preserved so automated version tracking keeps + working. +- [ ] If shared infrastructure changed, the `_shared` filter in + `.github/workflows/bake.yml` was updated when all extensions must rebuild. +- [ ] PR targets `main` and is ready to merge. diff --git a/CONTRIBUTING_NEW_EXTENSION.md b/CONTRIBUTING_NEW_EXTENSION.md index 60406bd..9b76769 100644 --- a/CONTRIBUTING_NEW_EXTENSION.md +++ b/CONTRIBUTING_NEW_EXTENSION.md @@ -302,5 +302,14 @@ Submission Requirements: file listing the GitHub handles of the component owner(s) for the new extension folder. +> [!IMPORTANT] +> When opening the Pull Request, use the **new extension** template, which +> includes the full contributor checklist for this lifecycle. GitHub does not +> show a chooser for PR templates, so open the PR with this link to preselect +> it: +> [Open a new-extension PR](https://github.com/cloudnative-pg/postgres-extensions-containers/compare?expand=1&template=new_extension.md). +> For any other change (version bumps, fixes, tooling, docs), the default +> template is applied automatically, so you can open the PR normally. + By submitting, you confirm your commitment to maintain this extension on behalf of the CloudNativePG Community.