Container Images from Commitest patch #48
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Container Images from Commitest patch | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| patch_id: | |
| description: "ID of the Patch" | |
| required: true | |
| major_version: | |
| description: "PostgreSQL major version (leave empty for default)" | |
| required: false | |
| defaults: | |
| run: | |
| # default failure handling for shell scripts in 'run' steps | |
| shell: 'bash -Eeuo pipefail -x {0}' | |
| jobs: | |
| build-pg: | |
| name: Build the patch for PostgreSQL | |
| runs-on: ubuntu-24.04 | |
| permissions: | |
| contents: read | |
| packages: write | |
| outputs: | |
| images: ${{ env.IMAGES }} | |
| steps: | |
| - name: Checkout Code | |
| uses: actions/checkout@v4 | |
| - name: Set env variables from defaults.json | |
| run: | | |
| for key in $(jq -r 'keys[]' defaults.json); do | |
| echo "$key=$(cat defaults.json | jq -r --arg key "$key" '.[$key]')" >> $GITHUB_ENV | |
| done | |
| # Inputs have priority over defaults.json. | |
| - name: Evaluate E2E workflow inputs | |
| run: | | |
| if [[ -n "${{ github.event.inputs.major_version }}" ]]; then | |
| echo "PG_MAJOR=${{ github.event.inputs.major_version }}" >> $GITHUB_ENV | |
| fi | |
| - name: Set commitfest branch and tag | |
| run: | | |
| BRANCH="cf/${{ github.event.inputs.patch_id }}" | |
| TAG="${BRANCH////-}" | |
| echo "TAG=${TAG}" >> $GITHUB_ENV | |
| echo "BRANCH=${BRANCH}" >> $GITHUB_ENV | |
| - name: Log in to the GitHub Container registry | |
| uses: docker/login-action@v3 | |
| with: | |
| registry: ghcr.io | |
| username: ${{ github.actor }} | |
| password: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Set up Docker Buildx | |
| uses: docker/setup-buildx-action@v3 | |
| - name: Build and push | |
| uses: docker/bake-action@v6 | |
| id: build | |
| env: | |
| environment: production | |
| registry: ghcr.io/${{ github.repository_owner }} | |
| revision: ${{ github.sha }} | |
| pgMajor: ${{ env.PG_MAJOR }} | |
| with: | |
| set: | | |
| *.args.PG_REPO=https://github.com/postgresql-cfbot/postgresql.git | |
| *.args.PG_BRANCH=${{ env.BRANCH }} | |
| minimal.tags=${{ env.registry }}/postgresql-trunk:18-minimal-${{ env.TAG }} | |
| standard.tags=${{ env.registry }}/postgresql-trunk:18-standard-${{ env.TAG }} | |
| postgis.tags=${{ env.registry }}/postgresql-trunk:18-postgis-${{ env.TAG }} | |
| push: true | |
| # Get a list of the images that were built and pushed. | |
| - name: Generated images | |
| id: images | |
| run: | | |
| IMAGES="$(echo '${{ steps.build.outputs.metadata }}' | jq -r '.[]."image.name"')" | |
| { | |
| echo 'IMAGES<<EOF' | |
| echo "${IMAGES}" | |
| echo EOF | |
| } >> $GITHUB_ENV | |
| generate-summary: | |
| name: Commitfest Image Build summary | |
| runs-on: ubuntu-24.04 | |
| needs: | |
| - build-pg | |
| steps: | |
| - name: Output summary | |
| run: | | |
| commitFestPatchID=${{ github.event.inputs.patch_id }} | |
| commitFestURL="https://commitfest.postgresql.org/patch/${commitFestPatchID}" | |
| image="${{ needs.build-pg.outputs.images }}" | |
| images_list="$(echo $images | tr ' ' '\n' | sed 's/^/https:\/\//')" | |
| standardImage="$(echo $images | tr ' ' '\n' | grep standard)" | |
| echo "# Commitfest Image Build summary" >> $GITHUB_STEP_SUMMARY | |
| echo "**Commitfest Patch URL**: [$commitFestPatchID]($commitFestURL)" >> $GITHUB_STEP_SUMMARY | |
| echo "Here's the list of Container Images that have been built:" >> $GITHUB_STEP_SUMMARY | |
| echo "$images_list" >> $GITHUB_STEP_SUMMARY | |
| echo "## CloudNativePG Cluster definition" >> $GITHUB_STEP_SUMMARY | |
| echo "You can create a cluster in CloudNativePG running this image:" >> $GITHUB_STEP_SUMMARY | |
| echo "\`\`\`sh" >> $GITHUB_STEP_SUMMARY | |
| echo "(cat <<EOF" >> $GITHUB_STEP_SUMMARY | |
| echo "apiVersion: postgresql.cnpg.io/v1" >> $GITHUB_STEP_SUMMARY | |
| echo "kind: Cluster" >> $GITHUB_STEP_SUMMARY | |
| echo "metadata:" >> $GITHUB_STEP_SUMMARY | |
| echo " name: commitfest-$commitFestPatchID" >> $GITHUB_STEP_SUMMARY | |
| echo "spec:" >> $GITHUB_STEP_SUMMARY | |
| echo " imageName: $standardImage" >> $GITHUB_STEP_SUMMARY | |
| echo " instances: 3" >> $GITHUB_STEP_SUMMARY | |
| echo " storage:" >> $GITHUB_STEP_SUMMARY | |
| echo " size: 1Gi" >> $GITHUB_STEP_SUMMARY | |
| echo "EOF" >> $GITHUB_STEP_SUMMARY | |
| echo ") | kubectl apply -f -" >> $GITHUB_STEP_SUMMARY | |
| echo "\`\`\`" >> $GITHUB_STEP_SUMMARY |