В JFrog Xray отсутствуют отчеты о компонентах для последних сборок артефакта - PullRequest
0 голосов
/ 05 июля 2019

Мы используем Jenkins, публикуем артефакты и собираем информацию в Artifactory, а затем проводим сканирование рентгеновских лучей.Проблема, которую мы находим, состоит в том, что мы, кажется, получаем отчеты «Компонент» Xray только для определенных номеров сборки артефакта.Ошибок нет, за исключением того, что отчет, похоже, не представлен в Xray (при поиске через «Компоненты» и с использованием имени Артефакта).

Например, если артефакт был hellofred :: develop ::55, тогда мы могли бы выполнить сканирование рентгеновского снимка (как показано ниже), и отчет об этом артефакте действительно есть в рентгеновском снимке.Однако, когда мы делаем другую сборку из Jenkins (без изменений в коде, но с новой сборкой, развертыванием и сканированием), мы видим, что все успешно, и никаких ошибок, которые мы можем видеть.Однако мы не видим hellofred :: develop :: 56 в Xray.Это все еще говорит, что последний 55!Каков наилучший подход к устранению неполадок?

Мы используем код плагина Jenkins JFrog для проведения сканирования рентгеновских снимков, как стандарт.например, наш конвейерный код выглядит примерно так ...

 def scanConfig = [
                        'buildName': script.artifactoryBuildInfo.name,
                        'buildNumber': script.artifactoryBuildInfo.number,
                        'failBuild'  : true
                    ]
                    def scanResult = artifactory.xrayScan scanConfig

В примерах вывода консоли Jenkins из этого отчета даже показан URL-адрес ссылки на hellofred ::velop :: 56, но когда мы нажимаем на нее, это приводит нас к последнему слову, которое чертовски :: разработано :: 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", 

Ответы [ 2 ]

0 голосов
/ 25 июля 2019

Я подтвердил, что мы действительно публикуем buildInfo для Artifactory, как указано выше. Кажется, это очень странная проблема, поскольку она прерывистая.Однако мы всегда замечаем, что поле «ДАТА изменено» для компонента Xray всегда обновляется для отчета, но не обязательно «последний номер сборки».например.Если Дженкинс выполнил сборку № 88 для hello-fred в 15:55 1 августа, мы опубликовали эту информацию в Artifactory, и она действительно существует для hello-fred: сборка № 88. Однако сканирование Xray срабатывает, и, когда мы ищемдля компонента "hello-fred" мы иногда можем увидеть этот последний отчет о сборке, например."hello-fred: 88" с последним номером сборки 88 и "DATE ​​updated" - 15:55 вечера 1 августа.Однако это периодически, и мы часто замечаем, что отчет по этому компоненту в Xray отсутствует.Например, это может быть не обновлено.Последняя сборка является последней.например, может быть "82".Итак, Xray говорит, что последняя сборка - «82» (хотя у нас есть ссылка на явно успешно созданный отчет «88»).Однако поле «ДАТА изменено» всегда корректно обновляется.например.1 августа в 15 часов 55 минутМы используем «Пробную лицензию».Так.Не знаете, как лучше всего это устранить?Есть идеи?Кажется, что-то в Xray теряется.например, может быть сообщение в очереди RabbitMq?Это известная ошибка?Или как лучше устранить неполадки?Спасибо

0 голосов
/ 05 июля 2019

Возможно, проблема в том, что вы не публикуете информацию?Позвольте мне поделиться примером сценария конвейера, который делает что-то очень похожее.

node {
    def server = Artifactory.server SERVER_ID
    def rtGradle = Artifactory.newGradleBuild()
    //Clone example code from GitHub repository
    stage 'Build'
        git url: 'myGitServer', branch: 'myProjectBranch'
    //Configure Artifactory repository to pull/push artifacts
    stage 'Artifactory configuration'
        rtGradle.tool = 'gradle-3.5' // Tool name from Jenkins configuration
        rtGradle.deployer repo: 'gradle-release', server: server // This is where I deploy to
        rtGradle.resolver repo:'libs-release', server: server
        rtGradle.deployer.addProperty("unit-test", "pass").addProperty("qa-team", "platform", "ui")
        def buildInfo = Artifactory.newBuildInfo() // This is where the initial BuildInfo is created
        buildInfo.env.capture = true // This is where all environment data is captured
    //Run gradle build
    stage 'Exec Gradle'
        sh 'rm -rf ~/.gradle/caches'
        rtGradle.run rootDir: "gradle-examples/4/gradle-example-ci-server/", buildFile: 'build.gradle', tasks: 'clean artifactoryPublish', buildInfo: buildInfo
    //Publish artifacts to Artifactory along with build information and scan build artifacts in Xray
    stage 'Publish Build Information & Scan Artifacts'
        server.publishBuildInfo buildInfo // This is where BuildInfo is published
            def scanConfig = [
                'buildName'      : env.JOB_NAME,
                'buildNumber'    : env.BUILD_NUMBER,
                'failBuild'      : true
            ]
            def scanResult = server.xrayScan scanConfig
            echo scanResult as String
}
...