正在尝试获取jenkins管道中当前阶段的控制台输出。我的最终目标是存储此输出,直到构建发布步骤为止,然后通过不和谐通知发出该输出。
```js
stage("Build Javadoc") { steps { script { try { sh script: "cd ${params.PLUGIN} && /opt/gradle/bin/gradle atherysdoc" } catch (Exception e) { exception = e; failureReason = // Get current stage console output? throw e; } } } }
```js
failure {
discordSend webhookURL: "https://discordapp.com/api/webhooks/blahblah",
title: "Build Failure: ${fullPluginName}",
successful: false,
result: 'FAILURE',
link: env.BUILD_URL,
description: "${exception}\n```${failureReason}```"
}
我想要这个的原因是因为仅发出失败的shell命令的异常是结果为hudson.AbortException: script returned exit code 1,这不是很有帮助
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在Jenkins中获取管道中当前阶段的控制台输出并存储以供后续使用,可以通过几个步骤来实现。这里是一个简化的方案,结合了Jenkins Pipeline的脚本指令、插件以及外部服务(如Discord通知)的集成。
在Jenkins Pipeline中,你可以使用tee
命令或者Groovy的脚本块来捕获shell命令的输出。然后,可以将这些输出保存到一个文件或变量中。
stage("Build Javadoc") {
steps {
script {
try {
// 使用tee命令将输出同时打印到控制台和重定向到文件
sh """
cd ${params.PLUGIN}
your_build_command_here | tee ${WORKSPACE}/build_output.txt
"""
// 或者使用Groovy方式捕获输出
def output = sh(script: "cd ${params.PLUGIN} && your_build_command_here", returnStdout: true).trim()
// 然后你可以将$output保存或处理
} catch (err) {
echo "Error during build: ${err}"
currentBuild.result = 'FAILURE'
}
}
}
}
你已经通过上述方法在每个需要的阶段捕获了输出,并可以选择性地将其存储为文件或变量。确保这个数据在后续步骤中是可访问的,比如通过环境变量或直接引用之前定义的变量。
要通过Discord发送通知,你可以使用Jenkins的discord-notifications-plugin
或其他类似插件。如果插件不满足需求,也可以编写自定义脚本来调用Discord的Webhooks。
首先,安装并配置discord-webhook-jenkins-plugin
(如果存在且适用),或者准备一个可以直接调用的Shell/Python脚本来发送Webhook请求。
post {
always {
script {
// 假设你已经有了一个用于发送Discord消息的脚本或命令
discordSend color: 'good', message: "构建完成。\n\n**控制台输出:**\n${output}", webhookUrl: 'YOUR_WEBHOOK_URL_HERE'
// 如果没有插件,可以使用curl或类似的工具直接调用Webhook
// sh "curl -H 'Content-Type: application/json' -X POST -d '{\"content\": \"${output}\"}' YOUR_WEBHOOK_URL_HERE"
}
}
}
请替换YOUR_WEBHOOK_URL_HERE
为你的实际Discord Webhook URL,并根据实际情况调整消息内容格式。
注意:在实际应用中,你需要确保Jenkins服务器能够访问外部网络以发送Webhook请求,并且考虑到安全性,不要在脚本中硬编码敏感信息。