https://github.com/ccnmtl/makefiles
common library of standardized makefiles
https://github.com/ccnmtl/makefiles
Last synced: 3 months ago
JSON representation
common library of standardized makefiles
- Host: GitHub
- URL: https://github.com/ccnmtl/makefiles
- Owner: ccnmtl
- Created: 2016-04-28T09:13:02.000Z (about 10 years ago)
- Default Branch: master
- Last Pushed: 2025-11-21T16:36:47.000Z (7 months ago)
- Last Synced: 2025-11-21T18:22:19.490Z (7 months ago)
- Language: Makefile
- Size: 129 KB
- Stars: 1
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.markdown
Awesome Lists containing this project
README
CTL standard makefiles
Collects them all in one place.
To use, copy the relevant files into your project and add a master
`Makefile` that looks something like:
APP=myapp
JS_FILES=media/js/src/ media/js/tests
MAX_COMPLEXITY=7
all: jenkins
include *.mk
The key aspects being:
* define whatever required and optional global variables are
expected.
* explicitly set the `all` target. Otherwise it will default to the
first target it finds, which will depend on the order of the file
includes which is not ideal.
* include all the `.mk` files
* if you want to override any targets from those makefiles, define
those new targets after the include line
* if you want to add new targets that are project specific, consider
making a new `.mk` file for them
* makefiles are explicitly versioned so we can keep track of them and
automatically update them across projects
* if you've included the `make.mk` file, you can do `make
update_makefiles` and it will update every `.mk` file in your app to
the version that is current in this repo.
## Guidelines for writing make targets
* parameterize everything you can, make as few assumptions about the
code as you can get away with.
* use the `?=` operator to define variables in the `.mk` that can be
overridden in the top-level `Makefile` or on the commandline
* if you change something, bump the `VERSION` in the comment on the
first line as appropriate (semver rules)
* update this README with documentation of variables required below
* add a changelog comment to the file you've changed, especially if
something potentially is not backwards compatible
## Expected variables
### django.mk
Required:
* `APP` to specify you django app
Optional:
* `VE`, virtualenv directory, defaults to `./ve`
* `MANAGE`, manage.py command, defaults to `./manage.py`
* `FLAKE8`, flake8 command, default `$(VE)/bin/flake8`
* `REQUIREMENTS`, location of requirements.txt file, `requirements.txt`
* `SYS_PYTHON`, system python, default `python`
* `PIP`, pip command, default `$(VE)/bin/pip`
* `PY_SENTINAL`, python sentinal location, default `$(VE)/sentinal`
* `WHEEL_VERSION`, version of python wheel library to install, default `0.24.0`
* `MAX_COMPLEXITY`, flake8 max complexity, default 10
* `INTERFACE`, runserver interface, default `localhost`
* `RUNSERVER_PORT`, runserver port, default `8000`
* `PY_DIRS`, directories with python code (to flake8), default `$(APP)`
### docker.mk
Required:
* `APP` to specify you django app. same as with `django.mk`
Optional:
* `WHEELHOUSE`, directory to stash `.whl` files, default `wheelhouse`
* `ORG`, docker hub organization, default `ccnmtl`
* `BUILDER_IMAGE`, django builder image to use, default `ccnmtl/django.build`
### hugo.mk
Optional:
* `HUGO`, path to hugo binary, default `/usr/local/bin/hugo`
* `S3CMD`, s3cmd, default `s3cmd`
* `PUBLIC`, location of hugo's publish directory, default `public`
* `DRAFT_FLAGS`, commandline flags for draft building mode, default `--buildDrafts --verboseLog=true -v`
* `PROD_FLAGS`, hugo flags to use for production publish step, default `-s .`
* `S3_FLAGS`, flags to use for s3cmd publish step, default `--acl-public --delete-removed --no-progress --no-mime-magic --guess-mime-type`
* `INTERMEDIATE_STEPS`, commands to run between hugo publish and s3
publish steps (eg, json/lunr.js tweaks), default `echo nothing`
### js.mk
Optional:
* `JS_FILES`, where to look for eslint, defaults to `media/js`
* `NODE_MODULES`, node_modules dir, default `./node_modules`
* `JS_SENTINAL`, location of the js sentinal file, default `$(NODE_MODULES)/sentinal`
* `ESLINT`, eslint command, default `$(NODE_MODULES)/eslint/bin/eslint`
### make.mk
Optional:
* `GITHUB_BASE`, where to look for new versions, default https://raw.githubusercontent.com/ccnmtl/makefiles/master/
* `WGET`, wget binary, default `wget`
* `WGET_FLAGS`, flags for wget command, default `-O`