Files
cnpg-postgres-containers/.github/workflows/catalogs.yml
Niccolò Fei 15d90eebd4 feat: add reusable GitHub Action to generate ImageCatalogs (#323)
Introduces a composite action that wraps `catalogs_generator.py` to
generate CloudNativePG ImageCatalog YAMLs from a container registry.
Supports multiple image types, distributions, and custom family prefixes.
Generates a `kustomization.yaml` for easy deployment of all catalogs.

Related to  cloudnative-pg/postgis-containers#100

Closes #324

Signed-off-by: Niccolò Fei <niccolo.fei@enterprisedb.com>
Signed-off-by: Gabriele Bartolini <gabriele.bartolini@enterprisedb.com>
Signed-off-by: Marco Nenciarini <marco.nenciarini@enterprisedb.com>
Co-authored-by: Gabriele Bartolini <gabriele.bartolini@enterprisedb.com>
Co-authored-by: Marco Nenciarini <marco.nenciarini@enterprisedb.com>
2025-09-24 18:14:03 +02:00

103 lines
3.7 KiB
YAML

name: Update Catalogs
on:
workflow_dispatch:
repository_dispatch:
types: [update-catalogs]
permissions: read-all
defaults:
run:
shell: "bash -Eeuo pipefail -x {0}"
jobs:
update-catalogs:
runs-on: ubuntu-24.04
steps:
# TODO: remove this step once system images are EOL
- name: Checkout code
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
with:
path: postgres-containers
token: ${{ secrets.REPO_GHA_PAT }}
- name: Checkout artifacts
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
with:
path: artifacts
repository: cloudnative-pg/artifacts
token: ${{ secrets.REPO_GHA_PAT }}
ref: main
- name: Generate catalogs
uses: ./postgres-containers/.github/actions/generate-catalogs
with:
output-dir: artifacts/image-catalogs/
registry: ghcr.io/cloudnative-pg/postgresql
family: postgresql
distributions: bullseye,bookworm,trixie
image-types: minimal,standard,system
regex: '(\d+)(?:\.\d+|beta\d+|rc\d+|alpha\d+)-(\d{12})'
# TODO: remove this step once system images are EOL
- name: Update legacy catalogs
run: |
cp artifacts/image-catalogs/catalog-system-bullseye.yaml postgres-containers/Debian/ClusterImageCatalog-bullseye.yaml
cp artifacts/image-catalogs/catalog-system-bookworm.yaml postgres-containers/Debian/ClusterImageCatalog-bookworm.yaml
yq -i '.metadata.name = "postgresql"' postgres-containers/Debian/ClusterImageCatalog-bullseye.yaml
yq -i '.metadata.name = "postgresql"' postgres-containers/Debian/ClusterImageCatalog-bookworm.yaml
- name: Diff
working-directory: artifacts
run: |
git add -A .
git status
git diff --staged
- uses: EndBug/add-and-commit@a94899bca583c204427a224a7af87c02f9b325d5 # v9
if: ${{ github.ref == 'refs/heads/main' }}
with:
cwd: 'artifacts'
add: 'image-catalogs'
author_name: CloudNativePG Automated Updates
author_email: noreply@cnpg.com
message: 'chore: update imageCatalogs'
# TODO: remove this step once system images are EOL
- name: Temporarily disable "include administrators" branch protection
if: ${{ always() && github.ref == 'refs/heads/main' }}
id: disable_include_admins
uses: benjefferies/branch-protection-bot@af281f37de86139d1c7a27b91176b5dc1c2c827c # v1.1.2
with:
access_token: ${{ secrets.REPO_GHA_PAT }}
branch: main
enforce_admins: false
# TODO: remove this step once system images are EOL
- name: Legacy diff
working-directory: postgres-containers
run: |
git add -A .
git status
git diff --staged
# TODO: remove this step once system images are EOL
- uses: EndBug/add-and-commit@a94899bca583c204427a224a7af87c02f9b325d5 # v9
if: ${{ github.ref == 'refs/heads/main' }}
with:
cwd: 'postgres-containers'
add: 'Debian/*.yaml'
author_name: CloudNativePG Automated Updates
author_email: noreply@cnpg.com
message: 'chore: update imageCatalogs'
# TODO: remove this step once system images are EOL
- name: Enable "include administrators" branch protection
uses: benjefferies/branch-protection-bot@af281f37de86139d1c7a27b91176b5dc1c2c827c # v1.1.2
if: ${{ always() && github.ref == 'refs/heads/main' }}
with:
access_token: ${{ secrets.REPO_GHA_PAT }}
branch: main
enforce_admins: ${{ steps.disable_include_admins.outputs.initial_status }}