Nat*_*han 2 jenkins jenkins-pipeline
我有一个jenkins管道工作,检查3个存储库.
当构建失败时,根据失败的位置,我想向开发人员发送电子邮件,导致上次提交/更改.
我可以使用以下方法检索作者fullNames:
def changeSet = script.currentBuild.changeSets[0];
Set authors = [];
if (changeSet != null) {
for (change in changeSet.items) {
authors.add(change.author.fullName)
}
}
Run Code Online (Sandbox Code Playgroud)
但我无法弄清楚:
在此处查看更多信息: 如何获取当前Jenkins用户在groovy脚本中使用的电子邮件地址
echo 'author email:' + change.author.getProperty(hudson.tasks.Mailer.UserProperty.class).getAddress()
Run Code Online (Sandbox Code Playgroud)
但它需要禁用groovy沙箱:(
可能已将解决方案添加到Jenkins Pipeline共享库中:https://jenkins.io/doc/book/pipeline/shared-libraries/
像这样:
$ cat GetUserEmail.groovy
#!/usr/bin/groovy
def call(body) {
def config = [:]
body.resolveStrategy = Closure.DELEGATE_FIRST
body.delegate = config
body()
def User = config.get('user')
return User.getProperty(hudson.tasks.Mailer.UserProperty.class).getAddress()
}
Run Code Online (Sandbox Code Playgroud)
并使用这样的:
def changeSet = script.currentBuild.changeSets[0];
Set authors = [];
if (changeSet != null) {
for (change in changeSet.items) {
authors.add(GetUserEmail{user=change.author})
}
}
Run Code Online (Sandbox Code Playgroud)
小智 7
您可以获取作者姓名,然后将其用作邮件注册表或类似内容的示例:
def author = ""
def changeSet = currentBuild.rawBuild.changeSets
for (int i = 0; i < changeSet.size(); i++)
{
def entries = changeSet[i].items;
for (int i = 0; i < changeSet.size(); i++)
{
def entries = changeSet[i].items;
def entry = entries[0]
author += "${entry.author}"
}
}
print author;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7038 次 |
| 最近记录: |