Последний пример не работает, потому что вы используете для сценария тройные одинарные кавычки:
ip_address = sh(returnStdout: true, script: '''
Вместо этого используйте тройные двойные кавычки:
ip_address = sh(returnStdout: true, script: """
aws ec2 describe-instances \
--query "Reservations[*].Instances[?InstanceId=='$instance_id'].PrivateIpAddress" \
--output text
""").trim()
Обратите внимание, что вам не нужно экранировать одинарные двойные кавычки в скрипте, но вы должны экранировать $
как \$
, если хотите сослаться на переменную оболочки.
Дальнейшее чтение: Groovy - Интерполяция строки