blob: 4b4b42b6a1b4ec879960a31c6bc04409a44e8a03 (
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
|
# Variables
registry_url := "public.ecr.aws/s0f9o2k5"
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
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
|