# Variables registry_url := "public.ecr.aws/x2w2w0z4" containers := "src/*/" targets := `find src -type f -name "targets" -exec dirname {} \; | sed 's/src\///'` # Default recipe default: @just --choose # all all: 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 docker tag {{registry_url}}/{{container}}:$tag {{registry_url}}/{{container}}:latest docker push {{registry_url}}/{{container}}:latest echo "{{container}}/$tag has been pushed" # Build all containers build-containers: #!/usr/bin/env bash for container in {{containers}}; do container_name=$(basename $container) just build-container $container_name done # Push all containers push-containers: #!/usr/bin/env bash for container in {{containers}}; do container_name=$(basename $container) just push-container $container_name 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 part="patch": #!/usr/bin/env bash echo "v$(bumpver {{part}} src/{{container}}/VERSION)" > src/{{container}}/VERSION # Bump versions: bump-versions part="patch": #!/usr/bin/env bash for container in {{containers}}; do container_name=$(basename $container) just bump-version $container_name {{part}} done