我们使用 Jenkins,将人工制品和构建信息发布到 Artifactory,然后进行 X 射线扫描。我们发现的问题是,我们似乎只获得了工件的某些内部版本号的 X 射线“组件”报告。没有错误,除了报告似乎不在 Xray 中(通过“组件”搜索并使用 Artefact 名称时)。
例如,如果人工制品是 hellofred::develop::55,那么我们可能会进行 X 射线扫描(如下所示),并且该人工制品的报告确实存在于 X 射线中。但是,当我们从 Jenkins 进行另一个构建时(没有更改代码,而是重新构建、部署和扫描),我们看到一切都成功了,并且没有看到任何错误。但是,我们在 Xray 中看不到 hellofred::develop::56。它仍然说最新的是55!解决问题的最佳方法是什么?
作为标准,我们使用 Jenkins JFrog 插件代码来进行 X 射线扫描。例如,我们的管道代码看起来像......
def scanConfig = [
'buildName': script.artifactoryBuildInfo.name,
'buildNumber': script.artifactoryBuildInfo.number,
'failBuild' : true
]
def scanResult = artifactory.xrayScan scanConfig
该报告中的 Jenkins 控制台输出示例甚至向我们显示了指向 hellofred::develop::56 的链接的 URL,但是当我们单击它时,它会将我们带到最新的 hellofred::develop::55。(这是因为似乎没有 56 的报告) 例如。Jenkins 控制台输出的一些摘录是:
11:03:31 [Pipeline] }
11:03:31 [Pipeline] // stage
11:03:31 [Pipeline] stage (hide)
11:03:31 [Pipeline] { (Xray scan) (hide)
11:03:31 [Pipeline] echo (hide)
11:03:31 Xray scan: true
11:03:31 [Pipeline] xrayScanBuild (hide)
11:03:40 Build hellofred:: develop number 56 was scanned by Xray and passed with no Alerts
11:03:40 Xray scan details are available at: http://xray-1.blah.blah:8000/web/#/component/details/build:~2F~2Fhellofred%20::%20develop%2F56
11:03:40 [Pipeline] echo (hide)
11:03:40 XRAY failed: SUCCESS
11:03:40 [Pipeline] echo (hide)
11:03:40 {
11:03:40 "summary" : {
11:03:40 "message" : "Build hellofred :: develop number 56 was scanned by Xray and passed with no Alerts",
11:03:40 "total_alerts" : 0,
11:03:40 "fail_build" : false,
11:03:40 "more_details_url" : "http://xray-1.blah.blah:8000/web/#/component/details/build:~2F~2Fhellofred%20::%20develop%2F56”
11:03:40 },
11:03:40 "alerts" : [ ],
11:03:40 "licenses" : [ {
11:03:40 "name" : "Unknown",
11:03:40 "components" : [etc blah blah blah],
11:03:40 "full_name" : "Unknown license"
11:03:40 }, {
11:03:40 "name" : "Apache-2.0",
11:03:40 "components" : [ "gav://org.apache.logging.log4j:log4j-slf4j-impl:2.11.2", "gav://org.mongodb:mongodb-driver:3.8.2",