name: Build custom container images on: push: branches: - main workflow_dispatch: schedule: - cron: "27 3 * * 1" permissions: contents: read packages: write env: REGISTRY: git.ajpanton.se OWNER: ajp_anton PG_VERSION: "18" POSTGIS_VERSION: "3" VCHORD_VERSION: "0.5.3" PHP_VERSION: "8" jobs: build: runs-on: ubuntu-latest strategy: fail-fast: false matrix: image: - name: postgres-custom context: postgres base_image: postgres:18 primary_tag: git.ajpanton.se/ajp_anton/postgres-custom:18 oci_labels: | org.opencontainers.image.title=PostgreSQL 18 with extensions org.opencontainers.image.description=PostgreSQL 18 with PostGIS, pgvector, pg_cron, and VectorChord preloaded. org.opencontainers.image.documentation=https://git.ajpanton.se/ajp_anton/docker-images#postgres-custom org.opencontainers.image.source=https://git.ajpanton.se/ajp_anton/docker-images org.opencontainers.image.url=https://git.ajpanton.se/ajp_anton/-/packages/container/postgres-custom tags: | git.ajpanton.se/ajp_anton/postgres-custom:18 git.ajpanton.se/ajp_anton/postgres-custom:18-postgis3-vchord0.5.3 git.ajpanton.se/ajp_anton/postgres-custom:latest build_args: | PG_VERSION=18 POSTGIS_VERSION=3 VCHORD_VERSION=0.5.3 fingerprint_command: | { dpkg-query -W -f='${binary:Package}=${Version}\n' | LC_ALL=C sort; find /usr/lib/postgresql -type f -exec sha256sum {} + | LC_ALL=C sort; } - name: php8-pgsql context: php8-pgsql base_image: php:8-fpm-alpine primary_tag: git.ajpanton.se/ajp_anton/php8-pgsql:8 oci_labels: | org.opencontainers.image.title=PHP 8 FPM with PostgreSQL support org.opencontainers.image.description=PHP 8 FPM on Alpine with libpq and the pdo_pgsql extension enabled. org.opencontainers.image.documentation=https://git.ajpanton.se/ajp_anton/docker-images#php8-pgsql org.opencontainers.image.source=https://git.ajpanton.se/ajp_anton/docker-images org.opencontainers.image.url=https://git.ajpanton.se/ajp_anton/-/packages/container/php8-pgsql tags: | git.ajpanton.se/ajp_anton/php8-pgsql:8 git.ajpanton.se/ajp_anton/php8-pgsql:8-fpm-alpine git.ajpanton.se/ajp_anton/php8-pgsql:latest build_args: | PHP_VERSION=8 fingerprint_command: | { apk info -v | LC_ALL=C sort; find /usr/local/lib/php/extensions /usr/local/etc/php/conf.d -type f -exec sha256sum {} + | LC_ALL=C sort; } - name: python-tools context: python-tools base_image: python:3 primary_tag: git.ajpanton.se/ajp_anton/python-tools:3 oci_labels: | org.opencontainers.image.title=Python 3 tools with ExifTool org.opencontainers.image.description=Python 3 utility image with ExifTool for local helper workflows. org.opencontainers.image.documentation=https://git.ajpanton.se/ajp_anton/docker-images#python-tools org.opencontainers.image.source=https://git.ajpanton.se/ajp_anton/docker-images org.opencontainers.image.url=https://git.ajpanton.se/ajp_anton/-/packages/container/python-tools tags: | git.ajpanton.se/ajp_anton/python-tools:3 git.ajpanton.se/ajp_anton/python-tools:latest build_args: | PYTHON_VERSION=3 fingerprint_command: | dpkg-query -W -f='${binary:Package}=${Version}\n' | LC_ALL=C sort steps: - name: Check out repository uses: actions/checkout@v4 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Log in to Gitea container registry run: | printf '%s' "$REGISTRY_TOKEN" | docker login "$REGISTRY" --username "$REGISTRY_USERNAME" --password-stdin - name: Build and push ${{ matrix.image.name }} env: IMAGE_NAME: ${{ matrix.image.name }} BUILD_CONTEXT: ${{ matrix.image.context }} BASE_IMAGE: ${{ matrix.image.base_image }} PRIMARY_TAG: ${{ matrix.image.primary_tag }} TAGS: ${{ matrix.image.tags }} OCI_LABELS: ${{ matrix.image.oci_labels }} BUILD_ARGS: ${{ matrix.image.build_args }} FINGERPRINT_COMMAND: ${{ matrix.image.fingerprint_command }} run: ./scripts/build-image-if-changed.sh