Skip to content

pysqlsync database integration tests #51

pysqlsync database integration tests

pysqlsync database integration tests #51

Workflow file for this run

---
name: pysqlsync database integration tests
on:
workflow_dispatch:
defaults:
run:
shell: bash
env:
TEST_INTEGRATION: 1
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Fetch source code
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Set up build dependencies
run: |
python -m pip install --upgrade pip
python -m pip --disable-pip-version-check install -r requirements-dev.txt
- name: Run sanity checks
run: |
./check.sh
- name: Build PyPI package
run: |
python -m build
- name: Save PyPI package as artifact
uses: actions/upload-artifact@v4
with:
name: pysqlsync-dist
path: dist/**
if-no-files-found: error
compression-level: 0
test-postgresql:
runs-on: ubuntu-latest
needs: build
services:
postgres:
image: postgres:15-alpine
env:
POSTGRES_PORT: 5432
POSTGRES_USER: levente.hunyadi
POSTGRES_PASSWORD: "<?YourStrong@Passw0rd>"
POSTGRES_DB: levente.hunyadi
ports:
- 5432:5432
# set health checks to wait until PostgreSQL has started
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
--health-start-period 10s
env:
TEST_POSTGRESQL: 1
strategy:
matrix:
python-version: ["3.9", "3.12"]
steps:
- uses: actions/checkout@v4
with:
sparse-checkout: |
.github
- name: Test PyPI package
uses: ./.github/actions/test
with:
python-version: ${{ matrix.python-version }}
options-extras: postgresql
test-oracle:
runs-on: ubuntu-latest
needs: build
services:
oracle:
image: container-registry.oracle.com/database/free:latest
env:
ORACLE_PWD: "<?YourStrong@Passw0rd>"
ports:
- 1521:1521
# set health checks to wait until Oracle has started
options: >-
--health-interval 20s
--health-timeout 10s
--health-retries 10
--health-start-period 30s
env:
TEST_ORACLE: 1
strategy:
matrix:
python-version: ["3.12"]
steps:
- uses: actions/checkout@v4
with:
sparse-checkout: |
.github
- name: Test PyPI package
uses: ./.github/actions/test
with:
python-version: ${{ matrix.python-version }}
options-extras: oracle
test-mysql:
runs-on: ubuntu-latest
needs: build
services:
mysql:
image: mysql:8.0
env:
MYSQL_ROOT_PASSWORD: "<?YourStrong@Passw0rd>"
MYSQL_DATABASE: levente_hunyadi
ports:
- 3306:3306
# set health checks to wait until MySQL has started
options: >-
--health-cmd "mysqladmin ping"
--health-interval 10s
--health-timeout 5s
--health-retries 5
--health-start-period 10s
env:
TEST_MYSQL: 1
strategy:
matrix:
python-version: ["3.9", "3.12"]
steps:
- uses: actions/checkout@v4
with:
sparse-checkout: |
.github
- name: Test PyPI package
uses: ./.github/actions/test
with:
python-version: ${{ matrix.python-version }}
options-extras: mysql
test-mssql:
runs-on: ubuntu-latest
needs: build
services:
mssql:
image: mcr.microsoft.com/mssql/server:2022-latest
env:
ACCEPT_EULA: Y
MSSQL_SA_PASSWORD: "<?YourStrong@Passw0rd>"
SQLCMDPASSWORD: "<?YourStrong@Passw0rd>"
ports:
- 1433:1433
# set health checks to wait until Microsoft SQL Server has started
options: >-
--health-cmd "/opt/mssql-tools18/bin/sqlcmd -S localhost -N -C -U sa -Q 'SELECT @@VERSION' -b"
--health-interval 10s
--health-timeout 5s
--health-retries 5
--health-start-period 10s
env:
TEST_MSSQL: 1
strategy:
matrix:
python-version: ["3.12"]
steps:
- name: Install Microsoft ODBC
run: sudo ACCEPT_EULA=Y apt-get install msodbcsql18 -y
- uses: actions/checkout@v4
with:
sparse-checkout: |
.github
- name: Test PyPI package
uses: ./.github/actions/test
with:
python-version: ${{ matrix.python-version }}
options-extras: mssql