-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #11 from Genentech/add-cicd
Setting up GitHub actions for easier publishing
- Loading branch information
Showing
8 changed files
with
218 additions
and
23 deletions.
There are no files selected for viewing
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
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
# This workflow will install Python dependencies, run tests and lint with a single version of Python | ||
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions | ||
|
||
name: Publish to PyPI | ||
|
||
on: | ||
push: | ||
tags: "*" | ||
|
||
jobs: | ||
build: | ||
runs-on: ubuntu-latest | ||
|
||
steps: | ||
- uses: actions/checkout@v2 | ||
- name: Set up Python 3.9 | ||
uses: actions/setup-python@v4 | ||
with: | ||
python-version: 3.9 | ||
|
||
- name: Install System dependencies | ||
run: | | ||
sudo apt install pandoc | ||
- name: Install Python dependencies | ||
run: | | ||
python -m pip install --upgrade pip | ||
pip install flake8 pytest tox | ||
# - name: Lint with flake8 | ||
# run: | | ||
# # stop the build if there are Python syntax errors or undefined names | ||
# flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics | ||
# # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide | ||
# # flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics | ||
|
||
# Skip docs build and deploy as this is handled in a separate action | ||
# - name: Test with tox | ||
# run: | | ||
# tox | ||
# | ||
# - name: Build docs | ||
# run: | | ||
# tox -e docs | ||
# | ||
# - run: touch ./docs/_build/html/.nojekyll | ||
# | ||
# - name: GH Pages Deployment | ||
# uses: JamesIves/github-pages-deploy-action@4.1.3 | ||
# with: | ||
# branch: gh-pages # The branch the action should deploy to. | ||
# folder: ./docs/_build/html | ||
# clean: true # Automatically remove deleted files from the deploy branch | ||
|
||
- name: Build Project and Publish | ||
run: | | ||
python -m tox -e clean,build | ||
- name: Publish package | ||
uses: pypa/gh-action-pypi-publish@27b31702a0e7fc50959f5ad993c78deac1bdfc29 | ||
with: | ||
user: __token__ | ||
password: ${{ secrets.PYPI_TOKEN }} |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
# This workflow will install Python dependencies, run tests and lint with a single version of Python | ||
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions | ||
|
||
name: Test the library | ||
|
||
on: workflow_dispatch | ||
# push: | ||
# branches: [main] | ||
# pull_request: | ||
# branches: [main] | ||
|
||
jobs: | ||
build: | ||
runs-on: ubuntu-latest | ||
strategy: | ||
matrix: | ||
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"] | ||
|
||
name: Python ${{ matrix.python-version }} | ||
steps: | ||
- uses: actions/checkout@v2 | ||
- name: Setup Python | ||
uses: actions/setup-python@v4 | ||
with: | ||
python-version: ${{ matrix.python-version }} | ||
cache: "pip" | ||
- name: Install dependencies | ||
run: | | ||
python -m pip install --upgrade pip | ||
pip install flake8 pytest tox | ||
# - name: Lint with flake8 | ||
# run: | | ||
# # stop the build if there are Python syntax errors or undefined names | ||
# flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics | ||
# # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide | ||
# # flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics | ||
|
||
- name: Test with tox | ||
run: | | ||
tox |
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
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
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
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,3 @@ | ||
import subprocess | ||
import sys | ||
|
||
if sys.version_info[:2] >= (3, 8): | ||
|
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,93 @@ | ||
# Tox configuration file | ||
# Read more under https://tox.wiki/ | ||
# THIS SCRIPT IS SUPPOSED TO BE AN EXAMPLE. MODIFY IT ACCORDING TO YOUR NEEDS! | ||
|
||
[tox] | ||
minversion = 3.24 | ||
envlist = default | ||
isolated_build = True | ||
|
||
|
||
[testenv] | ||
description = Invoke pytest to run automated tests | ||
setenv = | ||
TOXINIDIR = {toxinidir} | ||
passenv = | ||
HOME | ||
SETUPTOOLS_* | ||
extras = | ||
testing | ||
commands = | ||
pytest {posargs} | ||
|
||
|
||
# # To run `tox -e lint` you need to make sure you have a | ||
# # `.pre-commit-config.yaml` file. See https://pre-commit.com | ||
# [testenv:lint] | ||
# description = Perform static analysis and style checks | ||
# skip_install = True | ||
# deps = pre-commit | ||
# passenv = | ||
# HOMEPATH | ||
# PROGRAMDATA | ||
# SETUPTOOLS_* | ||
# commands = | ||
# pre-commit run --all-files {posargs:--show-diff-on-failure} | ||
|
||
|
||
[testenv:{build,clean}] | ||
description = | ||
build: Build the package in isolation according to PEP517, see https://github.com/pypa/build | ||
clean: Remove old distribution files and temporary build artifacts (./build and ./dist) | ||
# https://setuptools.pypa.io/en/stable/build_meta.html#how-to-use-it | ||
skip_install = True | ||
changedir = {toxinidir} | ||
deps = | ||
build: build[virtualenv] | ||
passenv = | ||
SETUPTOOLS_* | ||
commands = | ||
clean: python -c 'import shutil; [shutil.rmtree(p, True) for p in ("build", "dist", "docs/_build")]' | ||
clean: python -c 'import pathlib, shutil; [shutil.rmtree(p, True) for p in pathlib.Path("src").glob("*.egg-info")]' | ||
build: python -m build {posargs} | ||
# By default, both `sdist` and `wheel` are built. If your sdist is too big or you don't want | ||
# to make it available, consider running: `tox -e build -- --wheel` | ||
|
||
|
||
[testenv:{docs,doctests,linkcheck}] | ||
description = | ||
docs: Invoke sphinx-build to build the docs | ||
doctests: Invoke sphinx-build to run doctests | ||
linkcheck: Check for broken links in the documentation | ||
passenv = | ||
SETUPTOOLS_* | ||
setenv = | ||
DOCSDIR = {toxinidir}/docs | ||
BUILDDIR = {toxinidir}/docs/_build | ||
docs: BUILD = html | ||
doctests: BUILD = doctest | ||
linkcheck: BUILD = linkcheck | ||
deps = | ||
-r {toxinidir}/docs/requirements.txt | ||
# ^ requirements.txt shared with Read The Docs | ||
commands = | ||
sphinx-build --color -b {env:BUILD} -d "{env:BUILDDIR}/doctrees" "{env:DOCSDIR}" "{env:BUILDDIR}/{env:BUILD}" {posargs} | ||
|
||
|
||
[testenv:publish] | ||
description = | ||
Publish the package you have been developing to a package index server. | ||
By default, it uses testpypi. If you really want to publish your package | ||
to be publicly accessible in PyPI, use the `-- --repository pypi` option. | ||
skip_install = True | ||
changedir = {toxinidir} | ||
passenv = | ||
# See: https://twine.readthedocs.io/en/latest/ | ||
TWINE_USERNAME | ||
TWINE_PASSWORD | ||
TWINE_REPOSITORY | ||
TWINE_REPOSITORY_URL | ||
deps = twine | ||
commands = | ||
python -m twine check dist/* | ||
python -m twine upload {posargs:--repository {env:TWINE_REPOSITORY:testpypi}} dist/* |