Skip to content

Commit

Permalink
u
Browse files Browse the repository at this point in the history
  • Loading branch information
GuChad369 committed Jun 18, 2024
1 parent 72be9f1 commit fc06529
Showing 1 changed file with 80 additions and 42 deletions.
122 changes: 80 additions & 42 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,55 +17,93 @@ jobs:
steps:
- uses: actions/checkout@v4
- name: Update system
run: sudo apt update -y
- name: Install postgresql
run: sudo apt-get update -y
- name: Install dependencies
run: 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: Define install_postgresql() function
run: |
sudo apt install -y postgresql-14
psql --version
- name: Install postgresql-server-dev-14
run: sudo apt install -y postgresql-server-dev-14
- name: Init database
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
}
- name: Define config_postgresql() function
run: |
version=$(pg_config --version | grep -Eo "[0-9]{1,2}" | head -1)
sudo -u postgres /usr/lib/postgresql/${version}/bin/initdb /tmp/pgsql
- name: Config postgres
run: |
sudo -u postgres sed -i 's/#password_encryption = scram-sha-256/password_encryption = scram-sha-256/' /tmp/pgsql/postgresql.conf
sudo -u postgres sed -i '/^host/d' /tmp/pgsql/pg_hba.conf
echo 'cat <<EOF >> /tmp/pgsql/pg_hba.conf
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 -s
- name: Setup postgres
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';"
}
- name: Define install_pgmoneta_ext() function
run: |
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
}
- name: Define create_pgmoneta_ext() function
run: |
version=$(pg_config --version | grep -Eo "[0-9]{1,2}" | head -1)
sudo -u postgres /usr/lib/postgresql/${version}/bin/pg_ctl start -D /tmp/pgsql
sudo -u postgres /usr/lib/postgresql/${version}/bin/psql -U postgres -c "CREATE ROLE repl WITH LOGIN REPLICATION PASSWORD 'secretpassword';"
- name: GCC/mkdir
run: mkdir build
working-directory: /home/runner/work/pgmoneta_ext/pgmoneta_ext/
- name: GCC/cmake
run: export CC=/usr/bin/gcc && cmake -DCMAKE_BUILD_TYPE=Debug ..
working-directory: /home/runner/work/pgmoneta_ext/pgmoneta_ext/build/
- name: GCC/make
run: make
working-directory: /home/runner/work/pgmoneta_ext/pgmoneta_ext/build/
- name: GCC/make install
run: sudo make install
working-directory: /home/runner/work/pgmoneta_ext/pgmoneta_ext/build/
- name: Create extension
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;"
}
- name: Define test_pgmoneta_ext() function
run: |
version=$(pg_config --version | grep -Eo "[0-9]{1,2}" | head -1)
/usr/lib/postgresql/${version}/bin/psql -U postgres -c "DROP EXTENSION IF EXISTS pgmoneta_ext;"
/usr/lib/postgresql/${version}/bin/psql -U postgres -c "CREATE EXTENSION pgmoneta_ext;"
- name: Test function
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
}
- name: Define cleanup() function
run: |
version=$(pg_config --version | grep -Eo "[0-9]{1,2}" | head -1)
/usr/lib/postgresql/${version}/bin/psql -U postgres -c "SELECT pgmoneta_ext_version();"
- name: Cleanup
cleanup(){
rm -rf /usr/local/pgsql
rm -rf /usr/local/bin/psql
rm -rf /usr/local/bin/pg_ctl
rm -rf /usr/local/lib/postgresql
rm -rf /etc/postgresql
rm -rf /tmp/pgsql-*
rm -rf /tmp/pgsql
rm -rf /tmp/logfile
rm -rf /tmp/postgres
hash -r
}
- name: Run all functions
run: |
version=$(pg_config --version | grep -Eo "[0-9]{1,2}" | head -1)
sudo -u postgres /usr/lib/postgresql/${version}/bin/pg_ctl stop -D /tmp/pgsql
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

0 comments on commit fc06529

Please sign in to comment.