aboutsummaryrefslogtreecommitdiff
path: root/justfile
diff options
context:
space:
mode:
Diffstat (limited to 'justfile')
-rw-r--r--justfile78
1 files changed, 78 insertions, 0 deletions
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