簡體   English   中英

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

[英]Configuring jobs using Artifactory in Jenkins with Jenkins Job DSL

我試圖在由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(Build .java:157),位於hudson.model.FreeStyleBuild.run(FreeStyleBuild.java: 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。 有關更多信息,請參閱我們的項目示例

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM