Allow passing pgpass file using docker secrets to pgadmin container.#… #250
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: Run feature tests on PostgreSQL | |
# Note: we use a custom port for PostgreSQL as the runners may already have | |
# a version installed. | |
on: | |
push: | |
branches: [ "master" ] | |
pull_request: | |
branches: [ "master" ] | |
workflow_dispatch: | |
concurrency: | |
group: '${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}' | |
cancel-in-progress: true | |
jobs: | |
run-feature-tests-pg: | |
strategy: | |
fail-fast: false | |
matrix: | |
pgver: [12, 13, 14, 15, 16] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup the PGDG APT repo | |
run: | | |
sudo sh -c 'echo "deb https://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 - | |
- name: Install platform dependencies | |
run: | | |
sudo apt update | |
sudo apt install -y libpq-dev libffi-dev libssl-dev libkrb5-dev zlib1g-dev postgresql-${{ matrix.pgver }} postgresql-${{ matrix.pgver }}-pldebugger pgagent | |
- name: Create the tablespace directory | |
run: | | |
sudo mkdir -p /var/lib/postgresql/tablespaces/${{ matrix.pgver }} | |
sudo chown postgres:postgres /var/lib/postgresql/tablespaces/${{ matrix.pgver }} | |
- name: Re-create stats directory, just in case | |
run: | | |
sudo rm -rf /var/run/postgresql/${{ matrix.pgver }}-main.pg_stat_tmp/ | |
sudo mkdir -p /var/run/postgresql/${{ matrix.pgver }}-main.pg_stat_tmp/ | |
sudo chown postgres:postgres /var/run/postgresql/${{ matrix.pgver }}-main.pg_stat_tmp/ | |
- name: Start PostgreSQL | |
run: | | |
sudo su -c "echo local all all trust > /etc/postgresql/${{ matrix.pgver }}/main/pg_hba.conf" | |
sudo sed -i "s/port = 543[0-9]/port = 59${{ matrix.pgver }}/g" /etc/postgresql/${{ matrix.pgver }}/main/postgresql.conf | |
sudo sed -i "s/#shared_preload_libraries = ''/shared_preload_libraries = '\$libdir\/plugin_debugger'/g" /etc/postgresql/${{ matrix.pgver }}/main/postgresql.conf | |
sudo su - postgres -c "/usr/lib/postgresql/${{ matrix.pgver }}/bin/postgres -D /var/lib/postgresql/${{ matrix.pgver }}/main -c config_file=/etc/postgresql/${{ matrix.pgver }}/main/postgresql.conf &" | |
until sudo runuser -l postgres -c "pg_isready -p 59${{ matrix.pgver }}" 2>/dev/null; do | |
>&2 echo "Postgres is unavailable - sleeping for 2 seconds" | |
sleep 2 | |
done | |
psql -U postgres -p 59${{ matrix.pgver }} -c 'CREATE EXTENSION pgagent;' | |
psql -U postgres -p 59${{ matrix.pgver }} -c 'CREATE EXTENSION pldbgapi;' | |
- name: Install Python dependencies | |
run: make install-python-testing | |
- name: Create the test configuration | |
run: | | |
cat <<EOF > web/config_local.py | |
from config import * | |
# Debug mode | |
DEBUG = True | |
# App mode | |
SERVER_MODE = False | |
# Log | |
CONSOLE_LOG_LEVEL = DEBUG | |
FILE_LOG_LEVEL = DEBUG | |
DEFAULT_SERVER = '127.0.0.1' | |
UPGRADE_CHECK_ENABLED = False | |
LOG_FILE = "$(pwd)/var/pgadmin4.log" | |
SESSION_DB_PATH = "$(pwd)/var/sessions" | |
STORAGE_DIR = "$(pwd)/var/storage" | |
SQLITE_PATH = "$(pwd)/var/pgadmin4.db" | |
TEST_SQLITE_PATH = "$(pwd)/var/pgadmin4.db" | |
AZURE_CREDENTIAL_CACHE_DIR = "$(pwd)/var/azurecredentialcache" | |
EOF | |
cat <<EOF > web/regression/test_config.json | |
{ | |
"headless_chrome": false, | |
"default_browser": "Chrome", | |
"pgAdmin4_login_credentials": { | |
"new_password": "NEWPASSWORD", | |
"login_password": "PASSWORD", | |
"login_username": "[email protected]" | |
}, | |
"pgAdmin4_test_user_credentials": { | |
"new_password": "NEWPASSWORD", | |
"login_password": "PASSWORD", | |
"login_username": "[email protected]" | |
}, | |
"pgAdmin4_test_non_admin_credentials": { | |
"new_password": "NEWPASSWORD", | |
"login_password": "PASSWORD", | |
"login_username": "[email protected]" | |
}, | |
"server_group": 1, | |
"server_credentials": [ | |
{ | |
"name": "PostgreSQL ${{ matrix.pgver }}", | |
"comment": "PostgreSQL ${{ matrix.pgver }} Server", | |
"db_username": "postgres", | |
"host": "/var/run/postgresql", | |
"db_password": "postgres", | |
"db_port": 59${{ matrix.pgver }}, | |
"maintenance_db": "postgres", | |
"sslmode": "prefer", | |
"tablespace_path": "/var/lib/postgresql/tablespaces/${{ matrix.pgver }}", | |
"enabled": true, | |
"default_binary_paths": { | |
"pg": "/usr/lib/postgresql/${{ matrix.pgver }}/bin", | |
"ppas": "" | |
} | |
} | |
], | |
"server_update_data": [ | |
{ | |
"comment": "This is test update comment" | |
} | |
] | |
} | |
EOF | |
- name: Upgrade yarn | |
run: | | |
yarn set version berry | |
yarn set version 3 | |
- name: Build the JS bundle | |
run: | | |
cd web | |
yarn install | |
yarn run bundle | |
- name: Run the tests | |
run: | | |
. venv/bin/activate | |
sudo Xvfb -ac :99 -screen 0 1280x1024x24 > /dev/null 2>&1 & | |
export DISPLAY=:99 | |
cd web | |
python regression/runtests.py --pkg feature_tests | |
- name: Archive server log | |
if: success() || failure() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: server-log-pg${{ matrix.pgver }} | |
path: var/pgadmin4.log | |
- name: Archive regression log | |
if: success() || failure() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: regression-log-pg${{ matrix.pgver }} | |
path: web/regression/regression.log | |
- name: Archive screenshots | |
if: success() || failure() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: screenshots-pg${{ matrix.pgver }} | |
path: web/regression/screenshots | |
if-no-files-found: ignore |