aboutsummaryrefslogtreecommitdiff
path: root/justfile
blob: 70bbda470880851f407ed692409e4caf45cf6676 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# 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