diff --git a/Makefile b/Makefile index c266302..c571408 100755 --- a/Makefile +++ b/Makefile @@ -1,9 +1,9 @@ SHELL := /bin/bash .PHONY: help requirements clean build test pkg -include *.mk +help: main.help -help: +main.help: @echo '' @echo 'Makefile for the edX Configuration' @echo '' @@ -14,30 +14,9 @@ help: @echo ' make pkg package everything' @echo ' make clean remove build by-products' @echo '' - @echo ' Docker:' - @echo ' $$image: any dockerhub image' - @echo ' $$container: any container defined in docker/build/$$container/Dockerfile' - @echo '' - @echo ' make $(docker_pull)$$image pull $$image from dockerhub' - @echo '' - @echo ' make $(docker_build)$$container build $$container' - @echo ' make $(docker_test)$$container test that $$container will build' - @echo ' make $(docker_pkg)$$container package $$container for a push to dockerhub' - @echo ' make $(docker_push)$$container push $$container to dockerhub ' - @echo '' - @echo ' make docker.build build all defined docker containers (based on dockerhub base images)' - @echo ' make docker.test test all defined docker containers' - @echo ' make docker.pkg package all defined docker containers (using local base images)' - @echo ' make docker.push push all defined docker containers' - @echo '' - @echo ' Tests:' - @echo ' test.syntax Run all syntax tests' - @echo ' test.syntax.json Run syntax tests on .json files' - @echo ' test.syntax.yml Run syntax tests on .yml files' - @echo ' test.syntax.jinja Run syntax tests on .j2 files' - @echo ' test.edx_east_roles Run validation on edx-east roles' - @echo '' requirements: pip install -qr pre-requirements.txt --exists-action w pip install -qr requirements.txt --exists-action w + +include *.mk diff --git a/docker.mk b/docker.mk index 1d56c7d..0207459 100644 --- a/docker.mk +++ b/docker.mk @@ -14,6 +14,26 @@ docker_test=docker.test. docker_pkg=docker.pkg. docker_push=docker.push. +help: docker.help + +docker.help: + @echo ' Docker:' + @echo ' $$image: any dockerhub image' + @echo ' $$container: any container defined in docker/build/$$container/Dockerfile' + @echo '' + @echo ' $(docker_pull)$$image pull $$image from dockerhub' + @echo '' + @echo ' $(docker_build)$$container build $$container' + @echo ' $(docker_test)$$container test that $$container will build' + @echo ' $(docker_pkg)$$container package $$container for a push to dockerhub' + @echo ' $(docker_push)$$container push $$container to dockerhub ' + @echo '' + @echo ' docker.build build all defined docker containers (based on dockerhub base images)' + @echo ' docker.test test all defined docker containers' + @echo ' docker.pkg package all defined docker containers (using local base images)' + @echo ' docker.push push all defined docker containers' + @echo '' + # N.B. / is used as a separator so that % will match the / # in something like 'edxops/trusty-common:latest' # Also, make can't handle ':' in filenames, so we instead '@' @@ -70,12 +90,12 @@ $(docker_push)%: $(docker_pkg)% .build/%/Dockerfile.test: docker/build/%/Dockerfile Makefile @mkdir -p .build/$* -# perl p (print the line) n (loop over every line) e (exec the regex), like sed but cross platform + @# perl p (print the line) n (loop over every line) e (exec the regex), like sed but cross platform @perl -pne "s#FROM edxops/([^:]+)(:\S*)?#FROM \1:test#" $< > $@ .build/%/Dockerfile.pkg: docker/build/%/Dockerfile Makefile @mkdir -p .build/$* -# perl p (print the line) n (loop over every line) e (exec the regex), like sed but cross platform + @# perl p (print the line) n (loop over every line) e (exec the regex), like sed but cross platform @perl -pne "s#FROM edxops/([^:]+)(:\S*)?#FROM \1:test#" $< > $@ -include $(foreach image,$(images),.build/$(image)/Dockerfile.d) diff --git a/test.mk b/test.mk index 7ed689c..7aa1515 100644 --- a/test.mk +++ b/test.mk @@ -1,8 +1,18 @@ - yml_files:=$(shell find . -name "*.yml") json_files:=$(shell find . -name "*.json") # $(images) is calculated in the docker.mk file +help: test.help + +test.help: + @echo ' Tests:' + @echo ' test.syntax Run all syntax tests' + @echo ' test.syntax.json Run syntax tests on .json files' + @echo ' test.syntax.yml Run syntax tests on .yml files' + @echo ' test.syntax.jinja Run syntax tests on .j2 files' + @echo ' test.edx_east_roles Run validation on edx-east roles' + @echo '' + test: test.syntax test.edx_east_roles test.syntax: test.syntax.yml test.syntax.json test.syntax.dockerfiles @@ -19,7 +29,7 @@ test.syntax.json/%: test.syntax.dockerfiles: python util/check_dockerfile_coverage.py "$(images)" - + test.edx_east_roles: tests/test_edx_east_roles.sh