Installing from source#
You can define a list of extensions to build and install from their Git
repositories by setting install_from_source in config.yml :
cluster_vars:
install_from_source:
- name: ext
git_repository_url: https://repo.example.com/ext.git
git_repository_ref: dev/example
- name: otherext
git_repository_url: ssh://repo.example.com/otherext.git
git_repository_ref: master
source_directory: /opt/postgres/src/otherext
build_directory: /opt/postgres/build/otherext
build_commands:
- "make -f /opt/postgres/src/otherext/Makefile install"
build_environment:
VAR: value
TPA builds and installs extensions one by one in the order listed. So you can build extensions that depend on another (such as pglogical and BDR) by mentioning them in the correct order.
Each entry must specify a name , git_repository_url , and
git_repository_ref (default: master ) to build. You can use
SSH agent forwarding or an HTTPS username/password
to authenticate to the Git repository. Also set source_directory ,
build_directory , build_environment , and build_commands ,
as shown in the example.
To reuse the build directory when doing repeated deploys, run
tpaexec deploy … --skip-tags build-clean . Otherwise the old build
directory is emptied before starting the build. You can also configure
Local source directories
to speed up your development builds.
Whenever you run a source build, Postgres is restarted.
Build dependencies#
If you’re building from source, TPA ensures that the basic Postgres build dependencies are installed. If you need any additional packages, mention them in Installing TPA packages . For example:
cluster_vars:
packages:
common:
- golang-1.16