Files
docker-images/.gitea/workflows/build-images.yaml
T
ajp_anton 4cc2e8fc80
Build custom container images / build (map[base_image:php:8-fpm-alpine build_args:PHP_VERSION=8 context:php8-pgsql 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:ph… (push) Successful in 49s
Build custom container images / build (map[base_image:postgres:18 build_args:PG_VERSION=18 POSTGIS_VERSION=3 VCHORD_VERSION=0.5.3 context:postgres fingerprint_command:{ dpkg-query -W -f='${binary:Package}=${Version}\n' | LC_ALL=C sort; find /usr/lib/postgresql -type f -exec sha256su… (push) Successful in 1m42s
Build custom container images / build (map[base_image:python:3 build_args:PYTHON_VERSION=3 context:python-tools fingerprint_command:{ dpkg-query -W -f='${binary:Package}=${Version}\n' | LC_ALL=C sort; pip freeze | LC_ALL=C sort; } name:python-tools oci_labels:org.opencontainers.ima… (push) Successful in 54s
Build custom container images / build (map[base_image:python:3.12-slim build_args:PYTHON_VERSION=3.12-slim context:linkki-tiedotus fingerprint_command:{ dpkg-query -W -f='${binary:Package}=${Version}\n' | LC_ALL=C sort; pip freeze | LC_ALL=C sort; } name:linkki-tiedotus oci_labels:… (push) Successful in 29s
Build custom container images / build (map[base_image:python:3.12-slim build_args:PYTHON_VERSION=3.12-slim context:timepoll fingerprint_command:{ dpkg-query -W -f='${binary:Package}=${Version}\n' | LC_ALL=C sort; pip freeze | LC_ALL=C sort; } name:timepoll oci_labels:org.opencontai… (push) Successful in 44s
Add Timepoll availability polling application and image
2026-09-09 19:39:40 +00:00

149 lines
7.1 KiB
YAML

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 and task runner
org.opencontainers.image.description=Python 3 utility image with ExifTool and an optional web control panel for mounted task scripts.
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; pip freeze | LC_ALL=C sort; }
- name: linkki-tiedotus
context: linkki-tiedotus
base_image: python:3.12-slim
primary_tag: git.ajpanton.se/ajp_anton/linkki-tiedotus:1
oci_labels: |
org.opencontainers.image.title=Linkki Telegram Broadcast Editor
org.opencontainers.image.description=Web editor and scheduler for multilingual Telegram channel broadcasts.
org.opencontainers.image.documentation=https://git.ajpanton.se/ajp_anton/docker-images#linkki-tiedotus
org.opencontainers.image.source=https://git.ajpanton.se/ajp_anton/docker-images
org.opencontainers.image.url=https://git.ajpanton.se/ajp_anton/-/packages/container/linkki-tiedotus
tags: |
git.ajpanton.se/ajp_anton/linkki-tiedotus:1
git.ajpanton.se/ajp_anton/linkki-tiedotus:latest
build_args: |
PYTHON_VERSION=3.12-slim
fingerprint_command: |
{ dpkg-query -W -f='${binary:Package}=${Version}\n' | LC_ALL=C sort; pip freeze | LC_ALL=C sort; }
- name: timepoll
context: timepoll
base_image: python:3.12-slim
primary_tag: git.ajpanton.se/ajp_anton/timepoll:1
oci_labels: |
org.opencontainers.image.title=Timepoll
org.opencontainers.image.description=Self-hosted availability polls with timezone-aware voting and live updates.
org.opencontainers.image.documentation=https://git.ajpanton.se/ajp_anton/docker-images/src/branch/main/timepoll/README.md
org.opencontainers.image.source=https://git.ajpanton.se/ajp_anton/docker-images
org.opencontainers.image.url=https://git.ajpanton.se/ajp_anton/-/packages/container/timepoll
tags: |
git.ajpanton.se/ajp_anton/timepoll:1
git.ajpanton.se/ajp_anton/timepoll:latest
build_args: |
PYTHON_VERSION=3.12-slim
fingerprint_command: |
{ dpkg-query -W -f='${binary:Package}=${Version}\n' | LC_ALL=C sort; pip freeze | 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: Test Timepoll
if: matrix.image.name == 'timepoll'
run: |
tar -C timepoll -cf - . | docker run --rm -i --workdir /app python:3.12-slim \
sh -c 'tar -xf - && pip install --no-cache-dir -r requirements.txt pytest httpx && PYTHONDONTWRITEBYTECODE=1 pytest -q -p no:cacheprovider'
- 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