-
Notifications
You must be signed in to change notification settings - Fork 14
Expand file tree
/
Copy pathMakefile
More file actions
88 lines (79 loc) · 3.03 KB
/
Makefile
File metadata and controls
88 lines (79 loc) · 3.03 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
NAME = skilldlabs/php
TAGS ?= 81 81-fpm 81-unit 82 82-fpm 82-unit 83 83-fpm 83-unit 84 84-fpm 84-unit 85 85-fpm 85-unit
COMPOSER_HASH ?= c8b085408188070d5f52bcfe4ecfbee5f727afa458b2573b8eaaf77b3419b0bf2768dc67c86944da1544f06fa544fd47
DRUSH_VERSION ?= 8.5.0
DOCKER_BUILDKIT ?= 1
#PLATFORM ?= linux/amd64,linux/arm64
PLATFORM ?= linux/amd64
.PHONY: all build push prepare test test-local
all: build push
build:
@echo "Building images for tags: $(TAGS)"
set -e; for i in $(TAGS); do printf "\nBuilding $(NAME):$$i \n\n"; cd php$$i; \
docker buildx build -t $(NAME):$$i \
--platform $(PLATFORM) \
--no-cache --progress=plain --push \
--build-arg COMPOSER_HASH=$(COMPOSER_HASH) \
--build-arg DRUSH_VERSION=$(DRUSH_VERSION) \
--build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` \
--build-arg VCS_REF=`git rev-parse --short HEAD` .; \
cd ..; done
push:
@echo "Pushing images for tags: $(TAGS)"
set -e; for i in $(TAGS); do printf "\nPushing $(NAME):$$i \n\n"; docker push $(NAME):$$i; done
unit:
make -C unit-php-builder/dev build
prepare:
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
docker buildx create --use
tag: VER ?= 0
tag:
@$(if $(filter $(VER),0),echo "define version VER for TAGS='$(TAGS)'"; exit 1)
@echo "Tagging images $(VER) for tags: $(TAGS)"
set -e; for i in $(TAGS); do \
[ $${#i} -eq 2 ] && tag=$(VER) || tag="$$i-$(VER)"; \
printf "\nTagging $(NAME):$$i as $$tag\n"; \
docker pull $(NAME):$$i; \
docker tag $(NAME):$$i $(NAME):$$tag; \
docker push $(NAME):$$tag; \
docker rmi $(NAME):$$tag $(NAME):$$i; \
done
# Test images locally (build for amd64 only, test, then optionally push)
test-local:
@echo "Building and testing images for tags: $(TAGS) (amd64 only)"
set -e; for i in $(TAGS); do \
printf "\n=== Testing $(NAME):$$i ===\n\n"; \
phpv=$$(echo $$i | sed 's/-.*//'); \
phpver=$$(echo $$phpv | sed 's/^\(.\)\(.\)$$/\1.\2/'); \
variant=$$(echo $$i | sed 's/^[0-9]*//'); \
case "$$variant" in \
"") \
cd $$phpv; \
docker buildx build -t $(NAME):$$i --platform linux/amd64 --load \
--build-arg COMPOSER_HASH=$(COMPOSER_HASH) \
--build-arg DRUSH_VERSION=$(DRUSH_VERSION) \
--build-arg BUILD_DATE=$$(date -u +"%Y-%m-%dT%H:%M:%SZ") \
--build-arg VCS_REF=$$(git rev-parse --short HEAD) .; \
cd ..; \
tests/run-test.sh $(NAME):$$i $$phpver base; \
;; \
-fpm) \
cd $$phpv-fpm; \
docker buildx build -t $(NAME):$$i --platform linux/amd64 --load \
--build-arg BUILD_DATE=$$(date -u +"%Y-%m-%dT%H:%M:%SZ") \
--build-arg VCS_REF=$$(git rev-parse --short HEAD) .; \
cd ..; \
tests/run-test.sh $(NAME):$$i $$phpver fpm; \
;; \
-unit) \
cd $$phpv-unit; \
docker buildx build -t $(NAME):$$i --platform linux/amd64 --load \
--build-arg BUILD_DATE=$$(date -u +"%Y-%m-%dT%H:%M:%SZ") \
--build-arg VCS_REF=$$(git rev-parse --short HEAD) .; \
cd ..; \
tests/run-test.sh $(NAME):$$i $$phpver unit; \
;; \
esac; \
done
@echo "\n=== All tests passed! ==="
@echo "To push images, run: make push TAGS='$(TAGS)'"