@@ -75,62 +75,64 @@ update_services() {
75
75
76
76
for name in $( IFS=$' \n ' docker service ls --quiet --filter " ${FILTER_SERVICES} " --format ' {{.Name}}' ) ; do
77
77
local image_with_digest image auth_config config_flag
78
- if [[ " $( in_list " $ignorelist " " $name " ) " == " false" ]]; then
79
- image_with_digest=" $( docker service inspect " $name " -f ' {{.Spec.TaskTemplate.ContainerSpec.Image}}' ) "
80
- image=$( echo " $image_with_digest " | cut -d@ -f1)
81
- auth_config=$( docker service inspect " $name " -f ' {{index .Spec.Labels "shepherd.auth.config"}}' )
82
- if [[ -z " $auth_config " ]]; then
83
- config_flag=()
84
- else
85
- config_flag=(--config " $auth_config " )
86
- fi
87
-
88
- if ! DOCKER_CLI_EXPERIMENTAL=enabled docker " ${config_flag[@]} " manifest inspect $insecure_registry_flag " $image " > /dev/null; then
89
- logger " Error updating service $name ! Image $image does not exist or it is not available"
90
- continue # continue with next service
91
- fi
78
+ if [[ " $( in_list " $ignorelist " " $name " ) " == " true" ]]; then
79
+ logger " Ignoring service $name "
80
+ continue # continue with next service
81
+ fi
82
+ image_with_digest=" $( docker service inspect " $name " -f ' {{.Spec.TaskTemplate.ContainerSpec.Image}}' ) "
83
+ image=$( echo " $image_with_digest " | cut -d@ -f1)
84
+ auth_config=$( docker service inspect " $name " -f ' {{index .Spec.Labels "shepherd.auth.config"}}' )
85
+ if [[ -z " $auth_config " ]]; then
86
+ config_flag=()
87
+ else
88
+ config_flag=(--config " $auth_config " )
89
+ fi
92
90
93
- logger " Trying to update service $name with image $image " " true"
94
- # shellcheck disable=SC2086
95
- if ! docker " ${config_flag[@]} " service update " $name " $detach_option $registry_auth $no_resolve_image_flag ${UPDATE_OPTIONS} --image=" $image " > /dev/null; then
96
- logger " Service $name update failed on $hostname !"
97
- if [[ " ${ROLLBACK_ON_FAILURE+x} " ]]; then
98
- logger " Rolling $name back"
99
- # shellcheck disable=SC2086
100
- docker " ${config_flag[@]} " service update " $name " $detach_option $registry_auth $no_resolve_image_flag ${ROLLBACK_OPTIONS} --rollback > /dev/null
101
- fi
102
- if [[ " $apprise_sidecar_url " != " " ]]; then
103
- title=" [Shepherd] Service $name update failed on $hostname "
104
- body=" $( date) Service $name failed to update to $( docker service inspect " $name " -f ' {{.Spec.TaskTemplate.ContainerSpec.Image}}' ) "
105
- curl -X POST -H " Content-Type: application/json" --data " {\" title\" : \" $title \" , \" body\" : \" $body \" }" " $apprise_sidecar_url "
106
- fi
107
- continue # continue with next service
108
- fi
91
+ if ! DOCKER_CLI_EXPERIMENTAL=enabled docker " ${config_flag[@]} " manifest inspect $insecure_registry_flag " $image " > /dev/null; then
92
+ logger " Error updating service $name ! Image $image does not exist or it is not available"
93
+ continue # continue with next service
94
+ fi
109
95
110
- previousImage=$( docker service inspect " $name " -f ' {{.PreviousSpec.TaskTemplate.ContainerSpec.Image}}' )
111
- currentImage=$( docker service inspect " $name " -f ' {{.Spec.TaskTemplate.ContainerSpec.Image}}' )
112
- if [ " $previousImage " == " $currentImage " ]; then
113
- logger " No updates to service $name !" " true"
114
- continue # continue with next service
96
+ logger " Trying to update service $name with image $image " " true"
97
+ # shellcheck disable=SC2086
98
+ if ! docker " ${config_flag[@]} " service update " $name " $detach_option $registry_auth $no_resolve_image_flag ${UPDATE_OPTIONS} --image=" $image " > /dev/null; then
99
+ logger " Service $name update failed on $hostname !"
100
+ if [[ " ${ROLLBACK_ON_FAILURE+x} " ]]; then
101
+ logger " Rolling $name back"
102
+ # shellcheck disable=SC2086
103
+ docker " ${config_flag[@]} " service update " $name " $detach_option $registry_auth $no_resolve_image_flag ${ROLLBACK_OPTIONS} --rollback > /dev/null
115
104
fi
116
-
117
- logger " Service $name was updated!"
118
105
if [[ " $apprise_sidecar_url " != " " ]]; then
119
- title=" [Shepherd] Service $name updated on $hostname "
120
- body=" $( date) Service $name was updated from $previousImage to $currentImage "
106
+ title=" [Shepherd] Service $name update failed on $hostname "
107
+ body=" $( date) Service $name failed to update to $( docker service inspect " $name " -f ' {{.Spec.TaskTemplate.ContainerSpec.Image}} ' ) "
121
108
curl -X POST -H " Content-Type: application/json" --data " {\" title\" : \" $title \" , \" body\" : \" $body \" }" " $apprise_sidecar_url "
122
109
fi
110
+ continue # continue with next service
111
+ fi
112
+
113
+ previousImage=$( docker service inspect " $name " -f ' {{.PreviousSpec.TaskTemplate.ContainerSpec.Image}}' )
114
+ currentImage=$( docker service inspect " $name " -f ' {{.Spec.TaskTemplate.ContainerSpec.Image}}' )
115
+ if [ " $previousImage " == " $currentImage " ]; then
116
+ logger " No updates to service $name !" " true"
117
+ continue # continue with next service
118
+ fi
119
+
120
+ logger " Service $name was updated!"
121
+ if [[ " $apprise_sidecar_url " != " " ]]; then
122
+ title=" [Shepherd] Service $name updated on $hostname "
123
+ body=" $( date) Service $name was updated from $previousImage to $currentImage "
124
+ curl -X POST -H " Content-Type: application/json" --data " {\" title\" : \" $title \" , \" body\" : \" $body \" }" " $apprise_sidecar_url "
125
+ fi
123
126
124
- if [[ " $image_autoclean_limit " != " " ]]; then
125
- logger " Cleaning up old docker images, leaving last $image_autoclean_limit "
126
- img_name=$( docker service inspect " $name " -f ' {{.Spec.TaskTemplate.ContainerSpec.Image}}' | awk -F' :' ' {print $1}' )
127
- image_ids=$( docker images -aq --filter=reference=" $img_name " )
128
- image_ids_count=$( echo " $image_ids " | wc -w)
129
- if [[ $image_ids_count > $image_autoclean_limit ]]; then
130
- docker container prune -f
131
- read -ra images_to_remove < <( echo " $image_ids " | xargs -n 1 | tail -n $(( "$image_ids_count " - "$image_autoclean_limit ")) )
132
- docker rmi " ${images_to_remove[@]} "
133
- fi
127
+ if [[ " $image_autoclean_limit " != " " ]]; then
128
+ logger " Cleaning up old docker images, leaving last $image_autoclean_limit "
129
+ img_name=$( docker service inspect " $name " -f ' {{.Spec.TaskTemplate.ContainerSpec.Image}}' | awk -F' :' ' {print $1}' )
130
+ image_ids=$( docker images -aq --filter=reference=" $img_name " )
131
+ image_ids_count=$( echo " $image_ids " | wc -w)
132
+ if [[ $image_ids_count > $image_autoclean_limit ]]; then
133
+ docker container prune -f
134
+ read -ra images_to_remove < <( echo " $image_ids " | xargs -n 1 | tail -n $(( "$image_ids_count " - "$image_autoclean_limit ")) )
135
+ docker rmi " ${images_to_remove[@]} "
134
136
fi
135
137
fi
136
138
done
0 commit comments