%PDF- %PDF-
| Direktori : /www/varak.net/wiki.varak.net/extensions/Elastica/vendor/ruflin/elastica/ |
| Current File : /www/varak.net/wiki.varak.net/extensions/Elastica/vendor/ruflin/elastica/Makefile |
#/bin/bash
SOURCE = "./lib"
TARGET?=56
# By default docker environment is used to run commands. To run without the predefined environment, set RUN_ENV=" " either as parameter or as environment variable
ifndef RUN_ENV
RUN_ENV = docker run --workdir="/elastica" -v $(shell pwd):/elastica ruflin/elastica-dev-base
endif
.PHONY: clean
clean:
rm -r -f ./build
rm -r -f ./vendor
rm -r -f ./composer.lock
# Runs commands inside virtual environemnt. Example usage inside docker: make run RUN="make phpunit"
.PHONY: run
run:
docker run -v $(shell pwd):/elastica ruflin/elastica $(RUN)
### Quality checks / development tools ###
.PHONY: code-browser
code-browser:
${RUN_ENV} phpcb --log ./build/logs --source ${SOURCE} --output ./build/code-browser
# Copy paste detector
.PHONY: cpd
cpd:
${RUN_ENV} phpcpd --log-pmd ./build/logs/pmd-cpd.xml ${SOURCE}
.PHONY: messdetector
messdetector:
${RUN_ENV} phpmd ${SOURCE} text codesize,unusedcode,naming,design ./build/phpmd.xml
.PHONY: messdetector-ci
messdetector-ci:
${RUN_ENV} phpmd ${SOURCE} xml codesize,unusedcode,naming,design --reportfile ./build/logs/pmd.xml
.PHONY: dependencies
dependencies:
${RUN_ENV} pdepend --jdepend-xml=./build/logs/jdepend.xml \
--jdepend-chart=./build/pdepend/dependencies.svg \
--overview-pyramid=./build/pdepend/overview-pyramid.svg \
${SOURCE}
.PHONY: phpunit
phpunit:
EXIT_STATUS=0 ; \
phpunit -c test/ --coverage-clover build/coverage/unit-coverage.xml --group unit || EXIT_STATUS=$$? ; \
phpunit -c test/ --coverage-clover build/coverage/functional-coverage.xml --group functional || EXIT_STATUS=$$? ; \
phpunit -c test/ --coverage-clover build/coverage/shutdown-coverage.xml --group shutdown || EXIT_STATUS=$$? ; \
exit $$EXIT_STATUS
.PHONY: tests
tests:
# Rebuild image to copy changes files to the image
make elastica-image
make setup
mkdir -p build
docker-compose run elastica make phpunit
docker cp elastica_elastica_run_1:/elastica/build/coverage/ $(shell pwd)/build/coverage
# Makes it easy to run a single test file. Example to run IndexTest.php: make test TEST="IndexTest.php"
.PHONY: test
test:
make elastica-image
make setup
mkdir -p build
docker-compose run elastica phpunit -c test/ ${TEST}
.PHONY: doc
doc:
${RUN_ENV} phpdoc run -d lib/ -t build/docs
# Uses the preconfigured standards in .php_cs
.PHONY: lint
lint:
${RUN_ENV} php-cs-fixer fix
.PHONY: loc
loc:
${RUN_ENV} cloc --by-file --xml --exclude-dir=build -out=build/cloc.xml .
.PHONY: phploc
phploc:
${RUN_ENV} phploc --log-csv ./build/logs/phploc.csv ${SOURCE}
# VIRTUAL ENVIRONMENT
.PHONY: build
build:
docker-compose build
.PHONY: setup
setup: build
docker-compose scale elasticsearch=3
# TODO: Makes the snapshot directory writable for all instances. Nicer solution needed.
docker-compose run elasticsearch chmod -R 777 /tmp/backups/
.PHONY: start
start:
docker-compose up
.PHONY: stop
stop:
docker-compose stop
.PHONY: destroy
destroy: clean
docker-compose kill
docker-compose rm
# Stops and removes all containers and removes all images
.PHONY: destroy-environment
destroy-environment:
make remove-containers
-docker rmi $(shell docker images -q)
.PHONY: remove-containers
remove-containers:
-docker stop $(shell docker ps -a -q)
-docker rm -v $(shell docker ps -a -q)
# Starts a shell inside the elastica image
.PHONY: shell
shell:
docker run -v $(shell pwd):/elastica -ti ruflin/elastica /bin/bash
# Starts a shell inside the elastica image with the full environment running
.PHONY: env-shell
env-shell:
docker-compose run elastica /bin/bash
# Visualise repo
.PHONY: gource
gource:
gource --log-format git \
--seconds-per-day 0.1 \
--title 'Elastica (https://github.com/ruflin/Elastica)' \
--user-scale 1 \
--max-user-speed 50
## DOCKER IMAGES
.PHONY: elastica-image
elastica-image:
docker build -t ruflin/elastica-dev-base -f env/elastica/Docker${TARGET} env/elastica/
docker build -t ruflin/elastica .
# Builds all image locally. This can be used to use local images if changes are made locally to the Dockerfiles
.PHONY: build-images
build-images:
docker build -t ruflin/elastica-dev-base -f env/elastica/Docker${TARGET} env/elastica/
docker build -t ruflin/elasticsearch-elastica env/elasticsearch/
docker build -t ruflin/nginx-elastica env/nginx/
docker build -t ruflin/elastica-data env/data/
make elastica-image
# Removes all local images
.PHONY: clean-images
clean-images:
-docker rmi ruflin/elastica-dev-base
-docker rmi ruflin/elasticsearch-elastica
-docker rmi ruflin/nginx-elastica
-docker rmi ruflin/elastica
-docker rmi ruflin/elastica-data
# Pushs images as latest to the docker registry. This is normally not needed as they are directly fetched and built from Github
.PHONY: push-images
push-images: build-images
docker push ruflin/elastica-dev-base
docker push ruflin/elasticsearch-elastica
docker push ruflin/nginx-elastica
docker push ruflin/elastica
## OTHER
# google-setup:
# docker-machine create --driver google --google-project elastica-1024 --google-machine-type n1-standard-8 elastica
# eval "$(docker-machine env elastica)"