11ORG ?= quay.io/tinkerbell
22ARCH := $(shell uname -m)
33
4- GIT_VERSION ?= $( shell git log -1 --format=" % h" )
5- ifneq ( $( shell git status --porcelain) ,)
6- GIT_VERSION := $( GIT_VERSION ) -dirty
4+ ifeq ( $( strip $( TAG ) ) , )
5+ # ^ guards against TAG being defined but empty string which makes `TAG ?=` not work
6+ TAG := latest
77endif
88default : bootkitBuild tink-dockerBuild image
99
10- LINUXKIT_CONFIG ?= hook.yaml
11-
1210dev : dev-bootkitBuild dev-tink-dockerBuild
1311ifeq ($(ARCH ) ,x86_64)
1412dev : dev-image-amd64
@@ -20,21 +18,27 @@ endif
2018# This option is for running docker manifest command
2119export DOCKER_CLI_EXPERIMENTAL := enabled
2220
23- image-amd64 :
21+ LINUXKIT_CONFIG ?= hook.in.yaml
22+ .PHONY : hook.yaml
23+ hook.yaml : $(LINUXKIT_CONFIG )
24+ sed ' /quay.io/ s|:latest|:$(TAG)|' $^ > $@ .tmp
25+ mv $@ .tmp $@
26+
27+ image-amd64 : hook.yaml
2428 mkdir -p out
25- linuxkit build -docker -pull -format kernel+initrd -name hook-x86_64 -dir out $( LINUXKIT_CONFIG )
29+ linuxkit build -docker -pull -format kernel+initrd -name hook-x86_64 -dir out hook.yaml
2630
27- image-arm64 :
31+ image-arm64 : hook.yaml
2832 mkdir -p out
29- linuxkit build -docker -pull -arch arm64 -format kernel+initrd -name hook-aarch64 -dir out $( LINUXKIT_CONFIG )
33+ linuxkit build -docker -pull -arch arm64 -format kernel+initrd -name hook-aarch64 -dir out hook.yaml
3034
31- dev-image-amd64 :
35+ dev-image-amd64 : hook.yaml
3236 mkdir -p out
33- linuxkit build -docker -format kernel+initrd -name hook-x86_64 -dir out $( LINUXKIT_CONFIG )
37+ linuxkit build -docker -format kernel+initrd -name hook-x86_64 -dir out hook.yaml
3438
35- dev-image-arm64 :
39+ dev-image-arm64 : hook.yaml
3640 mkdir -p out
37- linuxkit build -docker -arch arm64 -format kernel+initrd -name hook-aarch64 -dir out $( LINUXKIT_CONFIG )
41+ linuxkit build -docker -arch arm64 -format kernel+initrd -name hook-aarch64 -dir out hook.yaml
3842
3943image : image-amd64 image-arm64
4044
5862 sudo ~ /go/bin/linuxkit run qemu --mem 2048 out/hook-${ARCH}
5963
6064dev-bootkitBuild :
61- cd bootkit; docker buildx build --load -t $(ORG ) /hook-bootkit:0.0 .
65+ cd bootkit; docker buildx build --load -t $(ORG ) /hook-bootkit:$( TAG ) .
6266
6367bootkitBuild :
64- cd bootkit; docker buildx build --platform linux/amd64,linux/arm64 --push -t $(ORG ) /hook-bootkit:0.0 .
68+ cd bootkit; docker buildx build --platform linux/amd64,linux/arm64 --push -t $(ORG ) /hook-bootkit:$( TAG ) .
6569
6670dev-tink-dockerBuild :
67- cd tink-docker; docker buildx build --load -t $(ORG ) /hook-docker:0.0 .
71+ cd tink-docker; docker buildx build --load -t $(ORG ) /hook-docker:$( TAG ) .
6872
6973tink-dockerBuild :
70- cd tink-docker; docker buildx build --platform linux/amd64,linux/arm64 --push -t $(ORG ) /hook-docker:0.0 .
74+ cd tink-docker; docker buildx build --platform linux/amd64,linux/arm64 --push -t $(ORG ) /hook-docker:$( TAG ) .
7175
7276dev-convert :
7377 rm -rf ./convert
@@ -92,7 +96,7 @@ dist: default convert
9296 mv ./out/hook-$$ a-kernel ./dist/vmlinuz-$$ a; \
9397 done
9498 rm -rf out
95- cd ./dist && tar -czvf ../hook-${GIT_VERSION } .tar.gz ./*
99+ cd ./dist && tar -czvf ../hook-${TAG } .tar.gz ./*
96100
97101dist-existing-images : image convert
98102 rm -rf ./dist ./convert
@@ -102,7 +106,7 @@ dist-existing-images: image convert
102106 mv ./out/hook-$$ a-kernel ./dist/vmlinuz-$$ a; \
103107 done
104108 rm -rf out
105- cd ./dist && tar -czvf ../hook-${GIT_VERSION } .tar.gz ./*
109+ cd ./dist && tar -czvf ../hook-${TAG } .tar.gz ./*
106110
107111
108112dev-dist : dev dev-convert
@@ -111,17 +115,17 @@ dev-dist: dev dev-convert
111115 mv ./initramfs-${ARCH} .gz ./dist/initramfs-${ARCH}
112116 mv ./out/hook-${ARCH} -kernel ./dist/vmlinuz-${ARCH}
113117 rm -rf out
114- cd ./dist && tar -czvf ../hook-${GIT_VERSION } .tar.gz ./*
118+ cd ./dist && tar -czvf ../hook-${TAG } .tar.gz ./*
115119
116120deploy : dist
117121ifeq ($(shell git rev-parse --abbrev-ref HEAD) ,main)
118- s3cmd sync ./hook-${GIT_VERSION }.tar.gz s3://s.gianarb.it/hook/${GIT_VERSION }.tar.gz
119- s3cmd cp s3://s.gianarb.it/hook/hook-${GIT_VERSION }.tar.gz s3://s.gianarb.it/hook/hook-main.tar.gz
122+ s3cmd sync ./hook-${TAG }.tar.gz s3://s.gianarb.it/hook/${TAG }.tar.gz
123+ s3cmd cp s3://s.gianarb.it/hook/hook-${TAG }.tar.gz s3://s.gianarb.it/hook/hook-main.tar.gz
120124endif
121125
122126.PHONY : clean
123127clean :
124- rm ./hook-${GIT_VERSION } .tar.gz
128+ rm ./hook-${TAG } .tar.gz
125129 rm -rf dist/ out/ tink-docker/local/ bootkit/local/
126130
127131-include lint.mk
0 commit comments