This repository has been archived on 2023-10-28. You can view files and clone it, but cannot push or open issues or pull requests.
pwt-0x01-ng/Makefile
surtur e99409f84e
All checks were successful
continuous-integration/drone/push Build is passing
chore: adding webpack
2021-02-23 15:29:07 +01:00

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)