使用Jenkins Job DSL在Jenkins中使用Artifactory配置作业

弗洛里安·卡斯泰兰(Florian Castellane)

我试图在由Job DSL插件生成的Jenkins作业中设置Artifactory

配置如下所示:

  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)
    }
  }

但是,此配置始终会导致此错误,这有点令人困惑,因为在此我不知道配置的哪一部分是错误的。

严重:没有将Artifactory服务器配置为null。请检查您的配置。java.io.IOException:没有将Artifactory服务器配置为null。请检查您的配置。在org.jfrog.hudson.generic.ArtifactoryGenericConfigurator.setUp(ArtifactoryGenericConfigurator.java:325)上的org.jfrog.hudson.util.RepositoriesUtils.validateServerConfig(RepositoriesUtils.java:191)在hudson.model.Build $ BuildExecution.doRun( .java:157)在hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:)在hudson.model.Run.execute(Run.java:1724)在hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:在hudson.model.AbstractBuild $ AbstractBuildExecution.run(AbstractBuild.java:504) 43)在hudson.model.ResourceController.execute(ResourceController.java:97)在hudson.model.Executor.run(Executor.java:421)

这是一个重要的细节:如果在生成我的作业之后,我转到该作业的Jenkins配置页面,并保存配置而不更改任何内容,则该配置有效我认为所有选项都使用了错误的默认值。

注意:我必须指定所有这些,因为它们在API Viewer中被列为“强制性” ... http://jenkins.foo.bar.com/plugin/job-dsl/api-viewer/index.html

我一直在寻找插件源代码,虽然我可以找到一些关于错误消息的上下文,但是我无法在DSL脚本中诊断出确切的问题。

雅哈维

我正在研究Job DSL示例。

您需要在Artifactory Plugin Configuration中配置Artifactory服务器然后,在artifactoryName字段中输入服务器ID。artifactoryUrl字段不是必需的。所有其他字段,例如useSpecs应该不在detail范围之内。

如果要在种子作业中配置存储库,请更改dynamicMode为true。

最后,请注意,由于Jenkins的Artifactory Gradle作业不支持快照存储库,因此没有快照存储库。

最后,您将获得以下内容:

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。有关更多信息,请参阅我们的项目示例

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Jenkins Job DSL:在作业步骤中在groovyScript中使用参数

如何使用Job DSL配置Jenkins GitHubPullRequestBuilder插件

Jenkins:使用Job Dsl为github组织配置分支发现

如何在Jenkins中使用Job DSL插件删除脚本?

使用Jenkins Job DSL推送标签

在bat命令中使用Jenkins job参数

使用Pipeline Job和Groovy脚本创建新的Jenkins作业

如何在Jenkins Job DSL插件的上下文中使用共享/通用的常规方法

如何在Jenkins Job DSL中使用带有条件步骤的foreach

将Jenkins xml配置为基于Groovy的Jenkins Job DSL

使用python API创建Jenkins Job

使用REST API获取Jenkins Job的参数?

使用Jenkins Pipeline作业将Jenkins Job的构建状态发布到Gitlab提交

使用 Jenkins Job Builder 将 Jenkins 作业放置在文件夹中

在 Ubuntu 16.04 LTS 上使用 jenkins_job 通过 Ansible 创建 Jenkins 作业失败

从Jenkins Pipeline调用Job DSL

Jenkins Job DSL 不带参数

如何在Jenkins Job Builder中使用`inject-passwords`?

Jenkins Job DSL配置服务器,节点,插件等

使用 groovy 脚本在文件夹内执行 jenkins 作业时如何获取 JOB_NAME?

使用Jenkins Job-DSL Configure模块将自定义步骤放置在特定位置

使用Jenkins中的job DSL插件在子文件夹中创建列表视图

使用Jenkins Job DSL为Git插件设置“轮询忽略某些路径中的提交”

使用带有Jenkins Job DSL插件错误的Grape下载依赖项

Job DSL Configure块可在Jenkins Job中配置声纳属性

指向git repo作为jenkins job dsl job的来源?

Jenkins Job DSL sshAgent无法正常工作

詹金斯·乔布(Jenkins Job)坚持使用磁盘

Jenkins Job DSL Script 用于创建文件夹创建作业