PG Packages Testing #7
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: PG Packages Testing | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| ppg-repo: | |
| description: ppg repo to be tested | |
| required: true | |
| default: ppg-15.14 | |
| type: choice | |
| options: | |
| - ppg-17.6 | |
| - ppg-16.10 | |
| - ppg-15.14 | |
| - ppg-14.19 | |
| - ppg-13.22 | |
| ppg-repo-type: | |
| description: ppg repo type | |
| required: true | |
| default: testing | |
| type: choice | |
| options: | |
| - experimental | |
| - testing | |
| - release | |
| platform: | |
| description: platform to be tested on | |
| required: true | |
| default: oraclelinux:10 | |
| type: choice | |
| options: | |
| - oraclelinux:10 | |
| - oraclelinux:9 | |
| - oraclelinux:8 | |
| - ubuntu:noble | |
| - ubuntu:jammy | |
| - debian:bookworm | |
| - debian:bullseye | |
| debugging: | |
| description: tmate session required | |
| default: false | |
| type: boolean | |
| jobs: | |
| test-package: | |
| runs-on: ubuntu-latest | |
| container: | |
| image: ${{ inputs.platform }} | |
| steps: | |
| - name: Install basic tools | |
| run: | | |
| if [[ "${{ inputs.platform }}" == *"linux"* ]]; then | |
| dnf makecache | |
| dnf install -y wget vim ca-certificates gcc gcc-c++ make perl-core | |
| else | |
| apt-get update | |
| apt-get install -y wget curl vim lsb-release ca-certificates build-essential perl | |
| fi | |
| shell: bash | |
| - name: Check OS | |
| run: cat /etc/os-release | |
| - name: Get OS version | |
| run: | | |
| if [[ "${{ inputs.platform }}" == *"linux"* ]]; then | |
| OS_VER=$(rpm --eval %rhel) | |
| else | |
| OS_VER="$(lsb_release -sc)" | |
| fi | |
| echo "OS_VER="$OS_VER"" >> $GITHUB_ENV | |
| shell: bash | |
| - name: Get PG major version | |
| run: | | |
| PG_MAJOR=$(echo "${{ inputs.ppg-repo }}" | cut -d'-' -f2 | cut -d'.' -f1) | |
| echo "PG_MAJOR="$PG_MAJOR"" >> $GITHUB_ENV | |
| shell: bash | |
| - name: OS Version | |
| run: echo OS_VER = ${{ env.OS_VER }} | |
| - name: Enable required repositories | |
| run: | | |
| set -x | |
| if [[ "${{ inputs.platform }}" == *"linux"* ]]; then | |
| dnf config-manager --set-enabled ol${{ env.OS_VER }}_codeready_builder | |
| dnf clean all | |
| rm -r /var/cache/dnf | |
| dnf -y upgrade | |
| if [[ ${{ env.OS_VER }} -eq 8 ]]; then | |
| dnf -y module disable postgresql | |
| dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm | |
| else | |
| yum install oracle-epel-release-el${{ env.OS_VER }} | |
| fi | |
| fi | |
| shell: bash | |
| - name: Enable ppg repository | |
| run: | | |
| if [[ "${{ inputs.platform }}" == *"linux"* ]]; then | |
| yum -y install https://repo.percona.com/yum/percona-release-latest.noarch.rpm | |
| else | |
| wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb | |
| dpkg -i percona-release_latest.generic_all.deb | |
| rm -f percona-release_latest.generic_all.deb | |
| fi | |
| percona-release disable all | |
| percona-release enable ${{ inputs.ppg-repo }} ${{ inputs.ppg-repo-type }} | |
| shell: bash | |
| - name: Set RPM install list | |
| if: ${{ contains(inputs.platform, 'linux') }} | |
| run: | | |
| PG="percona-postgresql${{ env.PG_MAJOR }} percona-postgresql${{ env.PG_MAJOR }}-server percona-postgresql${{ env.PG_MAJOR }}-contrib percona-postgresql${{ env.PG_MAJOR }}-devel percona-postgresql${{ env.PG_MAJOR }}-docs percona-postgresql${{ env.PG_MAJOR }}-libs percona-postgresql${{ env.PG_MAJOR }}-llvmjit percona-postgresql${{ env.PG_MAJOR }}-plpython3 percona-postgresql${{ env.PG_MAJOR }}-plperl percona-postgresql${{ env.PG_MAJOR }}-pltcl percona-postgresql${{ env.PG_MAJOR }}-test" | |
| PG_COMMON="percona-postgresql-common percona-postgresql-client-common" | |
| PPG_SERVER="percona-ppg-server${{ env.PG_MAJOR }} percona-ppg-server-ha${{ env.PG_MAJOR }}" | |
| AUDIT="percona-pgaudit${{ env.PG_MAJOR }} percona-pgaudit${{ env.PG_MAJOR }}_set_user" | |
| PGBACKREST="percona-pgbackrest" | |
| REPACK="percona-pg_repack${{ env.PG_MAJOR }}" | |
| PATRONI="percona-patroni" | |
| PGSM="percona-pg_stat_monitor${{ env.PG_MAJOR }} percona-pg_stat_monitor${{ env.PG_MAJOR }}-debuginfo" | |
| PGBADGER="percona-pgbadger" | |
| PGBOUNCER="percona-pgbouncer" | |
| PGPOOL="percona-pgpool-II-pg${{ env.PG_MAJOR }} percona-pgpool-II-pg${{ env.PG_MAJOR }}-extensions" | |
| POSTGIS="percona-postgis33_${{ env.PG_MAJOR }} percona-postgis33_${{ env.PG_MAJOR }}-client percona-postgis33_${{ env.PG_MAJOR }}-client-debuginfo percona-postgis33_${{ env.PG_MAJOR }}-debuginfo percona-postgis33_${{ env.PG_MAJOR }}-devel percona-postgis33_${{ env.PG_MAJOR }}-docs percona-postgis33_${{ env.PG_MAJOR }}-gui percona-postgis33_${{ env.PG_MAJOR }}-gui-debuginfo percona-postgis33_${{ env.PG_MAJOR }}-llvmjit percona-postgis33_${{ env.PG_MAJOR }}-utils" | |
| WAL2JSON="percona-wal2json${{ env.PG_MAJOR }}" | |
| PGGATHER="percona-pg_gather" | |
| PGVECTOR="percona-pgvector_${{ env.PG_MAJOR }} percona-pgvector_${{ env.PG_MAJOR }}-debuginfo percona-pgvector_${{ env.PG_MAJOR }}-debugsource percona-pgvector_${{ env.PG_MAJOR }}-llvmjit" | |
| ETCD="etcd python3-etcd" | |
| HAPROXY="percona-haproxy" | |
| echo "INSTALL_LIST="$PG $PG_COMMON $PPG_SERVER $AUDIT $PGBACKREST $REPACK $PATRONI $PGSM $PGBADGER $PGBOUNCER $PGPOOL $POSTGIS $WAL2JSON $PGGATHER $PGVECTOR $ETCD $HAPROXY"" >> $GITHUB_ENV | |
| - name: Set DEB install list | |
| if: ${{ !contains(inputs.platform, 'linux') }} | |
| run: | | |
| PG="percona-postgresql percona-postgresql-${{ env.PG_MAJOR }} percona-postgresql-all percona-postgresql-contrib percona-postgresql-doc percona-postgresql-doc-${{ env.PG_MAJOR }} percona-postgresql-plperl-${{ env.PG_MAJOR }} percona-postgresql-plpython3-${{ env.PG_MAJOR }} percona-postgresql-pltcl-${{ env.PG_MAJOR }} percona-postgresql-server-dev-${{ env.PG_MAJOR }} percona-postgresql-server-dev-all percona-postgresql-${{ env.PG_MAJOR }}-dbgsym percona-postgresql-plperl-${{ env.PG_MAJOR }}-dbgsym percona-postgresql-plpython3-${{ env.PG_MAJOR }}-dbgsym percona-postgresql-pltcl-${{ env.PG_MAJOR }}-dbgsym percona-postgresql-plpython3-${{ env.PG_MAJOR }} percona-postgresql-plpython3-${{ env.PG_MAJOR }}-dbgsym" | |
| PG_COMMON="percona-postgresql-client percona-postgresql-client-${{ env.PG_MAJOR }} percona-postgresql-common percona-postgresql-client-${{ env.PG_MAJOR }}-dbgsym postgresql-client-common postgresql-common" | |
| PPG_SERVER="percona-ppg-server-${{ env.PG_MAJOR }} percona-ppg-server-ha-${{ env.PG_MAJOR }}" | |
| AUDIT="percona-postgresql-${{ env.PG_MAJOR }}-pgaudit percona-postgresql-${{ env.PG_MAJOR }}-pgaudit-dbgsym percona-pgaudit${{ env.PG_MAJOR }}-set-user percona-pgaudit${{ env.PG_MAJOR }}-set-user-dbgsym" | |
| PGBACKREST="percona-pgbackrest percona-pgbackrest-doc percona-pgbackrest-dbgsym" | |
| REPACK="percona-postgresql-${{ env.PG_MAJOR }}-repack percona-postgresql-${{ env.PG_MAJOR }}-repack-dbgsym" | |
| PATRONI="percona-patroni percona-patroni-doc" | |
| PGSM="percona-pg-stat-monitor${{ env.PG_MAJOR }} percona-pg-stat-monitor${{ env.PG_MAJOR }}-dbgsym" | |
| PGBADGER="percona-pgbadger" | |
| PGBOUNCER="percona-pgbouncer percona-pgbouncer-dbgsym" | |
| PGPOOL="percona-pgpool2 libpgpool2" | |
| POSTGIS="percona-postgresql-${{ env.PG_MAJOR }}-postgis-3 percona-postgresql-${{ env.PG_MAJOR }}-postgis-3-scripts percona-postgresql-postgis-scripts percona-postgresql-postgis percona-postgis" | |
| WAL2JSON="percona-postgresql-${{ env.PG_MAJOR }}-wal2json percona-postgresql-${{ env.PG_MAJOR }}-wal2json-dbgsym" | |
| PGGATHER="percona-pg-gather" | |
| PGVECTOR="percona-postgresql-${{ env.PG_MAJOR }}-pgvector" | |
| ETCD="etcd" | |
| HAPROXY="percona-haproxy" | |
| echo "INSTALL_LIST="$PG $PG_COMMON $PPG_SERVER $AUDIT $PGBACKREST $REPACK $PATRONI $PGSM $PGBADGER $PGBOUNCER $PGPOOL $POSTGIS $WAL2JSON $PGGATHER $PGVECTOR $ETCD $HAPROXY"" >> $GITHUB_ENV | |
| - name: Install Packages | |
| run: | | |
| if [[ "${{ inputs.platform }}" == *"linux"* ]]; then | |
| yum -y install ${{ env.INSTALL_LIST }} | |
| else | |
| DEBIAN_FRONTEND=noninteractive apt-get -y install ${{ env.INSTALL_LIST }} | |
| fi | |
| shell: bash | |
| - name: postgresql Version Check | |
| run: | | |
| if [[ "${{ inputs.platform }}" == *"linux"* ]]; then | |
| echo "package version = $(rpm -qa | grep percona-postgresql)" | |
| else | |
| echo "package version = $(dpkg -s percona-postgresql-${{ env.PG_MAJOR }} | grep ^Version)" | |
| fi | |
| echo "binary version = $(psql --version)" | |
| shell: bash | |
| - name: postgresql-common Version Check | |
| run: | | |
| if [[ "${{ inputs.platform }}" == *"linux"* ]]; then | |
| echo "package version = $(rpm -qa | grep percona-postgresql-common)" | |
| rpm -qi percona-postgresql-common | grep ^Version | |
| else | |
| echo "package version = $(dpkg -s percona-postgresql-common | grep ^Version)" | |
| apt-cache policy percona-postgresql-common | grep -E '^\s*Installed:' | |
| fi | |
| shell: bash | |
| continue-on-error: true | |
| - name: pgbackrest Version Check | |
| run: | | |
| if [[ "${{ inputs.platform }}" == *"linux"* ]]; then | |
| echo "package version = $(rpm -qa | grep percona-pgbackrest)" | |
| else | |
| echo "package version = $(dpkg -s percona-pgbackrest | grep ^Version)" | |
| fi | |
| echo "binary version = $(pgbackrest --version)" | |
| shell: bash | |
| continue-on-error: true | |
| - name: pg_stat_monitor Version Check | |
| run: | | |
| if [[ "${{ inputs.platform }}" == *"linux"* ]]; then | |
| echo "package version = $(rpm -qa | grep percona-pg_stat_monitor)" | |
| cat /usr/pgsql-${{ env.PG_MAJOR }}/share/extension/pg_stat_monitor.control | grep 'version' | |
| else | |
| echo "package version = $(dpkg -s percona-pg-stat-monitor${{ env.PG_MAJOR }} | grep ^Version)" | |
| cat /usr/share/postgresql/${{ env.PG_MAJOR }}/extension/pg_stat_monitor.control | grep 'version' | |
| fi | |
| shell: bash | |
| continue-on-error: true | |
| - name: pg_repack Version Check | |
| run: | | |
| if [[ "${{ inputs.platform }}" == *"linux"* ]]; then | |
| echo "package version = $(rpm -qa | grep percona-pg_repack)" | |
| else | |
| echo "package version = $(dpkg -s percona-postgresql-${{ env.PG_MAJOR }}-repack | grep ^Version)" | |
| fi | |
| echo "binary version = $(pg_repack --version)" | |
| shell: bash | |
| continue-on-error: true | |
| - name: pgaudit Version Check | |
| run: | | |
| if [[ "${{ inputs.platform }}" == *"linux"* ]]; then | |
| echo "package version = $(rpm -qa | grep percona-pgaudit)" | |
| cat /usr/pgsql-${{ env.PG_MAJOR }}/share/extension/pgaudit.control | grep 'version' | |
| else | |
| echo "package version = $(dpkg -s percona-postgresql-${{ env.PG_MAJOR }}-pgaudit | grep ^Version)" | |
| cat /usr/share/postgresql/${{ env.PG_MAJOR }}/extension/pgaudit.control | grep 'version' | |
| fi | |
| shell: bash | |
| continue-on-error: true | |
| - name: patroni Version Check | |
| run: | | |
| if [[ "${{ inputs.platform }}" == *"linux"* ]]; then | |
| echo "package version = $(rpm -qa | grep percona-patroni)" | |
| else | |
| echo "package version = $(dpkg -s percona-patroni | grep ^Version)" | |
| fi | |
| echo "binary version = $(patroni --version)" | |
| shell: bash | |
| continue-on-error: true | |
| - name: pgaudit_set_user Version Check | |
| run: | | |
| if [[ "${{ inputs.platform }}" == *"linux"* ]]; then | |
| echo "package version = $(rpm -qa | grep set_user)" | |
| cat /usr/pgsql-${{ env.PG_MAJOR }}/share/extension/set_user.control | grep 'version' | |
| else | |
| echo "package version = $(dpkg -s percona-pgaudit${{ env.PG_MAJOR }}-set-user | grep ^Version)" | |
| cat /usr/share/postgresql/${{ env.PG_MAJOR }}/extension/set_user.control | grep 'version' | |
| fi | |
| shell: bash | |
| continue-on-error: true | |
| - name: pgbadger Version Check | |
| run: | | |
| if [[ "${{ inputs.platform }}" == *"linux"* ]]; then | |
| echo "package version = $(rpm -qa | grep percona-pgbadger)" | |
| else | |
| echo "package version = $(dpkg -s percona-pgbadger | grep ^Version)" | |
| fi | |
| echo "binary version = $(pgbadger --version)" | |
| shell: bash | |
| continue-on-error: true | |
| - name: pgbouncer Version Check | |
| run: | | |
| if [[ "${{ inputs.platform }}" == *"linux"* ]]; then | |
| echo "package version = $(rpm -qa | grep percona-pgbouncer)" | |
| else | |
| echo "package version = $(dpkg -s percona-pgbouncer | grep ^Version)" | |
| fi | |
| echo "binary version = $(pgbouncer --version)" | |
| shell: bash | |
| continue-on-error: true | |
| - name: pgpool2 Version Check | |
| run: | | |
| if [[ "${{ inputs.platform }}" == *"linux"* ]]; then | |
| echo "package version = $(rpm -qa | grep percona-pgpool)" | |
| else | |
| echo "package version = $(dpkg -s percona-pgpool2 | grep ^Version)" | |
| fi | |
| pgpool --version | |
| shell: bash | |
| continue-on-error: true | |
| - name: postgis Version Check | |
| run: | | |
| if [[ "${{ inputs.platform }}" == *"linux"* ]]; then | |
| echo "package version = $(rpm -qa | grep percona-postgis)" | |
| cat /usr/pgsql-${{ env.PG_MAJOR }}/share/extension/postgis.control | grep 'version' | |
| else | |
| echo "package version = $(dpkg -s percona-postgresql-${{ env.PG_MAJOR }}-postgis-3 | grep ^Version)" | |
| cat /usr/share/postgresql/${{ env.PG_MAJOR }}/extension/postgis-3.control | grep 'version' | |
| fi | |
| shell: bash | |
| continue-on-error: true | |
| - name: wal2json Version Check | |
| run: | | |
| if [[ "${{ inputs.platform }}" == *"linux"* ]]; then | |
| echo "package version = $(rpm -qa | grep percona-wal2json)" | |
| rpm -qi percona-wal2json${{ env.PG_MAJOR }} | grep ^Version | |
| else | |
| echo "package version = $(dpkg -s percona-postgresql-${{ env.PG_MAJOR }}-wal2json | grep ^Version)" | |
| apt-cache policy percona-postgresql-${{ env.PG_MAJOR }}-wal2json | grep -E '^\s*Installed:' | |
| fi | |
| shell: bash | |
| continue-on-error: true | |
| - name: haproxy Version Check | |
| run: | | |
| if [[ "${{ inputs.platform }}" == *"linux"* ]]; then | |
| echo "package version = $(rpm -qa | grep percona-haproxy)" | |
| else | |
| echo "package version = $(dpkg -s percona-haproxy | grep ^Version)" | |
| fi | |
| echo "binary version = $(haproxy -v)" | |
| shell: bash | |
| continue-on-error: true | |
| - name: etcd Version Check | |
| run: | | |
| if [[ "${{ inputs.platform }}" == *"linux"* ]]; then | |
| echo "package version = $(rpm -qa | grep etcd)" | |
| else | |
| echo "package version = $(dpkg -s etcd | grep ^Version)" | |
| fi | |
| echo "binary version = $(etcd --version)" | |
| shell: bash | |
| continue-on-error: true | |
| - name: pg_gather Version Check | |
| run: | | |
| if [[ "${{ inputs.platform }}" == *"linux"* ]]; then | |
| echo "package version = $(rpm -qa | grep percona-pg_gather)" | |
| rpm -qi percona-pg_gather | grep ^Version | |
| else | |
| echo "package version = $(dpkg -s percona-pg-gather | grep ^Version)" | |
| apt-cache policy percona-pg-gather | grep -E '^\s*Installed:' | |
| fi | |
| shell: bash | |
| continue-on-error: true | |
| - name: pg_vector Version Check | |
| run: | | |
| if [[ "${{ inputs.platform }}" == *"linux"* ]]; then | |
| echo "package version = $(rpm -qa | grep percona-pgvector)" | |
| cat /usr/pgsql-${{ env.PG_MAJOR }}/share/extension/vector.control | grep 'version' | |
| else | |
| echo "package version = $(dpkg -s percona-postgresql-${{ env.PG_MAJOR }}-pgvector | grep ^Version)" | |
| cat /usr/share/postgresql/${{ env.PG_MAJOR }}/extension/vector.control | grep 'version' | |
| fi | |
| shell: bash | |
| continue-on-error: true | |
| - name: telemetry Version Check | |
| run: | | |
| if [[ "${{ inputs.platform }}" == *"linux"* ]]; then | |
| echo "package version = $(rpm -qa | grep percona-pg-telemetry)" | |
| cat /usr/pgsql-${{ env.PG_MAJOR }}/share/extension/percona_pg_telemetry.control | grep 'version' | |
| else | |
| echo "package version = $(dpkg -s percona-pg-telemetry${{ env.PG_MAJOR }} | grep ^Version)" | |
| cat /usr/share/postgresql/${{ env.PG_MAJOR }}/extension/percona_pg_telemetry.control | grep 'version' | |
| fi | |
| shell: bash | |
| continue-on-error: true | |
| - name: enable tmate debugging | |
| if: inputs.debugging && failure() | |
| uses: mxschmitt/action-tmate@v3 | |
| timeout-minutes: 60 |