mirror of
https://github.com/buildbot/buildbot.git
synced 2021-05-20 10:47:20 +03:00
The tests master/buildbot/test/unit/www/test_ldapuserinfo.py require ldap3 or they will fail with an import error. This change allows the import to happen and will throw the error only if LdapUserInfo is used and ldap3 is not available.
172 lines
5.7 KiB
Makefile
172 lines
5.7 KiB
Makefile
# developer utilities
|
|
DOCKERBUILD := docker build --build-arg http_proxy=$$http_proxy --build-arg https_proxy=$$https_proxy
|
|
ROOT_DIR := $(shell dirname $(realpath $(firstword $(MAKEFILE_LIST))))
|
|
|
|
.PHONY: docs pylint flake8 virtualenv
|
|
|
|
|
|
VENV_NAME := .venv$(VENV_PY_VERSION)
|
|
PIP ?= $(ROOT_DIR)/$(VENV_NAME)/bin/pip
|
|
PYTHON ?= $(ROOT_DIR)/$(VENV_NAME)/bin/python
|
|
VENV_PY_VERSION ?= python3
|
|
|
|
WWW_PKGS := www/base www/console_view www/grid_view www/waterfall_view www/wsgi_dashboards www/badges
|
|
WWW_EX_PKGS := www/nestedexample www/codeparameter
|
|
WWW_DEP_PKGS := www/guanlecoja-ui www/data_module
|
|
ALL_PKGS := master worker pkg $(WWW_PKGS)
|
|
|
|
WWW_PKGS_FOR_UNIT_TESTS := $(filter-out www/badges, $(WWW_DEP_PKGS) $(WWW_PKGS))
|
|
|
|
ALL_PKGS_TARGETS := $(addsuffix _pkg,$(ALL_PKGS))
|
|
.PHONY: $(ALL_PKGS_TARGETS)
|
|
|
|
# build rst documentation
|
|
docs:
|
|
$(MAKE) -C master/docs dev
|
|
@echo "You can now open master/docs/_build/html/index.html"
|
|
|
|
docs-towncrier:
|
|
if command -v towncrier >/dev/null 2>&1 ;\
|
|
then \
|
|
towncrier --draft | grep 'No significant changes.' || yes n | towncrier ;\
|
|
fi
|
|
|
|
docs-spelling:
|
|
$(MAKE) -C master/docs SPHINXOPTS=-W spelling
|
|
|
|
docs-linkcheck:
|
|
$(MAKE) -C master/docs SPHINXOPTS=-q linkcheck
|
|
|
|
docs-release: docs-towncrier
|
|
$(MAKE) -C master/docs
|
|
|
|
docs-release-spelling: docs-towncrier
|
|
$(MAKE) -C master/docs SPHINXOPTS=-W spelling
|
|
|
|
# pylint the whole sourcecode (validate.sh will do that as well, but only process the modified files)
|
|
pylint:
|
|
$(MAKE) -C master pylint; master_res=$$?; \
|
|
$(MAKE) -C worker pylint; worker_res=$$?; \
|
|
if [ $$master_res != 0 ] || [ $$worker_res != 0 ]; then exit 1; fi
|
|
|
|
# flake8 the whole sourcecode (validate.sh will do that as well, but only process the modified files)
|
|
flake8:
|
|
$(MAKE) -C master flake8
|
|
$(MAKE) -C worker flake8
|
|
flake8 --config=common/flake8rc www/*/buildbot_*/
|
|
flake8 --config=common/flake8rc www/*/setup.py
|
|
flake8 --config=common/flake8rc common/*.py
|
|
|
|
frontend_deps: $(VENV_NAME)
|
|
$(PIP) install -e pkg
|
|
$(PIP) install mock wheel buildbot
|
|
cd www/build_common; yarn install --pure-lockfile
|
|
for i in $(WWW_DEP_PKGS); \
|
|
do (cd $$i; yarn install --pure-lockfile; yarn run build); done
|
|
|
|
frontend_tests: frontend_deps
|
|
for i in $(WWW_PKGS); \
|
|
do (cd $$i; yarn install --pure-lockfile); done
|
|
for i in $(WWW_PKGS_FOR_UNIT_TESTS); \
|
|
do (cd $$i; yarn run build-dev || exit 1; yarn run test || exit 1) || exit 1; done
|
|
|
|
frontend_tests_headless: frontend_deps
|
|
for i in $(WWW_PKGS); \
|
|
do (cd $$i; yarn install --pure-lockfile); done
|
|
for i in $(WWW_PKGS_FOR_UNIT_TESTS); \
|
|
do (cd $$i; yarn run build-dev || exit 1; yarn run test --browsers BBChromeHeadless || exit 1) || exit 1; done
|
|
|
|
# rebuild front-end from source
|
|
frontend: frontend_deps
|
|
for i in pkg $(WWW_PKGS); do $(PIP) install -e $$i || exit 1; done
|
|
|
|
# build frontend wheels for installation elsewhere
|
|
frontend_wheels: frontend_deps
|
|
for i in pkg $(WWW_PKGS); \
|
|
do (cd $$i; $(PYTHON) setup.py bdist_wheel || exit 1) || exit 1; done
|
|
|
|
# do installation tests. Test front-end can build and install for all install methods
|
|
frontend_install_tests: frontend_deps
|
|
trial pkg/test_buildbot_pkg.py
|
|
|
|
# upgrade FE dependencies
|
|
frontend_yarn_upgrade:
|
|
for i in $(WWW_PKGS) $(WWW_EX_PKGS) $(WWW_DEP_PKGS); \
|
|
do (cd $$i; echo $$i; rm -rf yarn.lock; yarn install || echo $$i failed); done
|
|
|
|
# install git hooks for validating patches at commit time
|
|
hooks:
|
|
cp common/hooks/* `git rev-parse --git-dir`/hooks
|
|
rmpyc:
|
|
find master worker \( -name '*.pyc' -o -name '*.pyo' \) -exec rm -v {} \;
|
|
|
|
isort:
|
|
isort -rc worker master
|
|
git diff --name-only --stat "HEAD" | grep '.py$$' | xargs autopep8 -i
|
|
git add -u
|
|
|
|
|
|
docker: docker-buildbot-worker docker-buildbot-master
|
|
echo done
|
|
docker-buildbot-worker:
|
|
$(DOCKERBUILD) -t buildbot/buildbot-worker:master worker
|
|
docker-buildbot-master:
|
|
$(DOCKERBUILD) -t buildbot/buildbot-master:master master
|
|
|
|
$(VENV_NAME):
|
|
virtualenv -p $(VENV_PY_VERSION) $(VENV_NAME)
|
|
$(PIP) install -U pip setuptools
|
|
|
|
# helper for virtualenv creation
|
|
virtualenv: $(VENV_NAME) # usage: make virtualenv VENV_PY_VERSION=python3.4
|
|
$(PIP) install -r requirements-minimal.txt \
|
|
packaging towncrier
|
|
@echo now you can type following command to activate your virtualenv
|
|
@echo . $(VENV_NAME)/bin/activate
|
|
|
|
TRIALOPTS?=buildbot
|
|
|
|
.PHONY: trial
|
|
trial: virtualenv
|
|
. $(VENV_NAME)/bin/activate && trial $(TRIALOPTS)
|
|
|
|
release_notes: $(VENV_NAME)
|
|
test ! -z "$(VERSION)" # usage: make release_notes VERSION=0.9.2
|
|
yes | towncrier --version $(VERSION) --date `date -u +%F`
|
|
git commit -m "Release notes for $(VERSION)"
|
|
|
|
$(ALL_PKGS_TARGETS): cleanup_for_tarballs frontend_deps
|
|
. $(VENV_NAME)/bin/activate && ./common/maketarball.sh $(patsubst %_pkg,%,$@)
|
|
|
|
cleanup_for_tarballs:
|
|
find master pkg worker www -name VERSION -exec rm {} \;
|
|
rm -rf dist
|
|
mkdir dist
|
|
.PHONY: cleanup_for_tarballs
|
|
tarballs: $(ALL_PKGS_TARGETS)
|
|
.PHONY: tarballs
|
|
|
|
# helper for release creation
|
|
release: virtualenv
|
|
test ! -z "$(VERSION)" # usage: make release VERSION=0.9.2
|
|
test -d "../bbdocs/.git" # make release should be done with bbdocs populated at the same level as buildbot dir
|
|
GPG_TTY=`tty` git tag -a -sf v$(VERSION) -m "TAG $(VERSION)"
|
|
git push buildbot "v$(VERSION)" # tarballs are made by circleci.yml, and create a github release
|
|
export VERSION=$(VERSION) ; . .venv/bin/activate && make docs-release
|
|
rm -rf ../bbdocs/docs/$(VERSION) # in case of re-run
|
|
cp -r master/docs/_build/html ../bbdocs/docs/$(VERSION)
|
|
cd ../bbdocs && git pull
|
|
. .venv/bin/activate && cd ../bbdocs && make && git add docs && git commit -m $(VERSION) && git push
|
|
@echo When tarballs have been generated by circleci:
|
|
@echo make finishrelease
|
|
|
|
finishrelease:
|
|
rm -rf dist
|
|
python3 ./common/download_release.py
|
|
rm -rf ./dist/v*
|
|
twine upload --sign dist/*
|
|
|
|
pyinstaller: virtualenv
|
|
$(PIP) install pyinstaller
|
|
$(VENV_NAME)/bin/pyinstaller -F pyinstaller/buildbot-worker.spec
|