Speed up builds and add pypi step

This commit is contained in:
IamTheFij 2018-04-11 18:16:26 -07:00
parent d005129afe
commit c66e15dd4f
3 changed files with 53 additions and 5 deletions

View File

@ -3,8 +3,22 @@ workspace:
path: .
pipeline:
build:
test:
image: python:3
commands:
- python3 -m venv env
- ./env/bin/pip install tox
- make test
- make build
push_to_pypi:
image: python:3
commands:
- ./env/bin/pip install twine
- make upload-test
secrets:
- source: PYPI_USERNAME
target: TWINE_USERNAME
- source: PYPI_PASSWORD
target: TWINE_PASSWORD
when:
event: tag
branch: master

View File

@ -1,48 +1,80 @@
.PHONY: default
default: test
# Builds the python3 venv with all dev requirements
env:
python3 -m venv env
./env/bin/pip install -r requirements-dev.txt
# Runs Minitor
.PHONY: run
run: env
./env/bin/python -m minitor.main
# Generates a smaller env for running tox, which builds it's own env
.PHONY: test-env
test-env:
python3 -m venv env
./env/bin/pip install tox
# Runs tests with tox
.PHONY: test
test: env
./env/bin/tox
# Generates a small build env for building and uploading dists
.PHONY: build-env
build-env:
python3 -m venv env
./env/bin/pip install twine wheel
# Builds wheel for package to upload
.PHONY: build
build: env
./env/bin/python setup.py sdist
./env/bin/python setup.py bdist_wheel
# Verify that the python version matches the git tag so we don't push bad shas
.PHONY: verify-tag-version
verify-tag-version:
test "v$(shell python setup.py -V)" = "$(shell git describe --tags --exact-match)"
# Uses twine to upload to pypi
.PHONY: upload
upload: env
upload: verify-tag-version build
./env/bin/twine upload dist/*
# Uses twine to upload to test pypi
.PHONY: upload-test
upload-test: env
upload-test: verify-tag-version build
./env/bin/twine upload --repository-url https://test.pypi.org/legacy/ dist/*
# Cleans all build, runtime, and test artifacts
.PHONY: clean
clean:
rm -fr ./build ./minitor.egg-info ./htmlcov ./.coverage ./.pytest_cache ./.tox
find . -name '*.pyc' -delete
find . -name '__pycache__' -delete
# Cleans dist and env
.PHONY: dist-clean
dist-clean: clean
rm -fr ./dist ./env
# Install pre-commit hooks
.PHONY: install-hooks
install-hooks:
install-hooks: env
./env/bin/tox -e pre-commit -- install -f --install-hooks
# Generates test coverage
.coverage:
./env/bin/tox
# Builds coverage html
htmlcov/index.html: .coverage
./env/bin/coverage html
# Opens coverage html in browser (on macOS)
.PHONY: open-coverage
open-coverage: htmlcov/index.html
open htmlcov/index.html

View File

@ -11,6 +11,8 @@ commands =
pre-commit run --all-files
[testenv:pre-commit]
deps =
pre-commit
commands =
pre-commit {posargs}