Настройка заданий с помощью Artifactory в Jenkins с Jenkins Job DSL

Я пытаюсь настроить Artifactory в задании Jenkins, созданном с помощью Плагин Job DSL.

Конфигурация выглядит так:

  wrappers {
    colorizeOutput 'xterm'
    buildName '#${BUILD_NUMBER}-release'
    artifactoryGenericConfigurator {
      // Repository to deploy to.
      details {
        artifactoryName('artifactory.foo.bar.com')
        artifactoryUrl('https://artifactory.foo.bar.com/artifactory')
        deployReleaseRepository {
          keyFromSelect('')
          keyFromText('')
          dynamicMode(false)
        }
        deploySnapshotRepository {
          keyFromSelect('')
          keyFromText('')
          dynamicMode(false)
        }
        resolveReleaseRepository() {
          keyFromText('')
          keyFromSelect('')
          dynamicMode(false)
        }
        resolveSnapshotRepository() {
          keyFromText('')
          keyFromSelect('')
          dynamicMode(false)
        }
        userPluginKey('')
        userPluginParams('')

        useSpecs(true)
        uploadSpec {
          spec('''{
            "files": [
              {
                  "pattern": "app.tar.gz",
                  "target": "myrepo/app/${BUILD_NUMBER}-release",
                  "flat" : "false"
              }
            ]
          }''')
          filePath(null)
        }
        downloadSpec {
          spec('')
          filePath(null)
        }
      }

      deployPattern('')
      deployBuildInfo(true)
      includeEnvVars(false)
      discardOldBuilds(false)
      discardBuildArtifacts(false)
      multiConfProject(false)
      deployerCredentialsConfig(null)
      resolverCredentialsConfig(null)
      resolverDetails(null)
      resolvePattern(null)
      matrixParams(null)

      envVarsPatterns {
        includePatterns('*')
        excludePatterns('*PASSWORD*,*password*,*secret*,*key*')
      } 
      asyncBuildRetention(false)
      artifactoryCombinationFilter(null)
      customBuildName(null)
      overrideBuildName(false)
    }
  }

Однако эта конфигурация всегда приводит к этой ошибке, что немного сбивает с толку, так как я не знаю, какая часть моей конфигурации здесь неправильная.

FATAL: ни один сервер Artifactory не настроен на null. Пожалуйста, проверьте вашу конфигурацию. java.io.IOException: сервер Artifactory не настроен на null. Пожалуйста, проверьте вашу конфигурацию. в org.jfrog.hudson.util.RepositoriesUtils.validateServerConfig (RepositoriesUtils.java:191) на org.jfrog.hudson.generic.ArtifactoryGenericConfigurator.setUp (ArtifactoryGenericConfigurator.setUp (ArtifactoryGenericConfigurator.setUp (ArtifactoryGenericConfigurator). .java: 157) в hudson.model.AbstractBuild $ AbstractBuildExecution.run (AbstractBuild.java:504) в hudson.model.Run.execute (Run.java:1724) в hudson.model.FreeStyleBuild.run (FreeStyle :Build.java 43) в hudson.model.ResourceController.execute (ResourceController.java:97) в hudson.model.Executor.run (Executor.java:421)

Вот важная деталь: если после создания своего задания я перехожу на страницу конфигурации Jenkins для этого задания и сохраняю конфигурацию, ничего не меняя, тогда эта конфигурация работает. Думаю, я просто использую неправильные значения по умолчанию для всех параметров.

NB: я должен указать все это, поскольку они указаны как "обязательные" в программе просмотра API ... http://enkins/plugin/job-dsl/api-viewer/index.html

Я смотрел исходный код плагина, и хотя я смог найти контекст для своего сообщения об ошибке, я не смог точно диагностировать проблему в моем сценарии DSL.


person Florian Castellane    schedule 26.01.2018    source источник
comment
Вы установили плагин Artifactory в Jenkins и настроили серверы?   -  person Barney    schedule 26.01.2018
comment
Да, я сделал. Фактически, я могу применить ту же конфигурацию вручную и успешно собрать и архивировать в Artifactory в задании Jenkins.   -  person Florian Castellane    schedule 26.01.2018
comment
Вы перешли по этой ссылке: jfrog.com/confluence/display/RTF/   -  person Ariel    schedule 26.01.2018


Ответы (1)


Я просто работаю над примерами Job DSL.

Вам необходимо настроить сервер Artifactory в Конфигурация подключаемого модуля Artifactory. Затем в поле artifactoryName введите идентификатор сервера. artifactoryUrl поле не является обязательным. Все остальные поля, такие как useSpecs, должны находиться за пределами detail области действия.

Если вы хотите настроить репозиторий в своем начальном задании, измените dynamicMode на true.

Наконец, обратите внимание, что здесь нет репозиториев моментальных снимков, поскольку они не поддерживаются в заданиях Artifactory Gradle в Jenkins.

В итоге получится что-то вроде этого:

details { // This is the Artifactory deployer details
    artifactoryName SERVER_ID // The server ID from Artifactory Plugin Configuration
    deployReleaseRepository {
        keyFromText 'libs-release-local' // The deploy release repository
        dynamicMode true // true if you want to use `keyFromText`
    }

} // This is the Artifactory resolver details
resolverDetails {
    artifactoryName SERVER_ID // The server ID from Artifactory Plugin Configuration
    resolveReleaseRepository {
        keyFromText 'libs-release' // The resolve release repository
        dynamicMode true // true if you want to use `keyFromText`
    }
}
useSpecs true
...

Обновление:

в последней версии v2.15.0 мы внесли некоторые изменения, которые немного упростили эту конфигурацию. Например, теперь dymamicMode не нужен. Для получения дополнительной информации обратитесь к нашим примерам проектов < / а>.

person yahavi    schedule 28.01.2018
comment
Просто artifactoryName, необходимый для соответствия конфигурации, которая, кажется, исправила это, спасибо! Это немного вводит в заблуждение, что поле artifactoryUrl не нужно. Репозитории моментальных снимков и так далее (deploySnapshotRepository ) я должен оставить в своей конфигурации (с нулевыми аргументами), потому что, к сожалению, это обязательные параметры ... - person Florian Castellane; 29.01.2018
comment
тот же игрок играет снова после последнего обновления: ERROR: (mybuild.groovy, line 42) the following options are required and must be specified: deployerDetails, deploymentProperties - person Florian Castellane; 18.06.2018