mirror of
https://github.com/ansible/awx.git
synced 2024-11-02 09:51:09 +03:00
bf19b76d5a
* origin/task-system-rework: (36 commits) Need to grab just the first item for the scm test project update Revert a project unit test Make sure we are calling signal_start in unit tests Make sure we are calling signal_start in unit tests Bypass task runner system in normal job start tests... we'll test it another way so assume we want to just start the job right away Fixing up unit tests Missing line-end comma Prevent deadlocks on unit tests in a very specific scenario Ignore checking celery task list during some unit tests, triggered by UNIT_TEST_IGNORE_TASK_WAIT Missing semicolon Remove update on launch, we'll test this another way Make sure we ignore the wait update for tasks under dependency situations in the unit tests Fix up run task manager script to handle signals, fix up task cancel job, add restart handler for ubuntu Fix some bugs found from unit tests More unit test rework Some job tests can't run in their current state Make sure we check arguments passed to signal start before allowing it to proceed. No need to replace original build_args Unit test updates for task system... remove old monkeypatch procedure for getting job args in favor of using the job info from the database. Can't do this anymore anyway since the job is running in another process Changes to tasks unit tests ...
225 lines
6.6 KiB
Makefile
225 lines
6.6 KiB
Makefile
PYTHON=python
|
|
SITELIB=$(shell $(PYTHON) -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")
|
|
PACKER ?= packer
|
|
GRUNT ?= $(shell [ -t 0 ] && echo "grunt" || echo "grunt --no-color")
|
|
|
|
# Get the branch information from git
|
|
GIT_DATE := $(shell git log -n 1 --format="%ai")
|
|
DATE := $(shell date -u +%Y%m%d%H%M)
|
|
|
|
NAME=ansible-tower
|
|
VERSION=$(shell $(PYTHON) -c "from awx import __version__; print(__version__.split('-')[0])")
|
|
RELEASE=$(shell $(PYTHON) -c "from awx import __version__; print(__version__.split('-')[1])")
|
|
|
|
# Allow AMI license customization
|
|
LICENSE_TIER ?= 10.json
|
|
|
|
ifneq ($(OFFICIAL),yes)
|
|
BUILD=dev$(DATE)
|
|
SDIST_TAR_FILE=$(NAME)-$(VERSION)-$(BUILD).tar.gz
|
|
SETUP_TAR_NAME=$(NAME)-setup-$(VERSION)-$(BUILD)
|
|
RPM_PKG_RELEASE=$(BUILD)
|
|
DEB_BUILD_DIR=deb-build/$(NAME)-$(VERSION)-$(BUILD)
|
|
DEB_PKG_RELEASE=$(VERSION)-$(BUILD)
|
|
PACKER_BUILD_OPTS=-var-file=vars-aws-keys.json -var-file=vars-nightly.json
|
|
else
|
|
BUILD=
|
|
SDIST_TAR_FILE=$(NAME)-$(VERSION).tar.gz
|
|
SETUP_TAR_NAME=$(NAME)-setup-$(VERSION)
|
|
RPM_PKG_RELEASE=$(RELEASE)
|
|
DEB_BUILD_DIR=deb-build/$(NAME)-$(VERSION)
|
|
DEB_PKG_RELEASE=$(VERSION)-$(RELEASE)
|
|
PACKER_BUILD_OPTS=-var-file=vars-aws-keys.json -var-file=vars-release.json
|
|
endif
|
|
|
|
.PHONY: clean rebase push requirements requirements_pypi develop refresh \
|
|
adduser syncdb migrate dbchange dbshell runserver celeryd receiver test \
|
|
test_coverage coverage_html test_ui test_jenkins dev_build \
|
|
release_build release_clean sdist rpm
|
|
|
|
# Remove temporary build files, compiled Python files.
|
|
clean:
|
|
rm -rf dist/*
|
|
rm -rf build rpm-build *.egg-info
|
|
rm -rf debian deb-build
|
|
rm -f awx/ui/static/css/awx*.js awx/ui/static/css/awx*.css
|
|
rm -rf node_modules package.json
|
|
find . -type f -regex ".*\.py[co]$$" -delete
|
|
|
|
# Fetch from origin, rebase local commits on top of origin commits.
|
|
rebase:
|
|
git pull --rebase origin master
|
|
|
|
# Push changes to origin.
|
|
push:
|
|
git push origin master
|
|
|
|
# Install third-party requirements needed for development environment (using
|
|
# locally downloaded packages).
|
|
requirements:
|
|
@if [ "$(VIRTUAL_ENV)" ]; then \
|
|
(cd requirements && pip install --no-index -r dev_local.txt); \
|
|
$(PYTHON) fix_virtualenv_setuptools.py; \
|
|
else \
|
|
(cd requirements && sudo pip install --no-index -r dev_local.txt); \
|
|
fi
|
|
|
|
# Install third-party requirements needed for development environment
|
|
# (downloading from PyPI if necessary).
|
|
requirements_pypi:
|
|
@if [ "$(VIRTUAL_ENV)" ]; then \
|
|
pip install -r requirements/dev.txt; \
|
|
$(PYTHON) fix_virtualenv_setuptools.py; \
|
|
else \
|
|
sudo pip install -r requirements/dev.txt; \
|
|
fi
|
|
|
|
# "Install" ansible-tower package in development mode. Creates link to working
|
|
# copy in site-packages and installs awx-manage command.
|
|
develop:
|
|
@if [ "$(VIRTUAL_ENV)" ]; then \
|
|
pip uninstall -y awx; \
|
|
$(PYTHON) setup.py develop; \
|
|
else \
|
|
sudo pip uninstall -y awx; \
|
|
sudo $(PYTHON) setup.py develop; \
|
|
fi
|
|
|
|
# Refresh development environment after pulling new code.
|
|
refresh: clean requirements develop migrate
|
|
|
|
# Create Django superuser.
|
|
adduser:
|
|
$(PYTHON) manage.py createsuperuser
|
|
|
|
# Create initial database tables (excluding migrations).
|
|
syncdb:
|
|
$(PYTHON) manage.py syncdb --noinput
|
|
|
|
# Create database tables and apply any new migrations.
|
|
migrate: syncdb
|
|
$(PYTHON) manage.py migrate --noinput
|
|
|
|
# Run after making changes to the models to create a new migration.
|
|
dbchange:
|
|
$(PYTHON) manage.py schemamigration main v14_changes --auto
|
|
|
|
# access database shell, asks for password
|
|
dbshell:
|
|
sudo -u postgres psql -d awx-dev
|
|
|
|
# Run the built-in development webserver (by default on http://localhost:8013).
|
|
runserver:
|
|
$(PYTHON) manage.py runserver
|
|
|
|
# Run to start the background celery worker for development.
|
|
celeryd:
|
|
$(PYTHON) manage.py celeryd -l DEBUG -B --autoscale=20,2 -Ofair
|
|
|
|
# Run to start the zeromq callback receiver
|
|
receiver:
|
|
$(PYTHON) manage.py run_callback_receiver
|
|
|
|
taskmanager:
|
|
$(PYTHON) manage.py run_task_system
|
|
|
|
# Run all API unit tests.
|
|
test:
|
|
$(PYTHON) manage.py test -v2 main
|
|
|
|
# Run all API unit tests with coverage enabled.
|
|
test_coverage:
|
|
coverage run manage.py test -v2 main
|
|
|
|
# Output test coverage as HTML (into htmlcov directory).
|
|
coverage_html:
|
|
coverage html
|
|
|
|
# Run UI unit tests using Selenium.
|
|
test_ui:
|
|
$(PYTHON) manage.py test -v2 ui
|
|
|
|
# Run API unit tests across multiple Python/Django versions with Tox.
|
|
test_tox:
|
|
tox -v
|
|
|
|
# Run unit tests to produce output for Jenkins.
|
|
test_jenkins:
|
|
$(PYTHON) manage.py jenkins -v2
|
|
|
|
package.json:
|
|
sed -e 's/%NAME%/$(NAME)/;s/%VERSION%/$(VERSION)/' packaging/grunt/package.template > $@
|
|
|
|
# Update local npm install
|
|
node_modules: package.json
|
|
npm install
|
|
|
|
# Build minified JS/CSS.
|
|
minjs: node_modules
|
|
$(GRUNT)
|
|
|
|
# Check .js files for errors and lint
|
|
lintjs: node_modules
|
|
$(GRUNT) jshint
|
|
|
|
# Build a pip-installable package into dist/ with a timestamped version number.
|
|
dev_build:
|
|
$(PYTHON) setup.py dev_build
|
|
|
|
# Build a pip-installable package into dist/ with the release version number.
|
|
release_build:
|
|
$(PYTHON) setup.py release_build
|
|
|
|
# Build AWX setup tarball.
|
|
setup_tarball:
|
|
@cp -a setup $(SETUP_TAR_NAME)
|
|
@tar czf $(SETUP_TAR_NAME).tar.gz $(SETUP_TAR_NAME)/
|
|
@rm -rf $(SETUP_TAR_NAME)
|
|
|
|
release_clean:
|
|
-(rm *.tar)
|
|
-(rm -rf ($RELEASE))
|
|
|
|
sdist: clean minjs
|
|
if [ "$(OFFICIAL)" = "yes" ] ; then \
|
|
$(PYTHON) setup.py release_build; \
|
|
else \
|
|
BUILD=$(BUILD) $(PYTHON) setup.py sdist_awx; \
|
|
fi
|
|
|
|
rpmtar: sdist
|
|
if [ "$(OFFICIAL)" != "yes" ] ; then \
|
|
(cd dist/ && tar zxf $(SDIST_TAR_FILE)) ; \
|
|
(cd dist/ && mv $(NAME)-$(VERSION)-$(BUILD) $(NAME)-$(VERSION)) ; \
|
|
(cd dist/ && tar czf $(NAME)-$(VERSION).tar.gz $(NAME)-$(VERSION)) ; \
|
|
fi
|
|
|
|
rpm: rpmtar
|
|
@mkdir -p rpm-build
|
|
@cp dist/$(NAME)-$(VERSION).tar.gz rpm-build/
|
|
@rpmbuild --define "_topdir %(pwd)/rpm-build" \
|
|
--define "_builddir %{_topdir}" \
|
|
--define "_rpmdir %{_topdir}" \
|
|
--define "_srcrpmdir %{_topdir}" \
|
|
--define "_specdir %{_topdir}" \
|
|
--define '_rpmfilename %%{NAME}-%%{VERSION}-%%{RELEASE}.%%{ARCH}.rpm' \
|
|
--define "_sourcedir %{_topdir}" \
|
|
--define "_pkgrelease $(RPM_PKG_RELEASE)" \
|
|
-ba packaging/rpm/$(NAME).spec
|
|
|
|
deb: sdist
|
|
@mkdir -p deb-build
|
|
@cp dist/$(SDIST_TAR_FILE) deb-build/
|
|
(cd deb-build && tar zxf $(SDIST_TAR_FILE))
|
|
(cd $(DEB_BUILD_DIR) && dh_make --indep --yes -f ../$(SDIST_TAR_FILE) -p $(NAME)-$(VERSION))
|
|
@rm -rf $(DEB_BUILD_DIR)/debian
|
|
@cp -a packaging/debian $(DEB_BUILD_DIR)/
|
|
@echo "$(NAME)-$(DEB_PKG_RELEASE).deb admin optional" > $(DEB_BUILD_DIR)/debian/realfiles
|
|
(cd $(DEB_BUILD_DIR) && PKG_RELEASE=$(DEB_PKG_RELEASE) dpkg-buildpackage -nc -us -uc -b --changes-option="-fdebian/realfiles")
|
|
|
|
ami:
|
|
(cd packaging/ami && $(PACKER) build $(PACKER_BUILD_OPTS) -var "aws_license=$(LICENSE_TIER)" $(NAME).json)
|
|
|
|
install:
|
|
$(PYTHON) setup.py install egg_info -b ""
|