我在Jenkins中有一个多分支管道,使用Jenkinsfile。我让它运行一个Maven作业,然后将工件发送到S3。我想在成功构建后发送一封电子邮件通知,其中包含一个动态指向S3中的工件的链接。我更愿意指出通过S3而不是Jenkins的工件,因为1)这确保了工件被正确地存储在S3中,2)S3具有更长的存储空间。有简单的方法吗?我在想,也许扫描构建的控制台输出的行,工件被上传到S3(见下面的非工作代码,我得到"错误时执行成功post条件";并且没有收到电子邮件),但我是编码/Jenkins的新手,不知道如何通过控制台输出过滤工件。我是不是太复杂了,有没有更简单的方法?和/或你能帮我修复这个代码片段得到这个工作吗?谢谢你!
post {
success {
script {
def file = currentBuild.rawBuild.log
def data = file.filterLine { line ->
line.contains('Uploaded to repo.XXX: s3://XXX-artifacts')
}
emailext (
subject: '$JOB_NAME build',
body: "$JOB_NAME, job $BUILD_ID.n$BUILD_URLnhttps://XXX-artifacts.s3.us-west-2.amazonaws.com" + data,
to: env.EmailList)
}
}
}
我可以使用manager.getLogMatcher
post {
success {
script {
def S3_url = manager.getLogMatcher ("(.*)Uploaded(.*)+s3(.*)+zip(.*)")
if (S3_url.matches()) {
S3_url = S3_url.group(0)
....
}
}
}
}
经理。getLogMatcher搜索控制台输出,在本例中,它查找包含"上载,"s3"one_answers";.zip"。然后,我就可以操纵该结果(这里并没有显示全部结果),以创建变量S3_url作为URL,然后将其包含在电子邮件文本中,以取代"https....com"+ data">