SHELL := /bin/bash SHA := $(shell git rev-parse --short HEAD ) REPO := quay.io/quay/quay TAG := $(REPO):$(SHA) .PHONY: all unit test pkgs build run clean all: clean pkgs test build pkgs: requirements.txt requirements-dev.txt requirements-tests.txt pip install -r $< requirements.txt: requirements-nover.txt # Create a new virtualenv and activate it pyenv virtualenv 2.7.12 quay-deps pyenv activate quay-deps # Install unversioned dependencies with your changes pip install -r requirements-nover.txt # Run the unit test suite $(MAKE) unit # Freeze the versions of all of the dependencies pip freeze > requirements.txt # Delete the virtualenv pyenv uninstall quay-deps QUAY_CONFIG ?= ../quay-config conf/stack/license: $(QUAY_CONFIG)/local/license mkdir -p conf/stack ln -s $(QUAY_CONFIG)/local/license conf/stack/license unit: TEST=true PYTHONPATH="." py.test --timeout=3600 --verbose -x ./ test: unit test/registry_tests.py TEST=true PYTHONPATH="." py.test --timeout=3600 --verbose --show-count -x \ test/registry_tests.py WEBPACK := node_modules/.bin/webpack $(WEBPACK): package.json npm install webpack npm install BUNDLE := static/js/build/bundle.js $(BUNDLE): $(WEBPACK) tsconfig.json webpack.config.js typings.json $(WEBPACK) GRUNT := grunt/node_modules/.bin/grunt $(GRUNT): grunt/package.json cd grunt && npm install JS := quay-frontend.js quay-frontend.min.js template-cache.js CSS := quay-frontend.css DIST := $(addprefix static/dist/, $(JS) $(CSS) cachebusters.json) $(DIST): $(GRUNT) cd grunt && ../$(GRUNT) build: $(WEBPACK) $(GRUNT) docker-build: pkgs build ifneq (0,$(shell git status --porcelain | awk 'BEGIN {print $N}')) echo 'dirty build not supported - run `FORCE=true make clean` to remove' exit 1 endif # get named head (ex: branch, tag, etc..) NAME = $(shell git rev-parse --abbrev-ref HEAD) # checkout commit so .git/HEAD points to full sha (used in Dockerfile) git checkout $(SHA) docker build -t $(TAG) . git checkout $(NAME) echo $(TAG) run: license goreman start clean: find . -name "*.pyc" -exec rm -rf {} \; rm -rf node_modules 2> /dev/null rm -rf grunt/node_modules 2> /dev/null rm -rf dest 2> /dev/null rm -rf dist 2> /dev/null rm -rf .cache 2> /dev/null rm -rf static/js/build rm -rf static/build rm -rf static/dist rm -rf build rm -rf conf/stack rm -rf screenshots