From 80f842fb49341f2c488194dd8ddc9c5822a73c38 Mon Sep 17 00:00:00 2001 From: Naeem Akhter Date: Wed, 27 Apr 2022 15:26:38 +0500 Subject: [PATCH] PG-377: Enable PPG Jobs for PGSM in GH. This commit contains following, 1) Regression jobs are enabled against Percona PG distribution for version postgresql 11~14. 2) Regression job is enabled against PGDG PG distribution for version postgresql 14. 3) GH actions names for some of the jobs are changed to clear the clutter in GH repo's action page. --- .github/workflows/code-coverage-test.yml | 127 ++++++++++++++++++ .github/workflows/postgresql-11-build.yml | 4 +- .../workflows/postgresql-11-pgdg-package.yml | 19 ++- .../workflows/postgresql-11-ppg-package.yml | 70 ++++++++++ .github/workflows/postgresql-12-build.yml | 4 +- .../workflows/postgresql-12-pgdg-package.yml | 20 ++- .../workflows/postgresql-12-ppg-package.yml | 70 ++++++++++ .github/workflows/postgresql-13-build.yml | 4 +- .../workflows/postgresql-13-pgdg-package.yml | 20 +-- .../workflows/postgresql-13-ppg-package.yml | 91 +++++++++++++ .github/workflows/postgresql-14-build.yml | 4 +- .../workflows/postgresql-14-pgdg-package.yml | 83 ++++++++++++ .../workflows/postgresql-14-ppg-package.yml | 91 +++++++++++++ 13 files changed, 567 insertions(+), 40 deletions(-) create mode 100644 .github/workflows/code-coverage-test.yml create mode 100644 .github/workflows/postgresql-11-ppg-package.yml create mode 100644 .github/workflows/postgresql-12-ppg-package.yml create mode 100644 .github/workflows/postgresql-13-ppg-package.yml create mode 100644 .github/workflows/postgresql-14-pgdg-package.yml create mode 100644 .github/workflows/postgresql-14-ppg-package.yml diff --git a/.github/workflows/code-coverage-test.yml b/.github/workflows/code-coverage-test.yml new file mode 100644 index 0000000..ca8e548 --- /dev/null +++ b/.github/workflows/code-coverage-test.yml @@ -0,0 +1,127 @@ +name: code-coverage-test +on: ["push", "pull_request"] + +jobs: + build: + name: coverage-test + runs-on: ubuntu-latest + steps: + - name: Clone postgres repository + uses: actions/checkout@v2 + with: + repository: 'postgres/postgres' + ref: 'REL_14_STABLE' + + - name: Install dependencies + run: | + sudo apt-get update + sudo apt purge postgresql-client-common postgresql-common postgresql postgresql* + sudo apt-get install libreadline6-dev systemtap-sdt-dev zlib1g-dev libssl-dev libpam0g-dev python-dev bison flex libipc-run-perl -y docbook-xsl docbook-xsl + sudo apt-get install -y libxml2 libxml2-utils libxml2-dev libxslt-dev xsltproc libkrb5-dev libldap2-dev libsystemd-dev gettext tcl-dev libperl-dev + sudo apt-get install -y pkg-config clang-9 llvm-9 llvm-9-dev libselinux1-dev python-dev python3-dev uuid-dev liblz4-dev lcov + sudo rm -rf /var/lib/postgresql/ + sudo rm -rf /var/log/postgresql/ + sudo rm -rf /etc/postgresql/ + sudo rm -rf /usr/lib/postgresql + sudo rm -rf /usr/include/postgresql + sudo rm -rf /usr/share/postgresql + sudo rm -rf /etc/postgresql + sudo rm -f /usr/bin/pg_config + sudo /usr/bin/perl -MCPAN -e 'install IPC::RUN' + sudo /usr/bin/perl -MCPAN -e 'install String::Util' + sudo /usr/bin/perl -MCPAN -e 'install Data::Str2Num' + + - name: Create pgsql dir + run: mkdir -p /opt/pgsql + + - name: Build postgres + run: | + export PATH="/opt/pgsql/bin:$PATH" + ./configure '--build=x86_64-linux-gnu' '--prefix=/usr' '--includedir=${prefix}/include' \ + '--enable-coverage' '--mandir=${prefix}/share/man' '--infodir=${prefix}/share/info' \ + '--sysconfdir=/etc' '--localstatedir=/var' '--disable-silent-rules' \ + '--libdir=${prefix}/lib/x86_64-linux-gnu' \ + '--libexecdir=${prefix}/lib/x86_64-linux-gnu' '--disable-maintainer-mode' \ + '--disable-dependency-tracking' '--with-icu' '--with-tcl' '--with-perl' \ + '--with-python' '--with-pam' '--with-openssl' '--with-libxml' '--with-libxslt' \ + 'PYTHON=/usr/bin/python3' '--mandir=/usr/share/postgresql/14/man' \ + '--docdir=/usr/share/doc/postgresql-doc-14' \ + '--sysconfdir=/etc/postgresql-common' '--datarootdir=/usr/share/' \ + '--datadir=/usr/share/postgresql/14' '--bindir=/usr/lib/postgresql/14/bin' \ + '--libdir=/usr/lib/x86_64-linux-gnu/' '--libexecdir=/usr/lib/postgresql/' \ + '--includedir=/usr/include/postgresql/' '--with-extra-version= (Ubuntu 2:14-x.focal)' \ + '--enable-nls' '--enable-thread-safety' '--enable-tap-tests' '--enable-debug' \ + '--enable-dtrace' '--disable-rpath' '--with-uuid=e2fs' '--with-gnu-ld' \ + '--with-pgport=5432' '--with-system-tzdata=/usr/share/zoneinfo' '--with-llvm' \ + 'LLVM_CONFIG=/usr/bin/llvm-config-11' 'CLANG=/usr/bin/clang-11' \ + '--with-systemd' '--with-selinux' 'MKDIR_P=/bin/mkdir -p' 'PROVE=/usr/bin/prove' \ + 'TAR=/bin/tar' 'XSLTPROC=xsltproc --nonet' 'CFLAGS=-g -O2 -fstack-protector-strong -Wformat -Werror=format-security -fno-omit-frame-pointer' \ + 'LDFLAGS=-Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now' '--with-gssapi' '--with-ldap' \ + 'build_alias=x86_64-linux-gnu' 'CPPFLAGS=-Wdate-time -D_FORTIFY_SOURCE=2' \ + 'CXXFLAGS=-g -O2 -fstack-protector-strong -Wformat -Werror=format-security' + make world + sudo make install-world + + - name: Start postgresql cluster + run: | + /usr/lib/postgresql/14/bin/initdb -D /opt/pgsql/data + /usr/lib/postgresql/14/bin/pg_ctl -D /opt/pgsql/data -l logfile start + + - name: Clone pg_stat_monitor repository + uses: actions/checkout@v2 + with: + path: 'src/pg_stat_monitor' + + - name: Build pg_stat_monitor + run: | + export PATH="/usr/lib/postgresql/14/bin:$PATH" + sudo cp /usr/lib/postgresql/14/bin/pg_config /usr/bin + make USE_PGXS=1 + sudo make USE_PGXS=1 install + working-directory: src/pg_stat_monitor/ + + - name: Load pg_stat_monitor library and Restart Server + run: | + /usr/lib/postgresql/14/bin/pg_ctl -D /opt/pgsql/data -l logfile stop + echo "shared_preload_libraries = 'pg_stat_monitor'" >> /opt/pgsql/data/postgresql.conf + /usr/lib/postgresql/14/bin/pg_ctl -D /opt/pgsql/data -l logfile start + working-directory: src/pg_stat_monitor/ + + - name: Start pg_stat_monitor_tests & Run code coverage + run: | + make installcheck + /usr/lib/postgresql/14/bin/psql -d postgres -p 5432 -c "\list" + make coverage-html + lcov --capture --directory . --output-file coverage/lcov.info + pip install cpp-coveralls + export COVERALLS_REPO_TOKEN="${{ secrets.COVERALL_PG_STAT_MONITOR_TOKEN }}" + coveralls --verbose + working-directory: src/pg_stat_monitor/ + + - name: Change dir permissions on fail + if: ${{ failure() }} + run: | + sudo chmod -R ugo+rwx t + sudo chmod -R ugo+rwx tmp_check + exit 2 # regenerate error so that we can upload files in next step + working-directory: src/pg_stat_monitor/ + + - name: Upload logs on fail + if: ${{ failure() }} + uses: actions/upload-artifact@v2 + with: + name: Regressions diff and postgresql log + path: | + src/pg_stat_monitor/regression.diffs + src/pg_stat_monitor/regression.out + src/pg_stat_monitor/logfile + src/pg_stat_monitor/t/results/ + src/pg_stat_monitor/tmp_check/log/ + !src/pg_stat_monitor/tmp_check/**/archives/* + !src/pg_stat_monitor/tmp_check/**/backup/* + !src/pg_stat_monitor/tmp_check/**/pgdata/* + !src/pg_stat_monitor/tmp_check/**/archives/ + !src/pg_stat_monitor/tmp_check/**/backup/ + !src/pg_stat_monitor/tmp_check/**/pgdata/ + if-no-files-found: warn + retention-days: 3 diff --git a/.github/workflows/postgresql-11-build.yml b/.github/workflows/postgresql-11-build.yml index 6198e5d..c1e712d 100644 --- a/.github/workflows/postgresql-11-build.yml +++ b/.github/workflows/postgresql-11-build.yml @@ -3,7 +3,7 @@ on: [push] jobs: build: - name: pg11-test + name: pg-11-build-test runs-on: ubuntu-18.04 steps: - name: Clone postgres repository @@ -111,4 +111,4 @@ jobs: **/regression.diffs **/regression.out src/pg_stat_monitor/logfile - retention-days: 1 + retention-days: 3 diff --git a/.github/workflows/postgresql-11-pgdg-package.yml b/.github/workflows/postgresql-11-pgdg-package.yml index f456798..ad6a5e1 100644 --- a/.github/workflows/postgresql-11-pgdg-package.yml +++ b/.github/workflows/postgresql-11-pgdg-package.yml @@ -3,7 +3,7 @@ on: [push] jobs: build: - name: postgresql-11-pgdg-package + name: pg-11-pgdg-package-test runs-on: ubuntu-18.04 steps: - name: Clone pg_stat_monitor repository @@ -28,18 +28,14 @@ jobs: run: | sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list' wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add - - sudo apt-get update - sudo apt-get -y install postgresql-11 - sudo apt-get update - sudo apt-get -y install postgresql-client-11 - sudo apt-get update - sudo apt install postgresql-server-dev-11 - sudo chown -R postgres:postgres src/ + sudo apt-get -y update + sudo apt-get -y install postgresql-11 postgresql-server-dev-11 + + - name: Change sources owner to postgres + run: sudo chown -R postgres:postgres src - name: Build pg_stat_monitor run: | - export PATH="/usr/lib/postgresql/11/bin:$PATH" - sudo cp /usr/lib/postgresql/11/bin/pg_config /usr/bin sudo make USE_PGXS=1 sudo make USE_PGXS=1 install working-directory: src/pg_stat_monitor/ @@ -49,6 +45,7 @@ jobs: sudo service postgresql stop echo "shared_preload_libraries = 'pg_stat_monitor'" | sudo tee -a /etc/postgresql/11/main/postgresql.conf sudo service postgresql start + sudo psql -V sudo -u postgres bash -c 'make installcheck USE_PGXS=1' working-directory: src/pg_stat_monitor/ @@ -60,4 +57,4 @@ jobs: path: | src/pg_stat_monitor/regression.diffs src/pg_stat_monitor/logfile - retention-days: 1 + retention-days: 3 diff --git a/.github/workflows/postgresql-11-ppg-package.yml b/.github/workflows/postgresql-11-ppg-package.yml new file mode 100644 index 0000000..e724a3d --- /dev/null +++ b/.github/workflows/postgresql-11-ppg-package.yml @@ -0,0 +1,70 @@ +name: postgresql-11-ppg-package +on: [push] + +jobs: + build: + name: pg-11-ppg-package-test + runs-on: ubuntu-20.04 + steps: + - name: Clone pg_stat_monitor repository + uses: actions/checkout@v2 + with: + path: 'src/pg_stat_monitor' + + + - name: Install dependencies + run: | + sudo apt-get update + sudo apt purge postgresql-client-common postgresql-common postgresql postgresql* + sudo apt-get install libreadline6-dev systemtap-sdt-dev zlib1g-dev libssl-dev libpam0g-dev python-dev bison flex libipc-run-perl wget -y + sudo rm -rf /var/lib/postgresql/ + sudo rm -rf /var/log/postgresql/ + sudo rm -rf /etc/postgresql/ + sudo rm -rf /usr/lib/postgresql + sudo rm -rf /usr/include/postgresql + sudo rm -rf /usr/share/postgresql + sudo rm -rf /etc/postgresql + sudo rm -f /usr/bin/pg_config + + - name: Install percona-release script + run: | + sudo apt-get -y update + sudo apt-get -y upgrade + sudo apt-get -y update + sudo apt-get install -y wget gnupg2 curl lsb-release + sudo wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb + sudo dpkg -i percona-release_latest.generic_all.deb + + - name: Install Percona Distribution Postgresql 11 + run: | + sudo percona-release setup ppg-11 + sudo apt-get update -y + sudo apt-get install -y percona-postgresql-11 percona-postgresql-contrib percona-postgresql-server-dev-all + + - name: Change sources owner to postgres + run: sudo chown -R postgres:postgres src + + - name: Build pg_stat_monitor + run: | + sudo make USE_PGXS=1 + sudo make USE_PGXS=1 install + working-directory: src/pg_stat_monitor/ + + - name: Start pg_stat_monitor_tests + run: | + sudo service postgresql stop + echo "shared_preload_libraries = 'pg_stat_monitor'" | sudo tee -a /etc/postgresql/11/main/postgresql.conf + sudo service postgresql start + sudo psql -V + sudo -u postgres bash -c 'make installcheck USE_PGXS=1' + working-directory: src/pg_stat_monitor/ + + - name: Report on test fail + uses: actions/upload-artifact@v2 + if: ${{ failure() }} + with: + name: Regressions diff and postgresql log + path: | + src/pg_stat_monitor/regression.diffs + src/pg_stat_monitor/logfile + retention-days: 3 diff --git a/.github/workflows/postgresql-12-build.yml b/.github/workflows/postgresql-12-build.yml index 84622f7..4219242 100644 --- a/.github/workflows/postgresql-12-build.yml +++ b/.github/workflows/postgresql-12-build.yml @@ -3,7 +3,7 @@ on: [push] jobs: build: - name: postgresql-12-build + name: pg-12-build-test runs-on: ubuntu-latest steps: - name: Clone postgres repository @@ -106,4 +106,4 @@ jobs: **/regression.diffs **/regression.out src/pg_stat_monitor/logfile - retention-days: 1 \ No newline at end of file + retention-days: 3 \ No newline at end of file diff --git a/.github/workflows/postgresql-12-pgdg-package.yml b/.github/workflows/postgresql-12-pgdg-package.yml index 7d7e635..1c9e24c 100644 --- a/.github/workflows/postgresql-12-pgdg-package.yml +++ b/.github/workflows/postgresql-12-pgdg-package.yml @@ -3,7 +3,7 @@ on: [push] jobs: build: - name: postgresql-12-pgdg-package + name: pg-12-pgdg-package-test runs-on: ubuntu-latest steps: - name: Clone pg_stat_monitor repository @@ -28,18 +28,15 @@ jobs: run: | sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list' wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add - - sudo apt-get update - sudo apt-get -y install postgresql-12 - sudo apt-get update - sudo apt-get -y install postgresql-client-12 - sudo apt-get update - sudo apt install postgresql-server-dev-12 - sudo chown -R postgres:postgres src/ + sudo apt-get -y update + sudo apt-get -y install postgresql-12 postgresql-server-dev-12 + + - name: Change sources owner to postgres + run: | + sudo chown -R postgres:postgres src - name: Build pg_stat_monitor run: | - export PATH="/usr/lib/postgresql/12/bin:$PATH" - sudo cp /usr/lib/postgresql/12/bin/pg_config /usr/bin sudo make USE_PGXS=1 sudo make USE_PGXS=1 install working-directory: src/pg_stat_monitor/ @@ -49,6 +46,7 @@ jobs: sudo service postgresql stop echo "shared_preload_libraries = 'pg_stat_monitor'" | sudo tee -a /etc/postgresql/12/main/postgresql.conf sudo service postgresql start + sudo psql -V sudo -u postgres bash -c 'make installcheck USE_PGXS=1' working-directory: src/pg_stat_monitor/ @@ -60,4 +58,4 @@ jobs: path: | src/pg_stat_monitor/regression.diffs src/pg_stat_monitor/logfile - retention-days: 1 + retention-days: 3 diff --git a/.github/workflows/postgresql-12-ppg-package.yml b/.github/workflows/postgresql-12-ppg-package.yml new file mode 100644 index 0000000..96d8ee1 --- /dev/null +++ b/.github/workflows/postgresql-12-ppg-package.yml @@ -0,0 +1,70 @@ +name: postgresql-12-ppg-package +on: [push] + +jobs: + build: + name: pg-12-ppg-package-test + runs-on: ubuntu-20.04 + steps: + - name: Clone pg_stat_monitor repository + uses: actions/checkout@v2 + with: + path: 'src/pg_stat_monitor' + + - name: Install dependencies + run: | + sudo apt-get update + sudo apt purge postgresql-client-common postgresql-common postgresql postgresql* + sudo apt-get install libreadline6-dev systemtap-sdt-dev zlib1g-dev libssl-dev libpam0g-dev python-dev bison flex libipc-run-perl wget -y + sudo rm -rf /var/lib/postgresql/ + sudo rm -rf /var/log/postgresql/ + sudo rm -rf /etc/postgresql/ + sudo rm -rf /usr/lib/postgresql + sudo rm -rf /usr/include/postgresql + sudo rm -rf /usr/share/postgresql + sudo rm -rf /etc/postgresql + sudo rm -f /usr/bin/pg_config + + - name: Install percona-release script + run: | + sudo apt-get -y update + sudo apt-get -y upgrade + sudo apt-get -y update + sudo apt-get install -y wget gnupg2 curl lsb-release + sudo wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb + sudo dpkg -i percona-release_latest.generic_all.deb + + - name: Install Percona Distribution Postgresql 12 + run: | + sudo percona-release setup ppg-12 + sudo apt-get update -y + sudo apt-get install -y percona-postgresql-12 percona-postgresql-contrib percona-postgresql-server-dev-all + + - name: Change src owner to postgres + run: | + sudo chown -R postgres:postgres src + + - name: Build pg_stat_monitor + run: | + sudo make USE_PGXS=1 + sudo make USE_PGXS=1 install + working-directory: src/pg_stat_monitor/ + + - name: Start pg_stat_monitor_tests + run: | + sudo service postgresql stop + echo "shared_preload_libraries = 'pg_stat_monitor'" | sudo tee -a /etc/postgresql/12/main/postgresql.conf + sudo service postgresql start + sudo psql -V + sudo -u postgres bash -c 'make installcheck USE_PGXS=1' + working-directory: src/pg_stat_monitor/ + + - name: Report on test fail + uses: actions/upload-artifact@v2 + if: ${{ failure() }} + with: + name: Regressions diff and postgresql log + path: | + src/pg_stat_monitor/regression.diffs + src/pg_stat_monitor/logfile + retention-days: 3 diff --git a/.github/workflows/postgresql-13-build.yml b/.github/workflows/postgresql-13-build.yml index 5be730b..bd0f4ec 100644 --- a/.github/workflows/postgresql-13-build.yml +++ b/.github/workflows/postgresql-13-build.yml @@ -3,7 +3,7 @@ on: [push] jobs: build: - name: postgresql-13-build + name: pg-13-build-test runs-on: ubuntu-latest steps: - name: Clone postgres repository @@ -134,4 +134,4 @@ jobs: **/regression.diffs **/regression.out src/pg_stat_monitor/logfile - retention-days: 1 + retention-days: 3 diff --git a/.github/workflows/postgresql-13-pgdg-package.yml b/.github/workflows/postgresql-13-pgdg-package.yml index dcb1e24..87b7251 100644 --- a/.github/workflows/postgresql-13-pgdg-package.yml +++ b/.github/workflows/postgresql-13-pgdg-package.yml @@ -3,7 +3,7 @@ on: [push] jobs: build: - name: postgresql-13-pgdg-package + name: pg-13-pgdg-package-test runs-on: ubuntu-latest steps: - name: Clone pg_stat_monitor repository @@ -30,18 +30,17 @@ jobs: - name: Install PG Distribution Postgresql 13 run: | + sudo wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add - sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list' - wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add - - sudo apt-get update - sudo apt-get -y install postgresql-13 postgresql-client-13 postgresql-contrib postgresql-server-dev-13 - sudo chown -R postgres:postgres src/ - sudo cpan install IPC::RUN - sudo cpan install String::Util + sudo apt update + sudo apt -y install postgresql-13 postgresql-server-dev-13 + + - name: Change sources owner to postgres + run: | + sudo chown -R postgres:postgres src - name: Build pg_stat_monitor run: | - export PATH="/usr/lib/postgresql/13/bin:$PATH" - sudo cp /usr/lib/postgresql/13/bin/pg_config /usr/bin sudo make USE_PGXS=1 sudo make USE_PGXS=1 install working-directory: src/pg_stat_monitor/ @@ -51,6 +50,7 @@ jobs: sudo service postgresql stop echo "shared_preload_libraries = 'pg_stat_monitor'" | sudo tee -a /etc/postgresql/13/main/postgresql.conf sudo service postgresql start + sudo psql -V sudo -u postgres bash -c 'make installcheck USE_PGXS=1' working-directory: src/pg_stat_monitor/ @@ -80,4 +80,4 @@ jobs: !src/pg_stat_monitor/tmp_check/**/backup/ !src/pg_stat_monitor/tmp_check/**/pgdata/ if-no-files-found: warn - retention-days: 1 + retention-days: 3 diff --git a/.github/workflows/postgresql-13-ppg-package.yml b/.github/workflows/postgresql-13-ppg-package.yml new file mode 100644 index 0000000..4d75f1e --- /dev/null +++ b/.github/workflows/postgresql-13-ppg-package.yml @@ -0,0 +1,91 @@ +name: postgresql-13-ppg-package +on: [push] + +jobs: + build: + name: pg-13-ppg-package-test + runs-on: ubuntu-20.04 + steps: + - name: Clone pg_stat_monitor repository + uses: actions/checkout@v2 + with: + path: 'src/pg_stat_monitor' + + - name: Delete old postgresql files + run: | + sudo apt-get update + sudo apt purge postgresql-client-common postgresql-common postgresql postgresql* + sudo rm -rf /var/lib/postgresql/ + sudo rm -rf /var/log/postgresql/ + sudo rm -rf /etc/postgresql/ + sudo rm -rf /usr/lib/postgresql + sudo rm -rf /usr/include/postgresql + sudo rm -rf /usr/share/postgresql + sudo rm -rf /etc/postgresql + sudo rm -f /usr/bin/pg_config + sudo apt-get install libreadline6-dev systemtap-sdt-dev zlib1g-dev libssl-dev libpam0g-dev python-dev bison flex libipc-run-perl wget -y + sudo /usr/bin/perl -MCPAN -e 'install IPC::RUN' + sudo /usr/bin/perl -MCPAN -e 'install String::Util' + sudo /usr/bin/perl -MCPAN -e 'install Data::Str2Num' + + - name: Install percona-release script + run: | + sudo apt-get -y update + sudo apt-get -y upgrade + sudo apt-get -y update + sudo apt-get install -y wget gnupg2 curl lsb-release + sudo wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb + sudo dpkg -i percona-release_latest.generic_all.deb + + - name: Install Percona Distribution Postgresql 13 + run: | + sudo percona-release setup ppg-13 + sudo apt-get update -y + sudo apt-get install -y percona-postgresql-13 percona-postgresql-contrib percona-postgresql-server-dev-all + + - name: Change src owner to postgres + run: | + sudo chown -R postgres:postgres src + + - name: Build pg_stat_monitor + run: | + sudo make USE_PGXS=1 + sudo make USE_PGXS=1 install + working-directory: src/pg_stat_monitor/ + + - name: Start pg_stat_monitor_tests + run: | + sudo service postgresql stop + echo "shared_preload_libraries = 'pg_stat_monitor'" | sudo tee -a /etc/postgresql/13/main/postgresql.conf + sudo service postgresql start + sudo psql -V + sudo -u postgres bash -c 'make installcheck USE_PGXS=1' + working-directory: src/pg_stat_monitor/ + + - name: Change dir permissions on fail + if: ${{ failure() }} + run: | + sudo chmod -R ugo+rwx t + sudo chmod -R ugo+rwx tmp_check + exit 2 # regenerate error so that we can upload files in next step + working-directory: src/pg_stat_monitor/ + + - name: Upload logs on fail + if: ${{ failure() }} + uses: actions/upload-artifact@v2 + with: + name: Regressions diff and postgresql log + path: | + src/pg_stat_monitor/regression.diffs + src/pg_stat_monitor/regression.out + src/pg_stat_monitor/logfile + src/pg_stat_monitor/t/results/ + src/pg_stat_monitor/tmp_check/log/ + !src/pg_stat_monitor/tmp_check/**/archives/* + !src/pg_stat_monitor/tmp_check/**/backup/* + !src/pg_stat_monitor/tmp_check/**/pgdata/* + !src/pg_stat_monitor/tmp_check/**/archives/ + !src/pg_stat_monitor/tmp_check/**/backup/ + !src/pg_stat_monitor/tmp_check/**/pgdata/ + if-no-files-found: warn + retention-days: 3 diff --git a/.github/workflows/postgresql-14-build.yml b/.github/workflows/postgresql-14-build.yml index 61347fa..d594fb0 100644 --- a/.github/workflows/postgresql-14-build.yml +++ b/.github/workflows/postgresql-14-build.yml @@ -3,7 +3,7 @@ on: [push] jobs: build: - name: postgresql-14-build + name: pg-14-build-test runs-on: ubuntu-latest steps: - name: Clone postgres repository @@ -118,4 +118,4 @@ jobs: !src/pg_stat_monitor/tmp_check/**/backup/ !src/pg_stat_monitor/tmp_check/**/pgdata/ if-no-files-found: warn - retention-days: 1 + retention-days: 3 diff --git a/.github/workflows/postgresql-14-pgdg-package.yml b/.github/workflows/postgresql-14-pgdg-package.yml new file mode 100644 index 0000000..53f45e6 --- /dev/null +++ b/.github/workflows/postgresql-14-pgdg-package.yml @@ -0,0 +1,83 @@ +name: postgresql-14-pgdg-package +on: [push] + +jobs: + build: + name: pg-14-pgdg-package-test + runs-on: ubuntu-latest + steps: + - name: Clone pg_stat_monitor repository + uses: actions/checkout@v2 + with: + path: 'src/pg_stat_monitor' + + - name: Delete old postgresql files + run: | + sudo apt-get update + sudo apt purge postgresql-client-common postgresql-common postgresql postgresql* + sudo rm -rf /var/lib/postgresql/ + sudo rm -rf /var/log/postgresql/ + sudo rm -rf /etc/postgresql/ + sudo rm -rf /usr/lib/postgresql + sudo rm -rf /usr/include/postgresql + sudo rm -rf /usr/share/postgresql + sudo rm -rf /etc/postgresql + sudo rm -f /usr/bin/pg_config + sudo apt-get install libreadline6-dev systemtap-sdt-dev zlib1g-dev libssl-dev libpam0g-dev python-dev bison flex libipc-run-perl wget -y + sudo /usr/bin/perl -MCPAN -e 'install IPC::RUN' + sudo /usr/bin/perl -MCPAN -e 'install String::Util' + sudo /usr/bin/perl -MCPAN -e 'install Data::Str2Num' + + - name: Install PG Distribution Postgresql 14 + run: | + sudo wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add - + sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list' + sudo apt update + sudo apt -y install postgresql-14 postgresql-server-dev-14 + + - name: Change sources owner to postgres + run: | + sudo chown -R postgres:postgres src + + - name: Build pg_stat_monitor + run: | + sudo make USE_PGXS=1 + sudo make USE_PGXS=1 install + working-directory: src/pg_stat_monitor/ + + - name: Start pg_stat_monitor_tests + run: | + sudo service postgresql stop + echo "shared_preload_libraries = 'pg_stat_monitor'" | sudo tee -a /etc/postgresql/14/main/postgresql.conf + sudo service postgresql start + sudo psql -V + sudo -u postgres bash -c 'make installcheck USE_PGXS=1' + working-directory: src/pg_stat_monitor/ + + - name: Change dir permissions on fail + if: ${{ failure() }} + run: | + sudo chmod -R ugo+rwx t + sudo chmod -R ugo+rwx tmp_check + exit 2 # regenerate error so that we can upload files in next step + working-directory: src/pg_stat_monitor/ + + - name: Upload logs on fail + if: ${{ failure() }} + uses: actions/upload-artifact@v2 + with: + name: Regressions diff and postgresql log + path: | + src/pg_stat_monitor/regression.diffs + src/pg_stat_monitor/regression.out + src/pg_stat_monitor/logfile + src/pg_stat_monitor/t/results/ + src/pg_stat_monitor/tmp_check/log/ + !src/pg_stat_monitor/tmp_check/**/archives/* + !src/pg_stat_monitor/tmp_check/**/backup/* + !src/pg_stat_monitor/tmp_check/**/pgdata/* + !src/pg_stat_monitor/tmp_check/**/archives/ + !src/pg_stat_monitor/tmp_check/**/backup/ + !src/pg_stat_monitor/tmp_check/**/pgdata/ + if-no-files-found: warn + retention-days: 3 diff --git a/.github/workflows/postgresql-14-ppg-package.yml b/.github/workflows/postgresql-14-ppg-package.yml new file mode 100644 index 0000000..7714784 --- /dev/null +++ b/.github/workflows/postgresql-14-ppg-package.yml @@ -0,0 +1,91 @@ +name: postgresql-14-ppg-package +on: [push] + +jobs: + build: + name: pg-14-ppg-package-test + runs-on: ubuntu-20.04 + steps: + - name: Clone pg_stat_monitor repository + uses: actions/checkout@v2 + with: + path: 'src/pg_stat_monitor' + + - name: Delete old postgresql files + run: | + sudo apt-get update + sudo apt purge postgresql-client-common postgresql-common postgresql postgresql* + sudo rm -rf /var/lib/postgresql/ + sudo rm -rf /var/log/postgresql/ + sudo rm -rf /etc/postgresql/ + sudo rm -rf /usr/lib/postgresql + sudo rm -rf /usr/include/postgresql + sudo rm -rf /usr/share/postgresql + sudo rm -rf /etc/postgresql + sudo rm -f /usr/bin/pg_config + sudo apt-get install libreadline6-dev systemtap-sdt-dev zlib1g-dev libssl-dev libpam0g-dev python-dev bison flex libipc-run-perl wget -y + sudo /usr/bin/perl -MCPAN -e 'install IPC::RUN' + sudo /usr/bin/perl -MCPAN -e 'install String::Util' + sudo /usr/bin/perl -MCPAN -e 'install Data::Str2Num' + + - name: Install percona-release script + run: | + sudo apt-get -y update + sudo apt-get -y upgrade + sudo apt-get -y update + sudo apt-get install -y wget gnupg2 curl lsb-release + sudo wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb + sudo dpkg -i percona-release_latest.generic_all.deb + + - name: Install Percona Distribution Postgresql 14 + run: | + sudo percona-release setup ppg-14 + sudo apt-get update -y + sudo apt-get install -y percona-postgresql-14 percona-postgresql-contrib percona-postgresql-server-dev-all + + - name: Change src owner to postgres + run: | + sudo chown -R postgres:postgres src + + - name: Build pg_stat_monitor + run: | + sudo make USE_PGXS=1 + sudo make USE_PGXS=1 install + working-directory: src/pg_stat_monitor/ + + - name: Start pg_stat_monitor_tests + run: | + sudo service postgresql stop + echo "shared_preload_libraries = 'pg_stat_monitor'" | sudo tee -a /etc/postgresql/14/main/postgresql.conf + sudo service postgresql start + sudo psql -V + sudo -u postgres bash -c 'make installcheck USE_PGXS=1' + working-directory: src/pg_stat_monitor/ + + - name: Change dir permissions on fail + if: ${{ failure() }} + run: | + sudo chmod -R ugo+rwx t + sudo chmod -R ugo+rwx tmp_check + exit 2 # regenerate error so that we can upload files in next step + working-directory: src/pg_stat_monitor/ + + - name: Upload logs on fail + if: ${{ failure() }} + uses: actions/upload-artifact@v2 + with: + name: Regressions diff and postgresql log + path: | + src/pg_stat_monitor/regression.diffs + src/pg_stat_monitor/regression.out + src/pg_stat_monitor/logfile + src/pg_stat_monitor/t/results/ + src/pg_stat_monitor/tmp_check/log/ + !src/pg_stat_monitor/tmp_check/**/archives/* + !src/pg_stat_monitor/tmp_check/**/backup/* + !src/pg_stat_monitor/tmp_check/**/pgdata/* + !src/pg_stat_monitor/tmp_check/**/archives/ + !src/pg_stat_monitor/tmp_check/**/backup/ + !src/pg_stat_monitor/tmp_check/**/pgdata/ + if-no-files-found: warn + retention-days: 3