# Variables registry_url := "public.ecr.aws/x2w2w0z4" containers := "src/*/" targets := `find src -type d -name "targets" | sed 's|src/||' | sed 's|/targets||'` # 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 buildx build --build-arg BASE_VER=$base_ver -t {{registry_url}}/{{container}}:$tag -f src/{{container}}/Dockerfile src/{{container}} --load 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 container in {{targets}}; do for target in src/$container/targets/*; do target_name=$(basename $target) tag=$(cat src/$container/VERSION) docker buildx build --target $target_name -t {{registry_url}}/$container:$tag-$target_name -t {{registry_url}}/$container:$target_name -f src/$container/Dockerfile src/$container --load echo "$container/$target_name/$tag has been built" done done # Push targets push-targets: #!/usr/bin/env bash for container in {{targets}}; do for target in src/$container/targets/*; do target_name=$(basename $target) tag=$(cat src/$container/VERSION) docker push {{registry_url}}/$container:$tag-$target_name docker push {{registry_url}}/$container:$target_name echo "$container/$target_name/$tag has been pushed" done 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