Prebuilt CI images for Percona's PostgreSQL Team projects
Published to ghcr.io/percona-lab/pg_github_actions_images/<name>:<tag>.
| Image | Tags | Description |
|---|---|---|
postgres-source |
<flavor>-<major>-<compiler>-<build_type>-ubuntu<ubuntu> |
Source build of PostgreSQL |
psp |
<major>-ubuntu<ubuntu> (14–18) |
Percona Server for PostgreSQL installed from packages |
pgdg |
<major>-ubuntu<ubuntu> (14–18) |
PostgreSQL installed from PGDG packages |
base |
<ubuntu> (24.04) |
Base layer |
base-dev |
<ubuntu> (24.04) |
Base layer for source builds |
flavor is pgdg (postgres/postgres@REL_<major>_STABLE) or psp
(percona/postgres@PSP_REL_<major>_STABLE). build_type is
debugoptimized, exec-backend (gcc only) or sanitize (only
psp-18-clang-sanitize-ubuntu24.04).
All images are built for amd64. The following are also built for arm64, under
the same tags, for the ARM jobs (runs-on: ubuntu-24.04-arm):
baseandbase-dev:24.04postgres-source:psp-<16–19>-<gcc|clang>-debugoptimized-ubuntu24.04psp:<17|18>-ubuntu24.04
jobs:
build:
runs-on: ubuntu-24.04
container: ghcr.io/percona-lab/pg_github_actions_images/postgres-source:psp-18-gcc-debugoptimized-ubuntu24.04Set container: on the job. Note three things:
-
Steps run as the unprivileged
ciuser, not root, because PostgreSQL refuses to run as root.cihas UID 1001, the same as therunneruser on GitHub-hosted runners, so it owns the checkout and nothing needs achown. Usesudofor anything that needs root, such asapt-getor installing into the PGDG/Percona package paths; it is passwordless. -
The PostgreSQL source tree lives at
/opt/postgresand the installation at/usr/local/pgsql, not next to the checkout.PG_SOURCE_DIRandPG_INSTALL_DIRare set in the image; a project's CI scripts should honour them, so thatpg_config,pgindent,find_typedefandperltidyrcresolve correctly. -
The
sourcetree keeps its object files, somake installcheck-world(pg_tde's "PSP with TDE" job) or an in-tree contrib build can run in/opt/postgreswithout recompiling PostgreSQL first.