blob: c5815098eed621bd10fd1fee3be0093d56d67b1e [file] [log] [blame]
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
VERSION ?= next
# determine host platform
ifeq ($(OS),Windows_NT)
OS := Windows
else ifeq ($(shell uname -s),Darwin)
OS := Darwin
else
OS := $(shell sh -c 'uname 2>/dev/null || echo Unknown')
endif
.PHONY: env
env: poetry gen
poetry install --all-extras
poetry run pip install --upgrade pip
.PHONY: poetry poetry-fallback
# poetry installer may not work on macOS's default python
# falls back to pipx installer
poetry-fallback:
python3 -m pip install --user pipx
python3 -m pipx ensurepath
pipx install poetry
pipx upgrade poetry
poetry:
ifeq ($(OS),Windows)
-powershell (Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | py -
poetry self update
else
-curl -sSL https://install.python-poetry.org | python3 -
poetry self update || $(MAKE) poetry-fallback
endif
.PHONY: gen
gen:
poetry run pip install grpcio-tools packaging
poetry run python3 tools/grpc_code_gen.py
.PHONY: gen-basic
gen-basic:
python3 -m pip install grpcio-tools packaging
python3 tools/grpc_code_gen.py
.PHONY: install
install: gen-basic
python3 -m pip install --upgrade pip
python3 -m pip install .[all]
.PHONY: lint
# flake8 configurations should go to the file setup.cfg
lint: clean
poetry run flake8 .
poetry run pylint --disable=all --enable=E0602,E0603,E1101 skywalking tests
.PHONY: fix
# fix problems described in CodingStyle.md - verify outcome with extra care
fix:
poetry run unify -r --in-place .
poetry run flynt -tc -v .
.PHONY: doc-gen
doc-gen: gen
poetry run python3 tools/plugin_doc_gen.py
poetry run python3 tools/config_doc_gen.py
.PHONY: check-doc-gen
check-doc-gen: doc-gen
@if [ ! -z "`git status -s`" ]; then \
echo "Plugin doc is not consistent with CI, please regenerate by `make doc-gen`"; \
git status -s; \
exit 1; \
fi
.PHONY: license
license: clean
docker run -it --rm -v $(shell pwd):/github/workspace ghcr.io/apache/skywalking-eyes/license-eye:20da317d1ad158e79e24355fdc28f53370e94c8a header check
.PHONY: test
test: env
sudo apt-get -y install jq
docker build --build-arg BASE_PYTHON_IMAGE=3.7-slim -t apache/skywalking-python-agent:latest-plugin --no-cache . -f tests/plugin/Dockerfile.plugin
poetry run pytest -v $(bash tests/gather_test_paths.sh)
.PHONY: package
package: clean gen
poetry build
.PHONY: upload-test
upload-test: package
poetry run twine upload --repository-url https://test.pypi.org/legacy/ dist/*
.PHONY: upload
upload: package
poetry run twine upload dist/*
.PHONY: build-image
build-image:
$(MAKE) -C docker build AGENT_VERSION=$(VERSION)
.PHONY: push-image
push-image:
$(MAKE) -C docker push AGENT_VERSION=$(VERSION)
.PHONY: clean
# FIXME change to python based so we can run on windows
clean:
rm -rf skywalking/protocol
rm -rf apache_skywalking.egg-info dist build
rm -rf skywalking-python*.tgz*
find . -name "__pycache__" -exec rm -r {} +
find . -name ".pytest_cache" -exec rm -r {} +
find . -name "*.pyc" -exec rm -r {} +
.PHONY: release
release: clean lint license
tar -zcvf skywalking-python-src-$VERSION.tgz --exclude .venv *
gpg --batch --yes --armor --detach-sig skywalking-python-src-$VERSION.tgz
shasum -a 512 skywalking-python-src-$VERSION.tgz > skywalking-python-src-$VERSION.tgz.sha512