83 lines
2.2 KiB
Makefile
83 lines
2.2 KiB
Makefile
TEST_IMAGE?=ubuntu:22.04
|
|
VERSION?=
|
|
CHANNEL?=
|
|
|
|
VOLUME_MOUNTS=-v "$(CURDIR)":/v
|
|
SHELLCHECK_EXCLUSIONS=$(addprefix -e, SC1091 SC1117 SC2317 SC2329)
|
|
SHELLCHECK=docker run --rm $(VOLUME_MOUNTS) -w /v koalaman/shellcheck:stable $(SHELLCHECK_EXCLUSIONS)
|
|
|
|
ENVSUBST_VARS=LOAD_SCRIPT_COMMIT_SHA
|
|
|
|
# Define the channels we want to build for
|
|
CHANNELS=test stable
|
|
|
|
FILES=build/test/install.sh build/stable/install.sh build/stable/rootless-install.sh
|
|
|
|
.PHONY: build
|
|
build: $(FILES)
|
|
|
|
build/%/install.sh: install.sh
|
|
mkdir -p $(@D)
|
|
sed 's/DEFAULT_CHANNEL_VALUE="stable"/DEFAULT_CHANNEL_VALUE="$*"/' $< | \
|
|
LOAD_SCRIPT_COMMIT_SHA='$(shell git rev-parse HEAD)' envsubst '$(addprefix $$,$(ENVSUBST_VARS))' > $@
|
|
|
|
build/%/rootless-install.sh: rootless-install.sh
|
|
mkdir -p $(@D)
|
|
sed 's/DEFAULT_CHANNEL_VALUE="stable"/DEFAULT_CHANNEL_VALUE="$*"/' $< | \
|
|
LOAD_SCRIPT_COMMIT_SHA='$(shell git rev-parse HEAD)' envsubst '$(addprefix $$,$(ENVSUBST_VARS))' > $@
|
|
|
|
.PHONY: shellcheck
|
|
shellcheck: $(FILES)
|
|
$(SHELLCHECK) $^
|
|
|
|
.PHONY: test
|
|
test: $(foreach channel,$(CHANNELS),build/$(channel)/install.sh)
|
|
for file in $^; do \
|
|
(set -x; docker run --rm -it \
|
|
$(VOLUME_MOUNTS) \
|
|
--privileged \
|
|
-e HOME=/tmp \
|
|
-v /var/lib/docker \
|
|
-w /v \
|
|
-e VERSION \
|
|
-e CHANNEL \
|
|
$(TEST_IMAGE) \
|
|
sh $$file) | tail -n 30; \
|
|
done
|
|
|
|
AWS?=docker run \
|
|
-v ./build:/build \
|
|
-e AWS_ACCESS_KEY_ID \
|
|
-e AWS_SECRET_ACCESS_KEY \
|
|
-e AWS_SESSION_TOKEN \
|
|
--rm amazon/aws-cli
|
|
|
|
.PHONY: deploy
|
|
deploy: build/$(CHANNEL)/install.sh build/$(CHANNEL)/rootless-install.sh
|
|
ifeq ($(S3_BUCKET),)
|
|
$(error S3_BUCKET is empty.)
|
|
endif
|
|
ifeq ($(CF_DISTRIBUTION_ID),)
|
|
$(error CF_DISTRIBUTION_ID is empty.)
|
|
endif
|
|
ifeq ($(CHANNEL),)
|
|
$(error CHANNEL is empty.)
|
|
endif
|
|
$(AWS) s3 cp --acl public-read --content-type 'text/plain' /build/$(CHANNEL)/install.sh s3://$(S3_BUCKET)/index
|
|
ifeq ($(CHANNEL),stable)
|
|
$(AWS) s3 cp --acl public-read --content-type 'text/plain' /build/$(CHANNEL)/rootless-install.sh s3://$(S3_BUCKET)/rootless
|
|
endif
|
|
|
|
$(AWS) cloudfront create-invalidation --distribution-id $(CF_DISTRIBUTION_ID) --paths '/*'
|
|
|
|
.PHONY: diff
|
|
diff: build/$(CHANNEL)/install.sh build/$(CHANNEL)/rootless-install.sh
|
|
ifeq ($(CHANNEL),)
|
|
$(error CHANNEL is empty.)
|
|
endif
|
|
./diff.sh $(CHANNEL) || true
|
|
|
|
.PHONY: clean
|
|
clean:
|
|
$(RM) -r build/
|