There seems to be some syntax issues and also I would suggest to use bash
instead if using sh
shell.
Try the below code and see if this works properly. (EDIT - Put shebang on first line to accept as answer)
sh label: 'Stop and Remove Old Docker Container', script: '''
#'''#!/usr/bin/env bash
docker ps -a
echo $APP_CONTAINER_NAME
docker ps -a | grep $APP_CONTAINER_NAME || true
status=("${PIPESTATUS[@]}")
DOCKERCODE=${status[0]}
GREPCODE=${status[1]}
echo "Docker Command Code: $DOCKERCODE"
echo "Grep Command Code: $GREPCODE"
if [ $DOCKERCODE -eq 0 ]; then
docker stop $APP_CONTAINER_NAME
docker rm $APP_CONTAINER_NAME
else
echo "WARNING: Docker command was empty or had an error"
fi
'''
In the above code, I have made changes in the way you were trying to get output of command docker ps -a | grep $APP_CONTAINER_NAME || true
using PIPESTATUS
variable.
Since PIPESTATUS
is a special variable, it's value gets updated after every command, so you were not getting any value of ${PIPESTATUS[1]}
The other change I have made is fixing the syntax issue in the line if [ $DOCKERCODE -eq 0 ] then;
to if [ $DOCKERCODE -eq 0 ]; then
You can test out the code further.