139 lines
4.0 KiB
Makefile
139 lines
4.0 KiB
Makefile
dc = docker-compose
|
|
dccmd = COMPOSE_DOCKER_CLI_BUILD=1 DOCKER_BUILDKIT=1 docker-compose
|
|
dtag = netcoreultimateapp-prod
|
|
dtagdev = netcoreultimapp-dev
|
|
dfile = Dockerfile
|
|
dfiledev = $(dfile).dev
|
|
lport = 8000
|
|
lportdev = 8001
|
|
CC = dotnet
|
|
dcmd = DOCKER_BUILDKIT=1 docker
|
|
pruneargs = system prune -af
|
|
dcmdrun = $(dcmd) run --rm
|
|
wdir = /src
|
|
kanikoimg = gcr.io/kaniko-project/executor
|
|
dargskaniko = -w=$(wdir) -v $$(pwd):$(wdir):z $(kanikoimg)
|
|
kanikoargs = -c=$(wdir) --use-new-run --snapshotMode=redo --no-push
|
|
krelease = $(dcmdrun) $(dargskaniko) -f=$(dfile) $(kanikoargs)
|
|
kdebug = $(dcmdrun) $(dargskaniko) -f=$(dfiledev) $(kanikoargs)
|
|
postkanikochown = sudo chown -R $$USER:$$USER ./
|
|
pgdbcapdrop = --cap-drop NET_ADMIN --cap-drop SYS_ADMIN
|
|
pgdbenv = -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=679968312e029a806c1905c40ec331aa199a1eb86bd0b9eb04057933e449bdc9ef8ef292a39b68cafa5689c901a17266 -e POSTGRES_INITDB_ARGS="--data-checksums"
|
|
pgdbname = pgdb
|
|
pgdbports = -p 127.0.0.1:5433:5432
|
|
pgdbvol = -v pgdbdata:/var/lib/postgresql/data
|
|
pgdbargs = run -d $(pgdbcapdrop) $(pgdbenv) --name $(pgdbname) $(pgdbports) $(pgdbvol) --restart unless-stopped
|
|
pgdbimg = postgres:13.1-alpine
|
|
zenv = DB_CONNECTION_STRING=$$(cat appsettings.Development.json | jq .db.Postgres | sed -e 's/5432/5433/' -e 's/=db/=localhost/' -e 's/"//g')
|
|
WEBPACK_SOURCES := $(shell find wwwroot/js wwwroot/css wwwroot/less -type f)
|
|
WEBPACK_CONFIGS := webpack.config.js
|
|
WEBPACK_DEST := public/js/index.js public/css/index.css
|
|
WEBPACK_DEST_ENTRIES := public/js public/css
|
|
|
|
.PHONY: dev dockerbuild dockerdevbuild dockerrun dockerdevrun dockertest dockerdev kaniko clean prune pgdba pgdbz test dcdevb dcprodbuild dcdevup dcprodup webpack frontend node-check npm-update
|
|
|
|
dev: restore build run
|
|
|
|
restore:
|
|
$(CC) restore
|
|
|
|
build:
|
|
$(CC) build .
|
|
|
|
run:
|
|
$(zenv) $(CC) watch run .
|
|
|
|
releasebuild: restore clean
|
|
$(CC) publish -c Release
|
|
|
|
dockerbuild:
|
|
$(dcmd) build \
|
|
--build-arg VCS_REF=`git rev-parse --short HEAD` \
|
|
--build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` \
|
|
-t $(dtag) -f $(dfile) --no-cache .
|
|
|
|
dockerdevbuild:
|
|
$(dcmd) build \
|
|
--build-arg VCS_REF=`git rev-parse --short HEAD` \
|
|
--build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` \
|
|
-t $(dtagdev) -f $(dfiledev) --no-cache .
|
|
|
|
dockerrun:
|
|
@echo ======================
|
|
@echo local port: $(lport)
|
|
@echo ======================
|
|
$(dcmdrun) -p $(lport):80 $(dtag)
|
|
|
|
dockerdevrun:
|
|
@echo ======================
|
|
@echo local dev port: $(lportdev)
|
|
@echo ======================
|
|
$(dcmdrun) -p $(lportdev):5000 $(dtagdev)
|
|
|
|
dcdevb:
|
|
$(dccmd) -f $(dc).yml build --no-cache --pull --progress tty
|
|
|
|
dcprodbuild:
|
|
$(dccmd) -f $(dc).prod.yml build --no-cache --pull --progress tty
|
|
|
|
dcdevup:
|
|
@echo ======================
|
|
@echo local dev port: $(lportdev)
|
|
@echo ======================
|
|
$(dccmd) -f $(dc).yml up --remove-orphans
|
|
|
|
dcprodup:
|
|
$(dccmd) -f $(dc).prod.yml up --remove-orphans --scale netcoreultimateapp-prod=2
|
|
|
|
node_modules: package-lock.json
|
|
npm install --no-save
|
|
@touch node_modules
|
|
|
|
npm-update: node-check | node_modules
|
|
npx updates -cu
|
|
rm -rf node_modules package-lock.json
|
|
npm install --package-lock
|
|
@touch node_modules
|
|
|
|
node-check:
|
|
$(eval NODE_VERSION := $(shell printf "%03d%03d%03d" $(shell node -v | cut -c2- | tr '.' ' ');))
|
|
$(eval NPM_MISSING := $(shell hash npm > /dev/null 2>&1 || echo 1))
|
|
@if [ "$(NODE_VERSION)" -lt "$(MIN_NODE_VERSION)" -o "$(NPM_MISSING)" = "1" ]; then \
|
|
echo "pwt requires Node.js 10 or greater and npm to build. You can get it at https://nodejs.org/en/download/"; \
|
|
exit 1; \
|
|
fi
|
|
|
|
frontend: node-check $(WEBPACK_DEST)
|
|
|
|
webpack: $(WEBPACK_DEST)
|
|
|
|
$(WEBPACK_DEST): $(WEBPACK_SOURCES) $(WEBPACK_CONFIGS) package-lock.json | node_modules
|
|
rm -rf $(WEBPACK_DEST_ENTRIES)
|
|
@echo " - webpack build webpack files"
|
|
npx webpack
|
|
@touch $(WEBPACK_DEST)
|
|
|
|
kaniko:
|
|
$(krelease)
|
|
$(postkanikochown)
|
|
$(kdebug)
|
|
$(postkanikochown)
|
|
|
|
dockerdev: dockerdevbuild dockerdevrun
|
|
|
|
dockertest: dockerdevbuild dockerbuild
|
|
|
|
test: releasebuild build dockertest kaniko
|
|
|
|
clean:
|
|
$(CC) clean
|
|
|
|
prune:
|
|
$(dcmd) $(pruneargs)
|
|
|
|
pgdba:
|
|
$(dcmd) $(pgdbargs) $(pgdbimg)
|
|
|
|
pgdbz:
|
|
$(dcmd) stop $(pgdbname)
|