Это часть моего файла Jenkins:
emailext([
attachmentsPattern: '**/build/*.log',
subject: 'Hello World',
recipientProviders: [developers(), requestor()],
to: '$DEFAULT_RECIPIENTS',
body: '''
<p>Test summary:</p>
<ul>
<li><a href = "${BUILD_URL}">Status: ${BUILD_STATUS}</a></li>
<li><a href = "${BUILD_URL}/flowGraphTable">Executed steps</a></li>
<li><a href = "${BUILD_URL}/parsed_console">Errors and warnings</a></li>
<li>Test results:</li>
${testResults}
</ul>
''',
mimeType: 'text/html'
])
Но, к сожалению, переменная testResults
не интерполируется:
Как я могу исправить?
Кроме того, я попытался заменить '''
на """
, вот так:
emailext([
attachmentsPattern: '**/build/*.log',
subject: 'Hello World',
recipientProviders: [developers(), requestor()],
to: '$DEFAULT_RECIPIENTS',
body: """
<p>Test summary:</p>
<ul>
<li><a href = "${BUILD_URL}">Status: ${BUILD_STATUS}</a></li>
<li><a href = "${BUILD_URL}/flowGraphTable">Executed steps</a></li>
<li><a href = "${BUILD_URL}/parsed_console">Errors and warnings</a></li>
<li>Test results:</li>
${testResults}
</ul>
""",
mimeType: 'text/html'
])
Но я получил эту ошибку в выводе консоли Jenkins:
Error when executing always post condition:
Also: org.jenkinsci.plugins.workflow.actions.ErrorAction$ErrorId: 4fb4675f-4b24-4e5a-8344-835e9d514202
groovy.lang.MissingPropertyException: No such property: BUILD_STATUS for class: groovy.lang.Binding
Версия Дженкинса: 2.441.
@NoamHelmer Версия Дженкинса - 2.441
Используйте """
, а не '''
, если вы хотите создавать шаблоны.
@tim_yates Привет, я уже пробовал это, как вы можете прочитать в моем посте.
Вы почти закончили с исправлением тройной двойной кавычки, вам просто нужно передать выражение ${BUILD_STATUS}
в плагин Token Macro (emailext
использует его для динамического создания темы и тела электронного письма) и не допустить, чтобы groovy интерполировал его слишком рано. . Попробуйте экранировать знак $
с помощью \
, например \${BUILD_STATUS}
.
Здравствуйте, вы имели в виду что-то вроде <li><a href = "${BUILD_URL}">Status: \${BUILD_STATUS}</a></li>
?
Точно. Возможно, вам придется сделать то же самое для BUILD_URL
Это две разные ошибки.
Первый вызван разницей между одинарными и двойными кавычками в Groovy, которые хорошо описаны в разделе Интерполяция строк документации Jenkins.
Второе, очевидно, означает, что у вас не определена переменная BUILD_STATUS
. Это может зависеть от типа конвейера и версии Jenkins, но я бы рекомендовал проверить несколько вещей:
BUILD_URL
, вам нужно использовать переменную Groovy currentBuild.result
или что-то в этом роде;${env.VARIABLE_NAME}
, потому что тогда это будет переменная Groovy - ${VARIABLE_NAME}
может не быть определена в этом контексте просто потому, что это не команда оболочки. В обычных и многоветвевых конвейерах это работает по-разному, поэтому без подробностей невозможно предложить точное решение.Учитывая это, я бы попробовал следующее:
emailext([
attachmentsPattern: '**/build/*.log',
subject: 'Hello World',
recipientProviders: [developers(), requestor()],
to: $DEFAULT_RECIPIENTS,
body: """
<p>Test summary:</p>
<ul>
<li><a href = "${env.BUILD_URL}">Status: ${currentBuild.result}</a></li>
<li><a href = "${env.BUILD_URL}/flowGraphTable">Executed steps</a></li>
<li><a href = "${env.BUILD_URL}/parsed_console">Errors and warnings</a></li>
<li>Test results:</li>
${testResults}
</ul>
""",
mimeType: 'text/html'
])
@tail Я добавил фрагмент кода, возможно, это поможет.
Это работает. Просто используйте ${currentBuild.currentResult}
вместо ${currentBuild.result}
Ваша вторая попытка - правильный подход, просто похоже, что параметр
BUILD_STATUS
не определен в вашем конвейере и, следовательно, ошибка. Какую версию Дженкинса вы используете? посколькуBUILD_STATUS
доступен только начиная с версии 2.263.2, если вы используете более старую версию, попробуйте использоватьcurrentBuild.currentResult
.