Workflow file for this run
This file contains 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: CI | ||
on: | ||
push: | ||
branches: | ||
- main | ||
- actions | ||
pull_request: | ||
branches: | ||
- main | ||
jobs: | ||
build-linux: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- name: Update system | ||
run: sudo apt-get update -y | ||
- name: Install dependencies | ||
run: sudo apt-get install -y --no-install-recommends git gcc cmake make wget build-essential libreadline-dev zlib1g-dev flex bison libxml2-dev libxslt1-dev libssl-dev libxml2-utils xsltproc ccache pkg-config check | ||
- name: Run all steps | ||
run: | | ||
set -e | ||
install_postgresql() { | ||
version=${1:-13} | ||
git_repo="https://github.com/postgres/postgres.git" | ||
cd /tmp | ||
git clone --branch "REL_${version}_STABLE" --single-branch --depth 1 "$git_repo" | ||
cd /tmp/postgres | ||
./configure --prefix=/usr/local/pgsql | ||
make | ||
sudo make install | ||
sudo -u postgres /usr/local/pgsql/bin/initdb -D /tmp/pgsql-${version} | ||
sudo -u postgres /usr/local/pgsql/bin/pg_ctl -D /tmp/pgsql-${version} -l /tmp/logfile start | ||
export PATH=/usr/local/pgsql/bin:$PATH | ||
export LD_LIBRARY_PATH=/usr/local/pgsql/lib | ||
} | ||
config_postgresql(){ | ||
version=${1:-13} | ||
sudo -u postgres sed -i 's/^#\s*password_encryption\s*=\s*\(md5\|scram-sha-256\)/password_encryption = scram-sha-256/' /tmp/pgsql-${version}/postgresql.conf | ||
sudo -u postgres sed -i '/^host/d' /tmp/pgsql-${version}/pg_hba.conf | ||
sudo -u postgres bash -c "cat <<EOF >> /tmp/pgsql-${version}/pg_hba.conf | ||
host postgres repl 127.0.0.1/32 scram-sha-256 | ||
host postgres repl ::1/128 scram-sha-256 | ||
host replication repl 127.0.0.1/32 scram-sha-256 | ||
host replication repl ::1/128 scram-sha-256 | ||
EOF" | ||
sudo -u postgres /usr/local/pgsql/bin/pg_ctl -D /tmp/pgsql-${version} -l /tmp/logfile restart | ||
sudo -u postgres /usr/local/pgsql/bin/psql -U postgres -c "CREATE ROLE repl WITH LOGIN REPLICATION PASSWORD 'secretpassword';" | ||
} | ||
install_pgmoneta_ext() { | ||
cd /home/runner/work/pgmoneta_ext/pgmoneta_ext/ | ||
mkdir build | ||
cd /home/runner/work/pgmoneta_ext/pgmoneta_ext/build/ | ||
cmake .. | ||
make | ||
sudo make install | ||
} | ||
create_pgmoneta_ext(){ | ||
sudo -u postgres /usr/local/pgsql/bin/psql -U postgres -c "DROP EXTENSION IF EXISTS pgmoneta_ext;" | ||
sudo -u postgres /usr/local/pgsql/bin/psql -U postgres -c "CREATE EXTENSION pgmoneta_ext;" | ||
} | ||
test_pgmoneta_ext(){ | ||
cd /home/runner/work/pgmoneta_ext/pgmoneta_ext/test | ||
mkdir build | ||
cd /home/runner/work/pgmoneta_ext/pgmoneta_ext/test/build | ||
cmake .. | ||
make | ||
export PGPASSWORD='secretpassword' | ||
./pgmoneta_ext_test | ||
unset PGPASSWORD | ||
sudo -u postgres /usr/local/pgsql/bin/psql -U postgres -c "DROP ROLE repl;" | ||
sudo -u postgres /usr/local/pgsql/bin/pg_ctl -D /tmp/pgsql-${version} -l /tmp/logfile stop | ||
} | ||
cleanup(){ | ||
sudo rm -rf /usr/local/pgsql | ||
sudo rm -rf /usr/local/bin/psql | ||
sudo rm -rf /usr/local/bin/pg_ctl | ||
sudo rm -rf /usr/local/lib/postgresql | ||
sudo rm -rf /etc/postgresql | ||
sudo rm -rf /tmp/pgsql-* | ||
sudo rm -rf /tmp/pgsql | ||
sudo rm -rf /tmp/logfile | ||
sudo rm -rf /tmp/postgres | ||
sudo hash -r | ||
} | ||
VERSION=13 | ||
while [ $VERSION -lt 17 ]; do | ||
cleanup | ||
install_postgresql "$VERSION" | ||
config_postgresql "$VERSION" | ||
install_pgmoneta_ext | ||
create_pgmoneta_ext | ||
test_pgmoneta_ext | ||
VERSION=$((VERSION+1)) | ||
done |