Skip to content

Instantly share code, notes, and snippets.

@imyelo
Last active August 27, 2016 12:30
Show Gist options
  • Save imyelo/6f81e3dd5aa202388eee80231337b4da to your computer and use it in GitHub Desktop.
Save imyelo/6f81e3dd5aa202388eee80231337b4da to your computer and use it in GitHub Desktop.
Makefile of nodejs application with kubernates
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