diff options
| author | Max Resnick <max@ofmax.li> | 2025-02-15 23:04:57 -0800 |
|---|---|---|
| committer | Max Resnick <max@ofmax.li> | 2025-02-15 23:04:57 -0800 |
| commit | af604d8100799fd7481c0bb223d84b3d0aaaf999 (patch) | |
| tree | 80e135718e3e220fd0a5b61f7fa429ffc4573cc8 | |
| parent | 3bc28bb9df715976e8b30e561ccf0553ceed860a (diff) | |
| download | grumpy-containers-af604d8100799fd7481c0bb223d84b3d0aaaf999.tar.gz | |
feat: replace Makefile w/ justfile
| -rw-r--r-- | Makefile | 48 | ||||
| -rw-r--r-- | justfile | 78 |
2 files changed, 78 insertions, 48 deletions
diff --git a/Makefile b/Makefile deleted file mode 100644 index 5c26a04..0000000 --- a/Makefile +++ /dev/null @@ -1,48 +0,0 @@ -#!/usr/bin/env make -override CONTAINERS = $(patsubst src/%,%,$(wildcard src/*)) -override TARGETS = $(patsubst src/%,%,$(subst targets/,,$(wildcard src/**/targets/*))) - -override PUSH_TARGETS = $(addprefix push/,$(TARGETS)) -override BUILD_TARGETS = $(addprefix build/,$(TARGETS)) - -override BUILD_CONTAINERS = $(addprefix build/,$(CONTAINERS)) -override PUSH_CONTAINERS = $(addprefix push/,$(CONTAINERS)) - -override REGISTRY_URL = public.ecr.aws/s0f9o2k5 - -TAG = $(shell cat src/$(@F)/VERSION) -BASE_NAME = $(notdir $(@D)) - -all: $(BUILD_CONTAINERS) $(BUILD_TARGETS) $(PUSH_CONTAINERS) $(PUSH_TARGETS) - -$(BUILD_CONTAINERS): TAG = $(shell cat src/$(@F)/VERSION) -$(BUILD_CONTAINERS): - docker build -t $(REGISTRY_URL)/$(@F):$(TAG) -f src/$(@F)/Dockerfile src/$(@F) - @echo "$(@F)/$(TAG) has been built" - -$(PUSH_CONTAINERS): TAG = $(shell cat src/$(@F)/VERSION) -$(PUSH_CONTAINERS): - docker push $(REGISTRY_URL)/$(@F):$(TAG) - @echo "$(@F)/$(TAG) has been pushed" - -$(BUILD_TARGETS): TAG = $(shell cat src/$(BASE_NAME)/VERSION) -$(BUILD_TARGETS): - docker build --target $(@F) -t $(REGISTRY_URL)/$(BASE_NAME):$(TAG)-$(@F) -f src/$(BASE_NAME)/Dockerfile src/$(BASE_NAME) - docker build --target $(@F) -t $(REGISTRY_URL)/$(BASE_NAME):$(@F) -f src/$(BASE_NAME)/Dockerfile src/$(BASE_NAME) - @echo "$(BASE_NAME)/$(@F)/$(TAG) has been built" - -$(PUSH_TARGETS): TAG = $(shell cat src/$(BASE_NAME)/VERSION) -$(PUSH_TARGETS): - docker push $(REGISTRY_URL)/$(BASE_NAME):$(TAG)-$(@F) - docker push $(REGISTRY_URL)/$(BASE_NAME):$(@F) - @echo "$(BASE_NAME)/$(@F)/$(TAG) has been pushed" - - -build: $(BUILD_CONTAINERS) $(BUILD_TARGETS) - @echo "completed builds" - -push: $(PUSH_CONTAINERS) $(PUSH_TARGETS) - @echo "pushed all containers" - -%: build/% push/% - echo "completed $%" diff --git a/justfile b/justfile new file mode 100644 index 0000000..11fa935 --- /dev/null +++ b/justfile @@ -0,0 +1,78 @@ +# Variables +registry_url := "public.ecr.aws/s0f9o2k5" +containers := `ls src` +targets := `find src -type f -name "targets" -exec dirname {} \; | sed 's/src\///'` + +# Default recipe +default: build push + +# Build all containers and targets +build: build-containers build-targets + +# Push all containers and targets +push: push-containers push-targets + +# Build a single container +build-container container: + #!/usr/bin/env bash + base_ver=$(cat src/base/VERSION) + tag=$(cat src/{{container}}/VERSION) + docker build --build-arg BASE_VER=$base_ver -t {{registry_url}}/{{container}}:$tag -f src/{{container}}/Dockerfile src/{{container}} + echo "{{container}}/$tag has been built" + +# Push a single container +push-container container: + #!/usr/bin/env bash + tag=$(cat src/{{container}}/VERSION) + docker push {{registry_url}}/{{container}}:$tag + echo "{{container}}/$tag has been pushed" + +# Build all containers +build-containers: + #!/usr/bin/env bash + for container in {{containers}}; do + just build-container $container + done + +# Push all containers +push-containers: + #!/usr/bin/env bash + for container in {{containers}}; do + just push-container $container + done + +# Build targets +build-targets: + #!/usr/bin/env bash + for dir in {{targets}}; do + base_name=$(dirname $dir) + target=$(basename $dir) + tag=$(cat src/$base_name/VERSION) + docker build --target $target -t {{registry_url}}/$base_name:$tag-$target -f src/$base_name/Dockerfile src/$base_name + docker build --target $target -t {{registry_url}}/$base_name:$target -f src/$base_name/Dockerfile src/$base_name + echo "$base_name/$target/$tag has been built" + done + +# Push targets +push-targets: + #!/usr/bin/env bash + for dir in {{targets}}; do + base_name=$(dirname $dir) + target=$(basename $dir) + tag=$(cat src/$base_name/VERSION) + docker push {{registry_url}}/$base_name:$tag-$target + docker push {{registry_url}}/$base_name:$target + echo "$base_name/$target/$tag has been pushed" + done + +# Bump version +bump-version container: + #!/usr/bin/env bash + echo "v$(bumpver patch src/{{container}}/VERSION)" > src/{{container}}/VERSION + +# Bump versions: +bump-versions: + #!/usr/bin/env bash + for container in {{containers}}; do + just push-container $container + done |