Skip to content

Commit aa480a2

Browse files
committed
refactor: Update to use the latest buildchain
1 parent 6426b34 commit aa480a2

File tree

3 files changed

+37
-37
lines changed

3 files changed

+37
-37
lines changed

Makefile

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,17 @@ PROJECT_PATH?=${VENDOR}/$(shell basename $(CURDIR))
77

88
# Start up the buildchain dev server
99
dev:
10+
${MAKE} -C buildchain/ dev
1011
# Start up the docs dev server
1112
docs:
1213
${MAKE} -C docs/ dev
1314
# Run code quality tools, tests, and build the buildchain & docs in preparation for a release
1415
release: --code-quality --code-tests --buildchain-clean-build --docs-clean-build
1516
# The internal targets used by the dev & release targets
1617
--buildchain-clean-build:
18+
${MAKE} -C buildchain/ clean
19+
${MAKE} -C buildchain/ image-build
20+
${MAKE} -C buildchain/ build
1721
--code-quality:
1822
${MAKE} -C ${PLUGINDEV_PROJECT_DIR} -- ecs check vendor/${PROJECT_PATH}/src --fix
1923
${MAKE} -C ${PLUGINDEV_PROJECT_DIR} -- phpstan analyze -c vendor/${PROJECT_PATH}/phpstan.neon

buildchain/Dockerfile

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
ARG TAG=16-alpine
2-
FROM nystudio107/node-dev-base:$TAG
1+
ARG TAG=20-alpine
2+
FROM node:$TAG
33

4-
USER node
4+
RUN npm install -g npm@^10.0.0
55

66
WORKDIR /app/buildchain/
77

buildchain/Makefile

Lines changed: 30 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,39 @@
1-
TAG?=16-alpine
2-
CONTAINER?=$(shell basename $(dir $(CURDIR)))-buildchain
3-
DOCKERRUN=docker container run \
4-
--name ${CONTAINER} \
5-
--rm \
6-
-t \
7-
--network plugindev_default \
8-
-p 3001:3001 \
9-
-v "${CURDIR}"/../:/app \
10-
${CONTAINER}:${TAG}
1+
MAJOR_VERSION?=3
2+
TAG?=20-alpine
3+
CONTAINER?=$(shell basename $(dir $(CURDIR)))-v${MAJOR_VERSION}-buildchain
4+
DEV_PORT?=300${MAJOR_VERSION}
5+
IMAGE_INFO=$(shell docker image inspect $(CONTAINER):$(TAG))
6+
IMAGE_NAME=${CONTAINER}:${TAG}
7+
DOCKER_NETWORK?=plugindev_default
8+
DOCKER_RUN=docker container run --rm -it --network "${DOCKER_NETWORK}" -v "${CURDIR}"/../:/app
119

12-
.PHONY: build dev docker install clean npm
10+
.PHONY: build clean dev image-build image-check npm ssh
1311

14-
# Build the production assets
15-
build: docker install
16-
${DOCKERRUN} \
17-
run build
18-
# Start up the dev server
19-
dev: docker install
20-
${DOCKERRUN} \
21-
run dev
22-
# Start the Docker container
23-
docker:
24-
docker build \
25-
. \
26-
-t ${CONTAINER}:${TAG} \
27-
--build-arg TAG=${TAG} \
28-
--no-cache
29-
# Run an npm install
30-
install: docker
31-
${DOCKERRUN} \
32-
install
33-
# Remove node_modules/* & package-lock.json
12+
# Perform a dist build via npm run build
13+
build: image-check
14+
${DOCKER_RUN} --name ${CONTAINER}-$@ ${IMAGE_NAME} run build
15+
# Remove node_modules/ & package-lock.json
3416
clean:
3517
rm -rf node_modules/
3618
rm -f package-lock.json
19+
# Run the development server via npm run dev
20+
dev: image-check
21+
${DOCKER_RUN} --name ${CONTAINER}-$@ -e DEV_PORT="${DEV_PORT}" -p ${DEV_PORT}:${DEV_PORT} ${IMAGE_NAME} run dev
22+
# Build the Docker image & run npm install
23+
image-build:
24+
docker build . -t ${IMAGE_NAME} --build-arg TAG=${TAG} --no-cache
25+
${DOCKER_RUN} --name ${CONTAINER}-$@ ${IMAGE_NAME} install
26+
# Ensure the image has been created
27+
image-check:
28+
ifeq ($(IMAGE_INFO), [])
29+
image-check: image-build
30+
endif
3731
# Run the passed in npm command
38-
npm: docker
39-
${DOCKERRUN} \
40-
$(filter-out $@,$(MAKECMDGOALS))
32+
npm: image-check
33+
${DOCKER_RUN} --name ${CONTAINER}-$@ ${IMAGE_NAME} $(filter-out $@,$(MAKECMDGOALS)) $(MAKEFLAGS)
34+
# Open a shell inside of the container
35+
ssh: image-check
36+
${DOCKER_RUN} --name ${CONTAINER}-$@ --entrypoint=/bin/sh ${IMAGE_NAME}
4137
%:
4238
@:
4339
# ref: https://stackoverflow.com/questions/6273608/how-to-pass-argument-to-makefile-from-command-line

0 commit comments

Comments
 (0)