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.
This commit is contained in:
parent
2a7d1fbe57
commit
9dab7d3a36
1 changed files with 94 additions and 0 deletions
94
Makefile
Normal file
94
Makefile
Normal file
|
@ -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
|
Reference in a new issue