Last active
August 27, 2016 12:30
-
-
Save imyelo/6f81e3dd5aa202388eee80231337b4da to your computer and use it in GitHub Desktop.
Makefile of nodejs application with kubernates
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
CONFIG_DIR = "./config" | |
HOSTNAME = "0.0.0.0" | |
DEBUG = project-name:* | |
NODE_ENV = production | |
TARGET_ENV = intranet | |
DOCKER_IMAGE = your-registry-host.com/your-name/project-name | |
KUBE_SECRET_NAME = project-name-secret | |
FOREVER_UID = "project-name" | |
FOREVER_OUTFILE = "./logs/out.log" | |
FOREVER_ERRFILE = "./logs/err.log" | |
FOREVER_LOGFILE = "./logs/log.log" | |
FOREVER_START = forever \ | |
--uid $FOREVER_UID} \ | |
-l ${FOREVER_LOGFILE} \ | |
-o ${FOREVER_OUTFILE} \ | |
-e ${FOREVER_ERRFILE} \ | |
-p ./ -a ./src | |
TAG = $(shell node -e "console.log(require('./package.json').version)") | |
# init | |
init: | |
@mkdir -p logs | |
@touch ./logs/access.log ${FOREVER_OUTFILE} ${FOREVER_ERRFILE} ${FOREVER_LOGFILE} | |
# vagrant | |
vagrant: | |
@vagrant up && vagrant ssh | |
# dependency | |
install: | |
@cnpm install | |
@cd ./src/static/app && cnpm install | |
uninstall: | |
-rm -rf ./node_modules ./src/static/app/node_modules | |
reinstall: uninstall | |
@cnpm install --cache-min 999999 | |
@cd ./src/static/app && cnpm install --cache-min 999999 | |
shrinkwrap: | |
@cnpm shrinkwrap --dev | |
@cd ./src/static/app && cnpm shrinkwrap | |
# server | |
node: | |
@DEBUG=${DEBUG} HOSTNAME=${HOSTNAME} NODE_ENV=development NODE_CONFIG_DIR=${CONFIG_DIR} node ./src | |
development: stop | |
@DEBUG=${DEBUG} HOSTNAME=${HOSTNAME} NODE_ENV=development NODE_CONFIG_DIR=${CONFIG_DIR} node-dev ./src | |
preview: stop build | |
@DEBUG=${DEBUG} HOSTNAME=${HOSTNAME} NODE_ENV=preview NODE_CONFIG_DIR=${CONFIG_DIR} node-dev ./src | |
server: init stop | |
@DEBUG=${DEBUG} HOSTNAME=${HOSTNAME} NODE_ENV=${NODE_ENV} NODE_CONFIG_DIR=${CONFIG_DIR} ${FOREVER_START} | |
stop: | |
-forever stop ${FOREVER_UID} | |
# build | |
build: | |
@gulp build | |
# doc | |
apidoc: | |
@gulp apidoc | |
@jsdoc ./src/server/entity -d ./build/jsdoc/ | |
# lint | |
lint: | |
@gulp lint | |
# clean | |
clean: | |
@rm -rf ./build | |
# upload-static | |
upload: | |
@node ./bin/upload.js | |
# coding | |
watch: | |
@gulp watch | |
weinre: | |
@weinre --httpPort 8060 --boundHost -all- | |
# kube | |
kube-config: | |
@TARGET_ENV=${TARGET_ENV} gulp kube | |
kube-image: | |
@docker build -t ${DOCKER_IMAGE}:${TAG} . | |
kube-push: | |
@docker push ${DOCKER_IMAGE}:${TAG} | |
kube-secret: | |
@kubectl delete secret ${KUBE_SECRET_NAME} | |
@kubectl create secret generic ${KUBE_SECRET_NAME} --from-file=./kubernetes/secret/${TARGET_ENV} | |
kube-create: kube-config kube-secret | |
@kubectl create -f ./kubernetes/frontend.yaml | |
@kubectl create -f ./kubernetes/redis.yaml | |
kube-update: kube-push | |
@kubectl rolling-update project-name --image=${DOCKER_IMAGE}:${TAG} | |
kube-delete: kube-config | |
@kubectl delete -f ./kubernetes/frontend.yaml | |
# test | |
test: | |
@NODE_ENV=test mocha | |
# alias | |
dev: development | |
prod: production | |
.PHONY: init install reinstall shrinkwrap vagrant node development demo204 preview server clean build test stop dev upload |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment