Skip to content

Commit 5382a34

Browse files
committed
fix: enhance docker.sh to simulate and release-images to work off of a file
Signed-off-by: Kevin O'Donnell <kevin@blockchaintp.com>
1 parent e46952d commit 5382a34

File tree

2 files changed

+45
-43
lines changed

2 files changed

+45
-43
lines changed

bash/docker.sh

Lines changed: 13 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,19 @@ source "$(dirname "${BASH_SOURCE[0]}")/includer.sh"
2626

2727
function docker::cmd() {
2828
@doc Smart command for docker.
29-
$(commands::use docker) "$@"
29+
if [ -z "$SIMULATE" ]; then
30+
$(commands::use docker) "$@"
31+
else
32+
echo "$(commands::use docker)" "$@"
33+
fi
3034
}
3135

3236
function docker::pull() {
3337
@doc pull the specified image
3438
@arg _1_ the full image url to pull
3539
local image=${1:?}
3640
log::info "Pulling $image"
37-
exec::hide docker::cmd pull -q "$image"
41+
docker::cmd pull -q "$image"
3842
}
3943

4044
function docker::tag() {
@@ -43,15 +47,15 @@ function docker::tag() {
4347
@arg _2_ the desired final url
4448
local from=${1:?}
4549
local to=${2:?}
46-
exec::hide docker::cmd tag "$from" "$to"
50+
docker::cmd tag "$from" "$to"
4751
}
4852

4953
function docker::push() {
5054
@doc push the specified image
5155
@arg _1_ the full image url to push
5256
local image=${1:?}
5357
log::info "Pushing $image"
54-
exec::hide docker::cmd push "$image"
58+
docker::cmd push "$image"
5559
}
5660

5761
function docker::cp() {
@@ -131,7 +135,6 @@ function docker::promote_latest() {
131135
local organization=${1:?}
132136
local registry=${2:?}
133137
local target_tag=${3:?}
134-
local simulate=${SIMULATE:-""}
135138
shift 3
136139

137140
for repo in $(docker::list_repositories "$registry" |
@@ -143,28 +146,14 @@ function docker::promote_latest() {
143146
log::warn "$repo has no official version in $target_tag"
144147
continue
145148
fi
146-
if [ -z "$simulate" ]; then
147-
docker::cp "$registry/$repo:$src_version" "$registry/$repo:$target_tag"
148-
else
149-
log::notice "Would copy $registry/$repo:$src_version to $registry/$repo:$target_tag"
150-
fi
149+
docker::cp "$registry/$repo:$src_version" "$registry/$repo:$target_tag"
151150
for extra_registry in "$@"; do
152-
if [ -z "$simulate" ]; then
153-
docker::tag "$registry/$repo:$src_version" "$extra_registry/$repo:$src_version"
154-
docker::tag "$registry/$repo:$target_tag" "$extra_registry/$repo:$target_tag"
155-
else
156-
log::notice "Would tag $registry/$repo:$src_version as $extra_registry/$repo:$src_version"
157-
log::notice "Would tag $registry/$repo:$target_tag as $extra_registry/$repo:$target_tag"
158-
fi
151+
docker::tag "$registry/$repo:$src_version" "$extra_registry/$repo:$src_version"
152+
docker::tag "$registry/$repo:$target_tag" "$extra_registry/$repo:$target_tag"
159153
done
160154
for extra_registry in "$@"; do
161-
if [ -z "$simulate" ]; then
162-
docker::push "$extra_registry/$repo:$src_version"
163-
docker::push "$extra_registry/$repo:$target_tag"
164-
else
165-
log::notice "Would push $extra_registry/$repo:$src_version"
166-
log::notice "Would push $extra_registry/$repo:$target_tag"
167-
fi
155+
docker::push "$extra_registry/$repo:$src_version"
156+
docker::push "$extra_registry/$repo:$target_tag"
168157
done
169158
done
170159
}

bash/release-images

Lines changed: 32 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
# shellcheck source=includer.sh
1818
source "$(dirname "${BASH_SOURCE[0]}")/includer.sh"
1919

20+
@include options
2021
@include docker
2122

2223
log::level 2
@@ -25,25 +26,37 @@ function usage() {
2526
}
2627

2728
additional_registries=()
29+
function _add_additional_registry {
30+
local registry=${1:?}
31+
additional_registries+=("$registry")
32+
}
2833

29-
while getopts ":s:t:r:x:a:" o; do
30-
case "${o}" in
31-
a)
32-
additional_registries+=("${OPTARG}")
33-
;;
34-
t)
35-
target_tag=${OPTARG}
36-
;;
37-
r)
38-
target_registry=${OPTARG}
39-
;;
40-
*)
41-
usage
42-
;;
43-
esac
44-
done
34+
options::standard
35+
options::description "various tools to do with releasing and publishing images"
36+
options::add -o t -d "Target tag pattern to copy" -a -m -e target_tag
37+
options::add -o r -d "Source registry to find images" -a -m -e target_registry
38+
options::add -o a -d "target registry url to copy to, may be repeated" -a -m -f _add_additional_registry
39+
options::add -o d -d "dry run execution" -x DRY_RUN
40+
options::add -o f -d "use images file" -a -e IMAGES_FILE
41+
options::parse "$@"
4542
shift $((OPTIND - 1))
4643

47-
docker::promote_latest blockchaintp "$target_registry" \
48-
"$target_tag" \
49-
"${additional_registries[@]}"
44+
if [ "$DRY_RUN" = "true" ]; then
45+
export SIMULATE=true
46+
fi
47+
48+
if [ -z "$IMAGES_FILE" ]; then
49+
for additional_registry in "${additional_registries[@]}"; do
50+
docker::promote_latest blockchaintp "${target_registry:?}" \
51+
"${target_tag:?}" \
52+
"$additional_registry"
53+
done
54+
else
55+
while IFS= read -r repository; do
56+
echo "Repository: $repository"
57+
for additional_registry in "${additional_registries[@]}"; do
58+
docker::cp "$target_registry/$repository:$target_tag" \
59+
"$additional_registry/$repository:$target_tag"
60+
done
61+
done < <(grep -v '^ *#' <"$IMAGES_FILE")
62+
fi

0 commit comments

Comments
 (0)