У меня проблемы со следующей командой оболочки в рамках этапа в моем Jenkinsfile:
stage('Run'){
container('tool-build'){
withCredentials([string(credentialsId: 'slack', variable: 'WEBHOOK')]){
echo "Sending Slack Notification"
sh """
images=\$(docker images | grep "url.for.specific.repo.net" | awk 'NR>1 { print \$1":"\$2 }'')
for image in \$images;
do
label=\$(docker inspect --format='Maintainer:{{.Config.Labels.maintainer}}, From:{{.Config.Labels.from}}, Contains:{{.Config.Labels.contains}}' \$image);
PAYLOAD=\$(printf 'payload={"text": "New image available - %s - %s", "channel": "#some-channel", "username": "Some-Jenkins"}' "\$image" "\$label");
curl -v -X POST --data-urlencod "\$PAYLOAD" "$WEBHOOK";
done
"""
Кажется, что консоль вывода от Jenkins не выполняет команды внутри images=\$
, а также игнорирует для л oop. Как получить правильный вывод из команд bash, а также не игнорировать for для l oop?
Вывод Jenkins:
Sending Slack Notification
[Pipeline] sh
+ docker images
+ grep url.for.specific.repo.net
+ awk 'NR>1 { print $1":"$2 }'
+ images=