В настоящее время не могу понять, как правильно передать мои параметры из Jenkins в функцию docker .withRun в плагине Jenkins Docker (особенно в декларативных конвейерах), который содержит пробелы.
Пробовал неизвестное количество методов, чтобы заставить это работать и в настоящее время в растерянности. Смотрите код ниже
stage('Send Notifications')
{
steps
{
// Send a notification based on the parameters passed
script
{
docker.withRegistry(registry, registryCredentials)
{
// echo "${TITLE}"
docker.image("notifications:latest").withRun("--rm -e TITLE=\"${TITLE}\" -e MESSAGE=\"${MESSAGE}\" -e MESSAGE_FORMAT=\"${MESSAGE_TYPE}\" -e EMAIL=\"${EMAILS}\" --name notifications notifications")
// sh "docker run --rm -e TITLE=\"${TITLE}\" -e MESSAGE=\"${MESSAGE}\" -e MESSAGE_FORMAT=\"${MESSAGE_TYPE}\" -e EMAIL=\"${EMAILS}\" --name notifications notifications"
}
}
}
}
В настоящее время, если я просто использую метод командной оболочки, он работает отлично. Однако, используя метод плагина Docker, я просто не могу заставить его работать.
Login Succeeded
[Pipeline] {
Scripts not permitted to use method groovy.lang.GroovyObject invokeMethod java.lang.String java.lang.Object (org.jenkinsci.plugins.docker.workflow.Docker$Image withRun org.codehaus.groovy.runtime.GStringImpl). Administrators can decide whether to approve or reject this signature.
Любой совет мог бы помочь, просто пытаясь создавать уведомления, которые получают строки из других конвейеров. Таким образом, я могу отправлять сообщения различным формам общения (в настоящее время работаю на слабину).
РЕДАКТИРОВАТЬ: добавил это в и только что выдал другую ошибку. Я пытаюсь добиться передачи параметров в аргументы, которые будут строками текста (сообщение пользователю о неудачной сборке из другого задания).
hudson.remoting.ProxyException: groovy.lang.MissingMethodException: No signature of method: static org.jenkinsci.plugins.docker.workflow.Docker.withRun() is applicable for argument types: (java.lang.String) values
docker.withRegistry(registry, registryCredentials)
{
def args = "--rm -e TITLE=\"This is a message\" -e MESSAGE=\"a message\" -e MESSAGE_FORMAT=\"s\" -e EMAIL=\"asdf@email.com\" --name notifications notifications"
echo args
docker.image("notifications:latest").withRun(args)
//sh "docker run --rm -e TITLE=\"${TITLE}\" -e MESSAGE=\"${MESSAGE}\" -e MESSAGE_FORMAT=\"${MESSAGE_TYPE}\" -e EMAIL=\"${EMAILS}\" --name notifications notifications"
}