mirror of
https://github.com/psycopg/psycopg2.git
synced 2024-11-29 04:13:43 +03:00
Merge branch 'github-actions'
This commit is contained in:
commit
e7c5f95bf6
18
.github/workflows/docs.yml
vendored
Normal file
18
.github/workflows/docs.yml
vendored
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
name: Build documentation
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- maint_2_8
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
docs:
|
||||||
|
runs-on: ubuntu-20.04
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- name: Trigger docs build
|
||||||
|
run: ./scripts/travis_update_docs.sh
|
||||||
|
env:
|
||||||
|
TRAVIS_BRANCH: maint_2_8
|
||||||
|
TRAVIS_TOKEN: ${{ secrets.TRAVIS_TOKEN }}
|
62
.github/workflows/tests.yml
vendored
Normal file
62
.github/workflows/tests.yml
vendored
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
name: Tests
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
pull_request:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
tests:
|
||||||
|
name: Unit tests run
|
||||||
|
runs-on: ubuntu-20.04
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
include:
|
||||||
|
- python: 3.6
|
||||||
|
postgres: 10
|
||||||
|
- python: 3.7
|
||||||
|
postgres: 11
|
||||||
|
- python: 3.8
|
||||||
|
postgres: 12
|
||||||
|
- python: 3.9
|
||||||
|
postgres: 13
|
||||||
|
|
||||||
|
# Opposite extremes of the supported Py/PG range, other architecture
|
||||||
|
- python: 3.6
|
||||||
|
postgres: 13
|
||||||
|
architecture: 'x86'
|
||||||
|
- python: 3.9
|
||||||
|
postgres: 9.5
|
||||||
|
architecture: 'x86'
|
||||||
|
|
||||||
|
env:
|
||||||
|
PSYCOPG2_TESTDB: postgres
|
||||||
|
PSYCOPG2_TESTDB_HOST: 127.0.0.1
|
||||||
|
PSYCOPG2_TESTDB_USER: postgres
|
||||||
|
PSYCOPG2_TESTDB_PASSWORD: password
|
||||||
|
|
||||||
|
services:
|
||||||
|
postgresql:
|
||||||
|
image: postgres:${{ matrix.postgres }}
|
||||||
|
env:
|
||||||
|
POSTGRES_PASSWORD: password
|
||||||
|
ports:
|
||||||
|
- 5432:5432
|
||||||
|
# Set health checks to wait until postgres has started
|
||||||
|
options: >-
|
||||||
|
--health-cmd pg_isready
|
||||||
|
--health-interval 10s
|
||||||
|
--health-timeout 5s
|
||||||
|
--health-retries 5
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- uses: actions/setup-python@v2
|
||||||
|
with:
|
||||||
|
python-version: ${{ matrix.python }}
|
||||||
|
- name: Install tox
|
||||||
|
run: pip install tox
|
||||||
|
- name: Run tests
|
||||||
|
run: tox -e ${{ matrix.python }}
|
||||||
|
timeout-minutes: 5
|
34
.travis.yml
34
.travis.yml
|
@ -1,34 +0,0 @@
|
||||||
# Travis CI configuration file for psycopg2
|
|
||||||
|
|
||||||
language: python
|
|
||||||
|
|
||||||
dist: bionic
|
|
||||||
|
|
||||||
arch:
|
|
||||||
- amd64
|
|
||||||
- arm64
|
|
||||||
|
|
||||||
python:
|
|
||||||
- 3.6
|
|
||||||
- 3.7
|
|
||||||
- 3.8
|
|
||||||
- 3.9
|
|
||||||
|
|
||||||
install:
|
|
||||||
- sudo apt-get install -y bc
|
|
||||||
- pip install -U pip setuptools wheel
|
|
||||||
- pip install .
|
|
||||||
- rm -rf psycopg2.egg-info
|
|
||||||
- sudo scripts/travis_prepare.sh
|
|
||||||
|
|
||||||
script:
|
|
||||||
- scripts/travis_test.sh
|
|
||||||
|
|
||||||
deploy:
|
|
||||||
- provider: script
|
|
||||||
script: bash scripts/travis_update_docs.sh
|
|
||||||
on:
|
|
||||||
branch: master
|
|
||||||
|
|
||||||
notifications:
|
|
||||||
email: false
|
|
|
@ -61,11 +61,11 @@ production it is advised to use the package built from sources.
|
||||||
.. _install: https://www.psycopg.org/docs/install.html#install-from-source
|
.. _install: https://www.psycopg.org/docs/install.html#install-from-source
|
||||||
.. _faq: https://www.psycopg.org/docs/faq.html#faq-compile
|
.. _faq: https://www.psycopg.org/docs/faq.html#faq-compile
|
||||||
|
|
||||||
:Linux/OSX: |travis|
|
:Linux/OSX: |gh-actions|
|
||||||
:Windows: |appveyor|
|
:Windows: |appveyor|
|
||||||
|
|
||||||
.. |travis| image:: https://travis-ci.org/psycopg/psycopg2.svg?branch=master
|
.. |gh-actions| image:: https://github.com/psycopg/psycopg2/actions/workflows/tests.yml/badge.svg
|
||||||
:target: https://travis-ci.org/psycopg/psycopg2
|
:target: https://github.com/psycopg/psycopg2/actions/workflows/tests.yml
|
||||||
:alt: Linux and OSX build status
|
:alt: Linux and OSX build status
|
||||||
|
|
||||||
.. |appveyor| image:: https://ci.appveyor.com/api/projects/status/github/psycopg/psycopg2?branch=master&svg=true
|
.. |appveyor| image:: https://ci.appveyor.com/api/projects/status/github/psycopg/psycopg2?branch=master&svg=true
|
||||||
|
|
|
@ -1,156 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -e -x
|
|
||||||
|
|
||||||
# Prepare the test databases in Travis CI.
|
|
||||||
#
|
|
||||||
# The script should be run with sudo.
|
|
||||||
# The script is not idempotent: it assumes the machine in a clean state
|
|
||||||
# and is designed for a sudo-enabled Trusty environment.
|
|
||||||
#
|
|
||||||
# The variables TEST_PAST, TEST_FUTURE, DONT_TEST_PRESENT can be used to test
|
|
||||||
# against unsupported Postgres versions and skip tests with supported ones.
|
|
||||||
#
|
|
||||||
# The variables can be set in the travis configuration
|
|
||||||
# (https://travis-ci.org/psycopg/psycopg2/settings)
|
|
||||||
export TEST_PAST=${TEST_PAST:-0}
|
|
||||||
export TEST_FUTURE=${TEST_FUTURE:-0}
|
|
||||||
export TEST_VERBOSE=${TEST_VERBOSE:-0}
|
|
||||||
export PSYCOPG2_TEST_FAST=${PSYCOPG2_TEST_FAST:-0}
|
|
||||||
export TEST_PRESENT=${TEST_PRESENT:-1}
|
|
||||||
|
|
||||||
set_param () {
|
|
||||||
# Set a parameter in a postgresql.conf file
|
|
||||||
param=$1
|
|
||||||
value=$2
|
|
||||||
|
|
||||||
sed -i "s/^\s*#\?\s*$param.*/$param = $value/" "$DATADIR/postgresql.conf"
|
|
||||||
}
|
|
||||||
|
|
||||||
create () {
|
|
||||||
export VERSION=$1
|
|
||||||
export PACKAGE=${2:-$VERSION}
|
|
||||||
|
|
||||||
# Version as number: 9.6 -> 906; 11 -> 1100
|
|
||||||
export VERNUM=$(echo $VERSION \
|
|
||||||
| sed 's/\([0-9]\+\)\(\.\([0-9]\+\)\)\?/100 * \1 + 0\3/' | bc)
|
|
||||||
|
|
||||||
# Port number: 9.6 -> 50906
|
|
||||||
export PORT=$(( 50000 + $VERNUM ))
|
|
||||||
|
|
||||||
export DATADIR="/var/lib/postgresql/$PACKAGE/psycopg"
|
|
||||||
export PGDIR="/usr/lib/postgresql/$PACKAGE"
|
|
||||||
export PGBIN="$PGDIR/bin"
|
|
||||||
|
|
||||||
# install postgres versions not available on the image
|
|
||||||
if [[ ! -d "${PGDIR}" ]]; then
|
|
||||||
if (( "$VERNUM" >= 904 )); then
|
|
||||||
# A versiou supported by postgres
|
|
||||||
if [[ ! "${apt_updated:-}" ]]; then
|
|
||||||
apt_updated="yeah"
|
|
||||||
sudo apt-get update -y
|
|
||||||
fi
|
|
||||||
sudo apt-get install -y \
|
|
||||||
postgresql-server-dev-${VERSION} postgresql-${VERSION}
|
|
||||||
else
|
|
||||||
# A dinosaur
|
|
||||||
wget -O - \
|
|
||||||
https://upload.psycopg.org/postgresql/postgresql-${PACKAGE}-$(lsb_release -cs).tar.bz2 \
|
|
||||||
| sudo tar xjf - -C /usr/lib/postgresql
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
sudo -u postgres "$PGBIN/initdb" -D "$DATADIR"
|
|
||||||
|
|
||||||
set_param port "$PORT"
|
|
||||||
if (( "$VERNUM" >= 800 )); then
|
|
||||||
set_param listen_addresses "'*'"
|
|
||||||
else
|
|
||||||
set_param tcpip_socket true
|
|
||||||
fi
|
|
||||||
|
|
||||||
# for two-phase commit testing
|
|
||||||
if (( "$VERNUM" >= 801 )); then set_param max_prepared_transactions 10; fi
|
|
||||||
|
|
||||||
# for replication testing
|
|
||||||
if (( "$VERNUM" >= 900 )); then set_param max_wal_senders 5; fi
|
|
||||||
if (( "$VERNUM" >= 904 )); then set_param max_replication_slots 5; fi
|
|
||||||
|
|
||||||
if (( "$VERNUM" >= 904 )); then
|
|
||||||
set_param wal_level logical
|
|
||||||
elif (( "$VERNUM" >= 900 )); then
|
|
||||||
set_param wal_level hot_standby
|
|
||||||
fi
|
|
||||||
|
|
||||||
if (( "$VERNUM" >= 900 )); then
|
|
||||||
echo "host replication travis 0.0.0.0/0 trust" >> "$DATADIR/pg_hba.conf"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# start the server, wait for start
|
|
||||||
sudo -u postgres "$PGBIN/pg_ctl" -w -l /dev/null -D "$DATADIR" start
|
|
||||||
|
|
||||||
# create the test database
|
|
||||||
DBNAME=psycopg2_test
|
|
||||||
CONNINFO="user=postgres host=localhost port=$PORT dbname=template1"
|
|
||||||
|
|
||||||
if (( "$VERNUM" >= 901 )); then
|
|
||||||
psql -c "create user travis createdb createrole replication" "$CONNINFO"
|
|
||||||
elif (( "$VERNUM" >= 801 )); then
|
|
||||||
psql -c "create user travis createdb createrole" "$CONNINFO"
|
|
||||||
else
|
|
||||||
psql -c "create user travis createdb createuser" "$CONNINFO"
|
|
||||||
fi
|
|
||||||
|
|
||||||
psql -c "create database $DBNAME with owner travis" "$CONNINFO"
|
|
||||||
|
|
||||||
# configure global objects on the test database
|
|
||||||
CONNINFO="user=postgres host=localhost port=$PORT dbname=$DBNAME"
|
|
||||||
|
|
||||||
if (( "$VERNUM" >= 901 )); then
|
|
||||||
psql -c "create extension hstore" "$CONNINFO"
|
|
||||||
elif (( "$VERNUM" >= 803 )); then
|
|
||||||
psql -f "$PGDIR/share/contrib/hstore.sql" "$CONNINFO"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if (( "$VERNUM" == 901 )); then
|
|
||||||
psql -c "create extension json" "$CONNINFO"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Would give a permission denied error in the travis build dir
|
|
||||||
cd /
|
|
||||||
|
|
||||||
if (( "$TEST_PRESENT" )); then
|
|
||||||
if [[ ${TRAVIS_CPU_ARCH} == "arm64" ]]; then
|
|
||||||
# Postgres versions supported by ARM64
|
|
||||||
create 10
|
|
||||||
else
|
|
||||||
create 13
|
|
||||||
create 12
|
|
||||||
create 11
|
|
||||||
create 10
|
|
||||||
create 9.6
|
|
||||||
create 9.5
|
|
||||||
create 9.4
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
# Unsupported postgres versions that we still support
|
|
||||||
# Images built by https://github.com/psycopg/psycopg2-wheels/tree/build-dinosaurs
|
|
||||||
if (( "$TEST_PAST" )); then
|
|
||||||
create 7.4
|
|
||||||
create 8.0
|
|
||||||
create 8.1
|
|
||||||
create 8.2
|
|
||||||
create 8.3
|
|
||||||
create 8.4
|
|
||||||
create 9.0
|
|
||||||
create 9.1
|
|
||||||
create 9.2
|
|
||||||
create 9.3
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Postgres built from master
|
|
||||||
if (( "$TEST_FUTURE" )); then
|
|
||||||
# create 14 14-master
|
|
||||||
true
|
|
||||||
fi
|
|
|
@ -1,87 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Run the tests in all the databases
|
|
||||||
# The script is designed for a Trusty environment.
|
|
||||||
#
|
|
||||||
# The variables TEST_PAST, TEST_FUTURE, DONT_TEST_PRESENT can be used to test
|
|
||||||
# against unsupported Postgres versions and skip tests with supported ones.
|
|
||||||
#
|
|
||||||
# The variables TEST_VERBOSE enables verbose test log.
|
|
||||||
#
|
|
||||||
# The variables can be set in the travis configuration
|
|
||||||
# (https://travis-ci.org/psycopg/psycopg2/settings)
|
|
||||||
|
|
||||||
set -e -x
|
|
||||||
|
|
||||||
export TEST_PAST=${TEST_PAST:-0}
|
|
||||||
export TEST_FUTURE=${TEST_FUTURE:-0}
|
|
||||||
export TEST_VERBOSE=${TEST_VERBOSE:-0}
|
|
||||||
export PSYCOPG2_TEST_FAST=${PSYCOPG2_TEST_FAST:-0}
|
|
||||||
export TEST_PRESENT=${TEST_PRESENT:-1}
|
|
||||||
|
|
||||||
run_test () {
|
|
||||||
VERSION=$1
|
|
||||||
DBNAME=psycopg2_test
|
|
||||||
if (( "$TEST_VERBOSE" )); then
|
|
||||||
VERBOSE=--verbose
|
|
||||||
else
|
|
||||||
VERBOSE=
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Port number: 9.6 -> 50906
|
|
||||||
port=$(echo $VERSION \
|
|
||||||
| sed 's/\([0-9]\+\)\(\.\([0-9]\+\)\)\?/50000 + 100 * \1 + 0\3/' | bc)
|
|
||||||
|
|
||||||
printf "\n\nRunning tests against PostgreSQL $VERSION (port $port)\n\n"
|
|
||||||
export PSYCOPG2_TESTDB=$DBNAME
|
|
||||||
export PSYCOPG2_TESTDB_HOST=localhost
|
|
||||||
export PSYCOPG2_TESTDB_PORT=$port
|
|
||||||
export PSYCOPG2_TESTDB_USER=travis
|
|
||||||
export PSYCOPG2_TEST_REPL_DSN=
|
|
||||||
unset PSYCOPG2_TEST_GREEN
|
|
||||||
python -c \
|
|
||||||
"import tests; tests.unittest.main(defaultTest='tests.test_suite')" \
|
|
||||||
$VERBOSE
|
|
||||||
|
|
||||||
printf "\n\nRunning tests against PostgreSQL $VERSION (green mode)\n\n"
|
|
||||||
export PSYCOPG2_TEST_GREEN=1
|
|
||||||
python -c \
|
|
||||||
"import tests; tests.unittest.main(defaultTest='tests.test_suite')" \
|
|
||||||
$VERBOSE
|
|
||||||
}
|
|
||||||
|
|
||||||
if (( "$TEST_PRESENT" )); then
|
|
||||||
if [[ "${TRAVIS_CPU_ARCH}" == "arm64" ]]; then
|
|
||||||
# Postgres versions supported by ARM64
|
|
||||||
run_test 10
|
|
||||||
else
|
|
||||||
# Postgres versions supported by Travis CI
|
|
||||||
run_test 13
|
|
||||||
run_test 12
|
|
||||||
run_test 11
|
|
||||||
run_test 10
|
|
||||||
run_test 9.6
|
|
||||||
run_test 9.5
|
|
||||||
run_test 9.4
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
# Unsupported postgres versions that we still support
|
|
||||||
# Images built by https://github.com/psycopg/psycopg2-wheels/tree/build-dinosaurs
|
|
||||||
if (( "$TEST_PAST" )); then
|
|
||||||
run_test 9.3
|
|
||||||
run_test 9.2
|
|
||||||
run_test 9.1
|
|
||||||
run_test 9.0
|
|
||||||
run_test 8.4
|
|
||||||
run_test 8.3
|
|
||||||
run_test 8.2
|
|
||||||
run_test 8.1
|
|
||||||
run_test 8.0
|
|
||||||
run_test 7.4
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Postgres built from master
|
|
||||||
if (( "$TEST_FUTURE" )); then
|
|
||||||
# create 14 14-master
|
|
||||||
true
|
|
||||||
fi
|
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
# The travis token can be set at https://travis-ci.org/psycopg/psycopg2/settings
|
# The travis token can be set at https://github.com/psycopg/psycopg2/settings/secrets/actions
|
||||||
# and can be set on a selected branch only (which should match the DOC_BRANCH
|
# and can be set on a selected branch only (which should match the DOC_BRANCH
|
||||||
# in the psycopg-website Makefile, or it won't refresh a thing).
|
# in the psycopg-website Makefile, or it won't refresh a thing).
|
||||||
if [ -z "${TRAVIS_TOKEN:-}" ]; then
|
if [ -z "${TRAVIS_TOKEN:-}" ]; then
|
||||||
|
@ -13,18 +13,11 @@ if [ -z "${TRAVIS_TOKEN:-}" ]; then
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Avoid to rebuild the website for each matrix entry.
|
|
||||||
want_python="3.6"
|
|
||||||
if [ "${TRAVIS_PYTHON_VERSION}" != "${want_python}" ]; then
|
|
||||||
echo "skipping docs update: only updated on Python ${want_python} build" >&2
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "triggering psycopg-website rebuild" >&2
|
echo "triggering psycopg-website rebuild" >&2
|
||||||
curl -s -X POST \
|
curl -s -X POST \
|
||||||
-H "Content-Type: application/json" \
|
-H "Content-Type: application/json" \
|
||||||
-H "Accept: application/json" \
|
-H "Accept: application/json" \
|
||||||
-H "Travis-API-Version: 3" \
|
-H "Travis-API-Version: 3" \
|
||||||
-H "Authorization: token ${TRAVIS_TOKEN}" \
|
-H "Authorization: token ${TRAVIS_TOKEN}" \
|
||||||
-d '{ "request": { "branch":"master" }}' \
|
-d "{\"request\": {\"branch\": \"${TRAVIS_BRANCH}\"}}" \
|
||||||
https://api.travis-ci.org/repo/psycopg%2Fpsycopg-website/requests
|
https://api.travis-ci.com/repo/psycopg%2Fpsycopg-website/requests
|
||||||
|
|
3
tox.ini
3
tox.ini
|
@ -1,9 +1,10 @@
|
||||||
[tox]
|
[tox]
|
||||||
envlist = py{36,37,38,39}
|
envlist = {3.6,3.7,3.8,3.9}
|
||||||
|
|
||||||
[testenv]
|
[testenv]
|
||||||
commands = make check
|
commands = make check
|
||||||
whitelist_externals = make
|
whitelist_externals = make
|
||||||
|
passenv = PG* PSYCOPG2_TEST*
|
||||||
|
|
||||||
[flake8]
|
[flake8]
|
||||||
max-line-length = 85
|
max-line-length = 85
|
||||||
|
|
Loading…
Reference in New Issue
Block a user