1
0
mirror of https://github.com/ansible/awx.git synced 2024-11-02 09:51:09 +03:00
awx/Makefile
Matthew Jones bf19b76d5a Merge remote-tracking branch 'origin/task-system-rework'
* 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
  ...
2014-03-19 13:14:21 -04:00

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 ""