-
Notifications
You must be signed in to change notification settings - Fork 47
/
Copy pathrelease_dispatcher.sh
executable file
·60 lines (48 loc) · 1.56 KB
/
release_dispatcher.sh
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
#!/bin/bash
#
# Ensure parity of Bakery releases and all extensions / release versions in release_build_versions.txt.
#
# Note that only new releases will be published; existing ones removed from release_build_versions.txt
# will not be un-published.
set -euo pipefail
cd "$(dirname "$0")"
source "lib/libbakery.sh"
output="${GITHUB_OUTPUT:-releases_to_build.txt}"
echo
echo "Checking for new extension images to be built"
echo "============================================="
echo
mapfile -t images < <( sed -e 's:\s*#.*::' -e '/^$/d' release_build_versions.txt )
builds=()
extensions=()
for image in "${images[@]}"; do
extension="${image% *}"
version="${image#* }"
if [ "${version}" = "latest" ] ; then
unset version
mapfile -t version < <( ./bakery.sh list "${extension}" --latest true )
fi
build_required="false"
for v in "${version[@]}"; do
echo -n "* ${extension} ${v}: "
if github_release_exists "${bakery%/*}" "${bakery#*/}" "${extension}-${v}"; then
echo "Bakery release exists."
continue
fi
if [[ " ${builds[@]} " != *" ${extension}:${v} "* ]] ; then
echo "Build required. "
build_required="true"
builds+=( "${extension}:${v}" )
else
echo "Build already scheduled. "
fi
done
if [[ $build_required == true && " ${extensions[@]} " != *" ${extension} "* ]] ; then
extensions+=( "${extension}" )
fi
unset version
done
cat >> "${output}" <<EOF
builds=$(jq -r -c -n --args '$ARGS.positional' "${builds[@]}")
extensions=$(jq -r -c -n --args '$ARGS.positional' "${extensions[@]}")
EOF