Create sdist packages

Adapted from the psycopg2-wheels project
This commit is contained in:
Daniele Varrazzo 2021-05-23 20:42:27 +02:00
parent 8a2deb39ed
commit ec531bee31
2 changed files with 78 additions and 0 deletions

52
.github/workflows/packages.yml vendored Normal file
View File

@ -0,0 +1,52 @@
---
name: Build packages
on:
- workflow_dispatch
jobs:
build-sdist:
strategy:
fail-fast: false
matrix:
include:
- package_name: psycopg2
- package_name: psycopg2-binary
runs-on: ubuntu-20.04
steps:
- name: Checkout repos
uses: actions/checkout@v2
- name: Build sdist
run: ./scripts/build/build_sdist.sh
env:
PACKAGE_NAME: ${{ matrix.package_name }}
- name: Upload artifacts
uses: actions/upload-artifact@v2
with:
name: packages_sdist
path: |
dist/*/*.tar.gz
env:
PSYCOPG2_TESTDB: postgres
PSYCOPG2_TESTDB_HOST: 172.17.0.1
PSYCOPG2_TESTDB_USER: postgres
PSYCOPG2_TESTDB_PASSWORD: password
PSYCOPG2_TEST_FAST: 1
services:
postgresql:
image: postgres:13
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

26
scripts/build/build_sdist.sh Executable file
View File

@ -0,0 +1,26 @@
#!/bin/bash
set -euo pipefail
set -x
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
PRJDIR="$( cd "${DIR}/../.." && pwd )"
# Find psycopg version
export VERSION=$(grep -e ^PSYCOPG_VERSION setup.py | sed "s/.*'\(.*\)'/\1/")
# A gratuitous comment to fix broken vim syntax file: '")
export DISTDIR="${PRJDIR}/dist/psycopg2-$VERSION"
# Replace the package name
if [[ "${PACKAGE_NAME:-}" ]]; then
sed -i "s/^setup(name=\"psycopg2\"/setup(name=\"${PACKAGE_NAME}\"/" \
setup.py
fi
# Build the source package
python setup.py sdist -d "$DISTDIR"
# install and test
pip install "${DISTDIR}"/*.tar.gz
python -c "import tests; tests.unittest.main(defaultTest='tests.test_suite')"