--- /dev/null
+---
+name: Publish
+
+on:
+ push:
+ tags:
+ - '*'
+
+jobs:
+ publish:
+ name: "Publish release"
+ runs-on: "ubuntu-latest"
+
+ steps:
+ - uses: "actions/checkout@v2"
+ - uses: "actions/setup-python@v1"
+ with:
+ python-version: 3.7
+ - name: "Install dependencies"
+ run: "scripts/install"
+ - name: "Build package & docs"
+ run: "scripts/build"
+ - name: "Publish to PyPI & deploy docs"
+ run: "scripts/publish"
+ env:
+ TWINE_USERNAME: __token__
+ TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }}
#!/bin/sh -e
-export PACKAGE="httpx"
-export VERSION=`cat ${PACKAGE}/__version__.py | grep __version__ | sed "s/__version__ = //" | sed "s/'//g"`
-export PREFIX=""
+VERSION_FILE="httpx/__init__.py"
+
if [ -d 'venv' ] ; then
- export PREFIX="venv/bin/"
+ PREFIX="venv/bin/"
+else
+ PREFIX=""
fi
-scripts/clean
-
-if ! command -v "${PREFIX}twine" &>/dev/null ; then
- echo "Unable to find the 'twine' command."
- echo "Install from PyPI, using '${PREFIX}pip install twine'."
- exit 1
-fi
+if [ ! -z "$GITHUB_ACTIONS" ]; then
+ git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com"
+ git config --local user.name "GitHub Action"
-if ! ${PREFIX}pip show wheel &>/dev/null ; then
- echo "Unable to find the 'wheel' command."
- echo "Install from PyPI, using '${PREFIX}pip install wheel'."
- exit 1
-fi
+ VERSION=`grep __version__ ${VERSION_FILE} | grep -o '[0-9][^"]*'`
-if ! command -v "${PREFIX}mkdocs" &>/dev/null ; then
- echo "Unable to find the 'mkdocs' command."
- echo "Install from PyPI, using '${PREFIX}pip install mkdocs'."
+ if [ "refs/tags/${VERSION}" != "${GITHUB_REF}" ] ; then
+ echo "GitHub Ref '${GITHUB_REF}' did not match package version '${VERSION}'"
exit 1
+ fi
fi
-find ${PACKAGE} -type f -name "*.py[co]" -delete
-find ${PACKAGE} -type d -name __pycache__ -delete
+set -x
-${PREFIX}python setup.py sdist bdist_wheel
${PREFIX}twine upload dist/*
-${PREFIX}mkdocs gh-deploy
-
-echo "You probably want to also tag the version now:"
-echo "git tag -a ${VERSION} -m 'version ${VERSION}'"
-echo "git push --tags"
-
-scripts/clean
+${PREFIX}mkdocs gh-deploy --force