blob: a2178469e537499173c8bafc0c8d1ce21d932b46 [file] [log] [blame]
Zack Williams712caf62020-04-28 13:37:41 -07001# SPDX-FileCopyrightText: © 2020 Open Networking Foundation <support@opennetworking.org>
2# SPDX-License-Identifier: Apache-2.0
3
4SHELL = bash -e -o pipefail
5
6# Common set of args, set to --debug for more output
7COMMON_ARGS ?= --debug
8
9# tooling binaries
Zack Williams483de862021-02-12 15:07:33 -070010VIRTUALENV ?= python3 -m venv
Zack Williams712caf62020-04-28 13:37:41 -070011PYTHON ?= python3
12# change to be 'python3 -m cProfile -s cumtime' to profile a script
13
14.DEFAULT_GOAL := help
15.PHONY: test lint yamllint license help build siterender buildcollector sync
16
17# Create the virtualenv with all the tools installed
Zack Williams483de862021-02-12 15:07:33 -070018VENV_NAME = venv-sjsg
Zack Williams712caf62020-04-28 13:37:41 -070019
20$(VENV_NAME): requirements.txt
21 $(VIRTUALENV) $@ ;\
22 source ./$@/bin/activate ; set -u ;\
23 $(PYTHON) -m pip install -r requirements.txt yamllint
24 echo "To enter virtualenv, run 'source $@/bin/activate'"
25
26# build targets
Zack Williamscb2746d2020-12-16 10:27:24 -070027products:
28 mkdir products
29
30site:
31 mkdir site
32
Zack Williams7c32b912021-09-08 16:59:29 -070033jobs:
34 mkdir jobs
35
Zack Williams712caf62020-04-28 13:37:41 -070036build: buildcollector siterender ## Collect build info and create website
37
Zack Williams7c32b912021-09-08 16:59:29 -070038buildcollector: $(VENV_NAME) jobs products ## Collect build information from Jenkins jobs
Zack Williams712caf62020-04-28 13:37:41 -070039 source ./$</bin/activate ; set -u ;\
40 $(PYTHON) buildcollector.py scrape.yaml --credentials credentials.yaml $(COMMON_ARGS)
41
Zack Williamscb2746d2020-12-16 10:27:24 -070042siterender: $(VENV_NAME) site ## Create static website from build information
Zack Williams712caf62020-04-28 13:37:41 -070043 source ./$</bin/activate ; set -u ;\
44 $(PYTHON) siterender.py $(COMMON_ARGS)
45 cp -r static/* site/
46
47serve:
48 cd site && $(PYTHON) -m http.server
49
50sync:
51 rsync --delete-after -avP site/ ubuntu@static.opennetworking.org:/srv/sites/certification.opennetworking.org/
52
53# testing targets
54test: yamllint tox ## run all tests
55
56# YAML files, excluding venv and cookiecutter directories
Zack Williams483de862021-02-12 15:07:33 -070057YAML_FILES ?= $(shell find . -type d \( -path "./venv-sjsg" \) -prune -o -type f \( -name '*.yaml' -o -name '*.yml' \) -print )
Zack Williams712caf62020-04-28 13:37:41 -070058
59yamllint: $(VENV_NAME) ## lint YAML format using yamllint
60 source ./$</bin/activate ; set -u ;\
61 yamllint --version ;\
62 yamllint \
63 -d "{extends: default, rules: {line-length: {max: 139}}}" \
64 -s $(YAML_FILES)
65
Zack Williams483de862021-02-12 15:07:33 -070066tox: $(VENV_NAME) ## test code with tox
67 source ./$</bin/activate ; set -u ;\
68 tox
Zack Williams712caf62020-04-28 13:37:41 -070069
70license: ## Check code for licensing with REUSE
71 reuse --root . lint
72
73clean: ## Delete all temporary files
Zack Williams7c32b912021-09-08 16:59:29 -070074 rm -rf products site jobs *.xml *.egg-info
Zack Williams712caf62020-04-28 13:37:41 -070075
76clean-all: clean ## Delete virtualenv and all cached job information
Zack Williamscb2746d2020-12-16 10:27:24 -070077 rm -rf $(VENV_NAME) jobs .tox
Zack Williams712caf62020-04-28 13:37:41 -070078
79help: ## Print help for each target
Zack Williamscb2746d2020-12-16 10:27:24 -070080 @echo sjsg test targets
Zack Williams712caf62020-04-28 13:37:41 -070081 @echo
82 @grep '^[[:alnum:]_-]*:.* ##' $(MAKEFILE_LIST) \
83 | sort | awk 'BEGIN {FS=":.* ## "}; {printf "%-25s %s\n", $$1, $$2};'