From 9dab7d3a36d7e446874bb8f1ef86ab378d2a9e6e Mon Sep 17 00:00:00 2001 From: Erica Date: Wed, 15 Feb 2017 08:39:19 -0800 Subject: [PATCH] feat(Makefile): add makefile to repo (#2264) feat(Makefile): add makefile to repo *Note* This is still very much a WIP. Please correct any issues you come across. --- Makefile | 94 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 Makefile diff --git a/Makefile b/Makefile new file mode 100644 index 000000000..8bbaa42f0 --- /dev/null +++ b/Makefile @@ -0,0 +1,94 @@ +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