Skip to content

Run sqitch and pgTAP for PostgreSQL without installing them from docker

License

Notifications You must be signed in to change notification settings

KineticCafe/docker-sqitch-pgtap

Repository files navigation

[ghcr.io/]kineticcafe/sqitch-pgtap: Sqitch/PostgreSQL & pgTAP in Docker

This is a simple Docker container that contains sqitch, pgTAP, and pg_prove for use with PostgreSQL. It has been created so that it's easier to work with sqitch and pg_prove/pgTAP without going through the effort of installing them on various systems.

The image is based on Alpine 3.19 and does not include a PostgreSQL server; instead, it is expected that all values will be provided through environment variables or on the command-line.

Unless otherwise noted, pgTAP will be installed from PGXN.

This version of the container includes:

  • pgTAP 1.3.3 (from theory/pgtap@02bc769c92c48d01e4c2f76db6523287017b45a9)
    • Full support for PostgreSQL 12, 13, 14, 15, and 16
    • Best effort support for end of life PostgreSQL versions 9.6, 10, and 11
  • pg_prove 3.36
  • Sqitch 1.4.1

The version of pgTAP is installed and uninstalled as needed; unit test files must not include CREATE EXTENSION pgtap.

These images can be pulled either from Docker Hub (kineticcafe/sqitch-pgtap:2.7) or the GitHub Container Registry (ghcr.io/kineticcafe/sqitch-pgtap:2.7).

kineticcafe-sqitch-pgtap script Commands

The kineticcafe-sqitch-pgtap script is recommended for running everything as it manages environment variable configuration for each run. The kineticcafe-sqitch-pgtap script will pull from ghcr.io/kineticcafe/sqitch-pgtap:2 by default; this can be overridden by using $IMAGE:

$ IMAGE=kineticcafe/sqitch-pgtap:latest ./run version
[gchr.io/]kineticcafe/sqitch-pgtap:2.7.0

  alpine 3.19
  sqitch (App::Sqitch) v1.4.1
  pgtap 1.3.3
  pg_prove 3.36

Last updated 2024-04-22

Installing kineticcafe-sqitch-pgtap

kineticcafe-sqitch-pgtap can be installed with symlinks using the install script:

curl -sSL --fail \
  https://raw.githubusercontent.com/KineticCafe/docker-sqitch-pgtap/main/install |
  bash -s -- ~/.local/bin

Replace ~/.local/bin with your preferred binary directory.

By default, it will download kineticcafe-sqitch-pgtap from GitHub and install it in the provided TARGET and make symbolic links for the following commands: sqitch, sqitcher, and pgtap. Symbolic link creation will not overwrite files or symbolic links to locations other than TARGET/kinetic-sqitch-pgtap.

sqitcher is a shorter name for kineticcafe-sqitch-pgtap.

--no-symlinks (-S) may be specified to skip symbolic link creation entirely.

--force (-f) may be specified to install kineticcafe-sqitch-pgtap even if it already exists, and to overwrite files and non-TARGET/kineticcafe-sqitch-pgtap symbolic links.

--verbose (-v) will turn on trace output of commands.

Core commands

  • sqitch: Runs Sqitch
  • pg_prove: Runs pg_prove directly
  • pgtap install: Installs pgTAP in the current database
  • pgtap uninstall: Uninstalls pgTAP from the current database
  • pgtap test: Installs pgTAP, runs pg_prove, and then uninstalls pgTAP
  • version: Prints the versions of the applications

PostgreSQL commands

  • createdb
  • dropdb
  • psql
  • pg_config
  • pg_controldata
  • pg_ctl
  • pg_archivecleanup
  • pg_basebackup
  • pg_dump
  • pg_dumpall
  • pg_restore
  • pg_isready
  • pg_standby
  • pg_test_fsync
  • pg_test_timing
  • pg_recvlogical
  • pg_rewind
  • pg_upgrade
  • pg_receivexlog
  • pg_resetxlog
  • pg_xlogdump

Extra commands

  • sh: Start a shell in the image
  • jq: Runs jq
  • nano: Runs nano
  • show-targets: Shows configured sqitch targets
  • show-default-target: Shows the configured default target
  • show-default-dbname: Shows the configured default target database name
  • pgtap-tests: Runs pgtap test test/*.sql for the default database