Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
2899dfd
feat: add `pgvector` extension and project scaffolding (#3)
NiccoloFei Nov 6, 2025
85e3abb
feat: introduce PostGIS extension container image (#5)
NiccoloFei Nov 26, 2025
9e789ab
chore: improve Makefile (#12)
mnencia Nov 26, 2025
6171ab5
feat: add TimescaleDB to workflow options and update filters
shusaan Nov 30, 2025
e42d335
fix: remove redundant postgresql section in README.md
shusaan Nov 30, 2025
dc1e2b2
chore: all the GitHub actions update into one PR (#33)
sxd Dec 1, 2025
4d5f6b5
chore(deps): update all github action (#34)
renovate[bot] Dec 1, 2025
fda41c0
chore(deps): update actions/checkout action to v6 (#35)
renovate[bot] Dec 1, 2025
5802cc4
feat: add `pgaudit` extension (#1)
shusaan Dec 2, 2025
c33b825
docs: licensing and governance policies (#38)
gbartolini Dec 3, 2025
008a6d3
feat: add `pgmajor` and `os` labels and annotations (#43)
NiccoloFei Dec 5, 2025
e35b464
ci: properly handle an empty strategy matrix (#44)
NiccoloFei Dec 5, 2025
921d1c9
ci: automate the update of OS libraries (#45)
GabriFedi97 Dec 9, 2025
b8befcf
chore(deps): update actions/checkout action to v6 (#50)
renovate[bot] Dec 9, 2025
57433fb
chore(deps): update all github action (#37)
renovate[bot] Dec 9, 2025
0c06c57
chore(deps): update peter-evans/create-pull-request action to v8 (#52)
renovate[bot] Dec 10, 2025
f66c935
docs: add image labels and annotations documentation (#46)
mnencia Dec 10, 2025
58c6ff4
ci: allow creating PRs for OS libraries changes (#51)
NiccoloFei Dec 10, 2025
134f6a1
chore(github): implement 'New Extension Proposal' issue template (#48)
gbartolini Dec 10, 2025
5f29601
chore: update postgis OS libraries (#57)
cnpg-bot Dec 10, 2025
c5da619
add timescaledb in README
shusaan Dec 11, 2025
311f099
feat: automate generation of chainsaw testing values (#56)
NiccoloFei Dec 15, 2025
a0d99ad
fix: restore *shared to postgis
shusaan Dec 16, 2025
c0a7847
feat(timescaledb): switch to Apache 2.0 licensed OSS edition
shusaan Jan 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
blank_issues_enabled: true
- name: Slack chat
url: https://github.com/cloudnative-pg/cloudnative-pg?tab=readme-ov-file#communications
about: Please join the slack channel and interact with our community
120 changes: 120 additions & 0 deletions .github/ISSUE_TEMPLATE/extension.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
name: New Extension Proposal
description: Propose a new PostgreSQL extension to be included in the containers and commit to its maintenance.
title: "[New Extension]: "
labels: ["triage", "new-extension"]
projects: ["cloudnative-pg/postgres-extensions-containers"]
body:
- type: markdown
attributes:
value: |
Thanks for proposing a new extension for the PostgreSQL Extensions Containers project!

The submission process requires the proposer to commit to becoming the **Component Owner** and taking on the long-term maintenance of the extension image. Please review the [governance document for the submission process](https://github.com/cloudnative-pg/postgres-extensions-containers?tab=readme-ov-file#submission-process).

- type: checkboxes
id: search
attributes:
label: Is there an existing issue for this extension request?
description: Before you submit a request, please **search existing issues** to ensure this extension hasn't already been proposed.
options:
- label: I have searched for an existing issue, and could not find a duplicate request.
required: true

- type: input
id: extension-name
attributes:
label: Extension Name
description: What is the official name of the PostgreSQL extension?
placeholder: ex. pgvector
validations:
required: true

- type: input
id: project-url
attributes:
label: Project Repository URL
description: The URL of the main source code repository (e.g., GitHub, GitLab).
placeholder: ex. https://github.com/pgvector/pgvector
validations:
required: true

- type: input
id: website-url
attributes:
label: Extension Website URL (Optional)
description: The URL of the official website or main documentation page.
placeholder: ex. https://pgvector.io/
validations:
required: false

- type: textarea
id: description
attributes:
label: Short Description
description: A brief description of the extension and its primary use case.
placeholder: ex. The pgvector extension provides vector similarity search capabilities for PostgreSQL.
validations:
required: true

- type: input
id: license-url
attributes:
label: Main LICENSE Link
description: A direct link to the main license file in the repository (e.g., a link to the raw LICENSE file).
placeholder: ex. https://github.com/pgvector/pgvector/blob/master/LICENSE
validations:
required: true

- type: checkboxes
id: license-check
attributes:
label: License Compliance
description: Please confirm the license of the extension complies with the **allowed licenses** for this project.
options:
- label: The extension's license (linked above) complies with the list of allowed licenses.
required: true

- type: textarea
id: dependent-extensions
attributes:
label: Known Dependent Extensions
description: List any other PostgreSQL extensions that MUST be installed before or alongside this extension (e.g., if this extension requires 'plpgsql' or 'postgis' to be present). If none, please state "None".
placeholder: ex. postgis
validations:
required: true

- type: checkboxes
id: maintenance-commitment
attributes:
label: Component Owner and Maintenance Commitment
description: By checking this box, you confirm your commitment to the long-term maintenance of the extension image. This includes providing updates for new upstream versions, responding to security issues, and ensuring compatibility with new PostgreSQL/OS versions.
options:
- label: I/My organization commit to becoming the Component Owner and maintaining the extension image in the future.
required: true

- type: textarea
id: additional-notes
attributes:
label: Additional Notes (Optional)
description: Any other relevant information, required dependencies (like OS packages), or context that might be useful for packaging.
placeholder: ex. This extension requires the 'openssl' library (OS package) to be installed.
validations:
required: false

- type: input
id: github-handles
attributes:
label: GitHub Handles of Component Owners
description: List the GitHub handles (e.g., `@user1`, `@org/team`) that will be responsible for maintaining the extension and should be added to the `CODEOWNERS` file.
placeholder: ex. @user1
validations:
required: true

- type: checkboxes
id: terms
attributes:
label: Code of Conduct
description: By submitting this issue, you agree to follow our [Code of Conduct](https://github.com/cloudnative-pg/governance/blob/main/CODE_OF_CONDUCT.md)
options:
- label: I agree to follow this project's Code of Conduct
required: true
94 changes: 94 additions & 0 deletions .github/workflows/bake.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
name: Build, test and publish extensions

on:
push:
workflow_dispatch:
inputs:
extension_name:
description: "The PostgreSQL extension to build (directory name)"
required: true
type: choice
options:
- pgvector
- postgis
- pgaudit

defaults:
run:
shell: 'bash -Eeuo pipefail -x {0}'

permissions: {}

jobs:
# Gather extensions that have been modified
change-triage:
name: Check changed files
runs-on: ubuntu-24.04
outputs:
matrix: ${{ steps.get-matrix.outputs.matrix}}
steps:
- name: Checkout
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
with:
persist-credentials: false

- name: Check for changes
uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
id: filter
with:
filters: |
_shared: &shared
- 'docker-bake.hcl'
- 'Makefile'
- 'kind-config.yaml'
- 'test/**'
- '.github/workflows/bake*.yml'
pgvector:
- 'pgvector/**'
- *shared
postgis:
- 'postgis/**'
- *shared
timescaledb:
- 'timescaledb/**'
- *shared
pgaudit:
- 'pgaudit/**'
- *shared

# Compute a matrix containing the list of all extensions that have been modified
- name: Compute matrix
id: get-matrix
env:
# JSON array containing the extensions that have been changed
CHANGES: ${{ steps.filter.outputs.changes }}
# Input Extension name
INPUT_EXTENSION_NAME: ${{ github.event.inputs.extension_name }}
run: |
if [[ "${{ github.event_name }}" == 'workflow_dispatch' ]]; then
CHANGES="[\"$INPUT_EXTENSION_NAME\"]"
fi

# Filter away the shared filter
EXTENSIONS_CHANGED=$(echo "$CHANGES" | jq -c 'map(select(. != "_shared"))')

echo "matrix=$EXTENSIONS_CHANGED" >> "$GITHUB_OUTPUT"

Bake:
name: Bake
needs: change-triage
permissions:
packages: write
contents: read
id-token: write
security-events: write
if: ${{ join(fromJSON(needs.change-triage.outputs.matrix)) != '' }}
strategy:
fail-fast: false
matrix:
extension: ${{ fromJSON(needs.change-triage.outputs.matrix) }}
uses: ./.github/workflows/bake_targets.yml
with:
extension_name: ${{ matrix.extension }}
secrets:
SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
Loading