-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
82 lines (65 loc) · 2.63 KB
/
Makefile
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
.PHONY: version-set prerel release git-status
.PHONY: foreman lib clean test all docker
.PHONY: base gems gem-cache clean-cache gems-base
.PHONY: cosign-verify
IMAGE:=ghcr.io/kingdonb/stats-tracker-ghcr
TAG:=latest
BASE_TAG:=base
GEMS_TAG:=gems
GEM_CACHE_TAG:=gem-cache
PLATFORM:=linux/arm64
OUTIMAGE:=kingdonb/opernator
VERSION:=$(shell rake app:version | awk '{ print $$3 }')
all: clean lib test
release: git-status
git tag $(VERSION)
git push origin $(VERSION)
cosign-verify:
cosign verify ghcr.io/kingdonb/manifests/stats-tracker:$(VERSION) \
--certificate-identity=https://github.com/kingdonb/stats-tracker-ghcr/.github/workflows/publish-tag.yaml@refs/tags/$(VERSION) \
--certificate-oidc-issuer=https://token.actions.githubusercontent.com
prerel: set-version
# https://kgolding.co.uk/snippets/makefile-check-git-status/
git-status:
@status=$$(git status --porcelain); \
if [ ! -z "$${status}" ]; \
then \
echo "Error - working directory is dirty. Commit those changes!"; \
exit 1; \
fi
set-version:
rake app:render
@next="$$(rake app:version | awk '{ print $$3 }')" && \
current="$(VERSION)" && \
echo "Replacing current version strings: $$current" && \
rake app:version && \
/usr/bin/sed -i '' "s/newTag: $$current/newTag: $$next/g" deploy/overlays/production/kustomization.yaml && \
echo "Version $$next set in code and manifests"
docker:
# docker pull --platform $(PLATFORM) $(IMAGE):$(BASE_TAG)
# docker pull --platform $(PLATFORM) $(IMAGE):$(GEMS_TAG)
docker buildx build --push --platform $(PLATFORM) --target deploy -t $(OUTIMAGE):$(TAG) --build-arg CACHE_IMAGE=$(OUTIMAGE):$(GEMS_TAG) .
gems-base:
docker pull --platform $(PLATFORM) $(IMAGE):$(BASE_TAG)
docker buildx build --push --target gems -t $(OUTIMAGE):$(GEMS_TAG) --build-arg CACHE_IMAGE=$(IMAGE):$(BASE_TAG) .
gems:
docker pull --platform $(PLATFORM) $(IMAGE):$(GEMS_TAG)
docker pull --platform $(PLATFORM) $(IMAGE):$(GEM_CACHE_TAG)
docker buildx build --push --target gems -t $(OUTIMAGE):$(GEMS_TAG) --build-arg CACHE_IMAGE=$(OUTIMAGE):$(GEM_CACHE_TAG) .
gem-cache:
# docker pull --platform $(PLATFORM) $(OUTIMAGE):$(GEMS_TAG)
docker tag $(OUTIMAGE):$(GEMS_TAG) $(OUTIMAGE):$(GEM_CACHE_TAG)
docker push $(OUTIMAGE):$(GEM_CACHE_TAG)
# docker buildx build --push --target gem-cache -t $(OUTIMAGE):$(GEM_CACHE_TAG) --build-arg CACHE_IMAGE=$(IMAGE):$(GEMS_TAG) .
clean-cache:
docker buildx build --push --target gem-cache -t $(OUTIMAGE):$(GEM_CACHE_TAG) .
base: lib
docker buildx build --push --target base -t $(OUTIMAGE):$(BASE_TAG) .
foreman:
date && time foreman start --no-timestamp
lib:
make -C lib stat.wasm
clean:
make -C lib clean
test:
make -C lib test