You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
149 lines
4.0 KiB
149 lines
4.0 KiB
DOCKER_TAG := minitor-dev |
|
OPEN_CMD := $(shell type xdg-open &> /dev/null && echo 'xdg-open' || echo 'open') |
|
ENV := env |
|
|
|
.PHONY: default |
|
default: test |
|
|
|
# Create sample config |
|
config.yml: |
|
cp sample-config.yml config.yml |
|
|
|
# Creates virtualenv |
|
$(ENV): |
|
python3 -m venv $(ENV) |
|
|
|
# Install minitor and dependencies in virtualenv |
|
$(ENV)/bin/minitor: $(ENV) |
|
$(ENV)/bin/pip install -r requirements-dev.txt |
|
|
|
# Install tox into virtualenv for running tests |
|
$(ENV)/bin/tox: $(ENV) |
|
$(ENV)/bin/pip install tox |
|
|
|
# Install wheel for building packages |
|
$(ENV)/bin/wheel: $(ENV) |
|
$(ENV)/bin/pip install wheel |
|
|
|
# Install twine for uploading packages |
|
$(ENV)/bin/twine: $(ENV) |
|
$(ENV)/bin/pip install twine |
|
|
|
# Installs dev requirements to virtualenv |
|
.PHONY: devenv |
|
devenv: $(ENV)/bin/minitor |
|
|
|
# Generates a smaller env for running tox, which builds it's own env |
|
.PHONY: test-env |
|
test-env: $(ENV)/bin/tox |
|
|
|
# Generates a small build env for building and uploading dists |
|
.PHONY: build-env |
|
build-env: $(ENV)/bin/twine $(ENV)/bin/wheel |
|
|
|
# Runs Minitor |
|
.PHONY: run |
|
run: $(ENV)/bin/minitor config.yml |
|
$(ENV)/bin/minitor -vvv |
|
|
|
# Runs Minitor with metrics |
|
.PHONY: run-metrics |
|
run-metrics: $(ENV)/bin/minitor config.yml |
|
$(ENV)/bin/minitor -vvv --metrics |
|
|
|
# Runs tests with tox |
|
.PHONY: test |
|
test: $(ENV)/bin/tox |
|
$(ENV)/bin/tox -e py3 |
|
|
|
# Builds wheel for package to upload |
|
.PHONY: build |
|
build: $(ENV)/bin/wheel |
|
$(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: |
|
$(eval TAG_NAME = $(shell [ -n "$(DRONE_TAG)" ] && echo $(DRONE_TAG) || git describe --tags --exact-match)) |
|
test "v$(shell python setup.py -V)" = "$(TAG_NAME)" |
|
|
|
# Uses twine to upload to pypi |
|
.PHONY: upload |
|
upload: verify-tag-version build $(ENV)/bin/twine |
|
$(ENV)/bin/twine upload dist/* |
|
|
|
# Uses twine to upload to test pypi |
|
.PHONY: upload-test |
|
upload-test: verify-tag-version build $(ENV)/bin/twine |
|
$(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: $(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 and some Linux systems) |
|
.PHONY: open-coverage |
|
open-coverage: htmlcov/index.html |
|
$(OPEN_CMD) htmlcov/index.html |
|
|
|
# Docker targets |
|
|
|
# Targets to download required qemu binaries for running on an amd64 machine |
|
build/qemu-x86_64-static: |
|
./get_qemu.sh x86_64 |
|
|
|
build/qemu-arm-static: |
|
./get_qemu.sh arm |
|
|
|
build/qemu-aarch64-static: |
|
./get_qemu.sh aarch64 |
|
|
|
# Build Docker image for host architechture (amd64) |
|
.PHONY: docker-build |
|
docker-build: build/qemu-x86_64-static |
|
docker build . -t ${DOCKER_TAG}-linux-amd64 |
|
|
|
# Cross build for arm architechtures |
|
.PHONY: docker-cross-build-arm |
|
docker-cross-build-arm: build/qemu-arm-static |
|
docker build --build-arg REPO=arm32v6 --build-arg ARCH=arm . -t ${DOCKER_TAG}-linux-arm |
|
|
|
.PHONY: docker-cross-build-arm64 |
|
docker-cross-build-arm64: build/qemu-aarch64-static |
|
docker build --build-arg REPO=arm64v8 --build-arg ARCH=aarch64 . -t ${DOCKER_TAG}-linux-arm64 |
|
|
|
# Run on host architechture |
|
.PHONY: docker-run |
|
docker-run: docker-build config.yml |
|
docker run --rm -v $(shell pwd)/config.yml:/app/config.yml ${DOCKER_TAG}-linux-amd64 |
|
|
|
# Cross run on host architechture |
|
.PHONY: docker-cross-run-arm |
|
docker-cross-run-arm: docker-cross-build-arm config.yml |
|
docker run --rm -v $(shell pwd)/config.yml:/app/config.yml ${DOCKER_TAG}-linux-arm |
|
|
|
.PHONY: docker-cross-run-arm64 |
|
docker-cross-run-arm64: docker-cross-build-arm64 config.yml |
|
docker run --rm -v $(shell pwd)/config.yml:/app/config.yml ${DOCKER_TAG}-linux-arm64
|
|
|