-
Improvement
-
Resolution: Unresolved
-
Minor
-
None
We recently upgraded our production Jenkins servers to the latest LTS version, including the latest versions of all plugins. As part of that upgrade I was excited to see that the Artifactory plugin now supports the Job DSL plugin via the auto-generated API. However, I was disappointed to see that for some reason every single configurable parameter of the Artifactory plugin is now mandatory and must be defined and set to some valid value even when many of them may not be necessary.
For example, to set up a simple generic deployment that uploads some g-zip binaries to Artifactory you need the following DSL snippet:
artifactoryGenericConfigurator { details { artifactoryName('myserver') artifactoryUrl('http://myserver') deployReleaseRepository { keyFromText('') keyFromSelect('') dynamicMode(true) } deploySnapshotRepository { keyFromText('') keyFromSelect('') dynamicMode(false) } resolveReleaseRepository { keyFromText('') keyFromSelect('') dynamicMode(false) } resolveSnapshotRepository { keyFromText('') keyFromSelect('') dynamicMode(false) } userPluginKey('') userPluginParams('') } resolverDetails{ artifactoryName('myserver') artifactoryUrl('http://myserver') deployReleaseRepository { keyFromText('') keyFromSelect('') dynamicMode(true) } deploySnapshotRepository { keyFromText('') keyFromSelect('') dynamicMode(false) } resolveReleaseRepository { keyFromText('') keyFromSelect('') dynamicMode(false) } resolveSnapshotRepository { keyFromText('') keyFromSelect('') dynamicMode(false) } userPluginKey('') userPluginParams('') } deployerCredentialsConfig{ username('') password('') credentialsId('') overridingCredentials(false) } resolverCredentialsConfig{ username('') password('') credentialsId('') overridingCredentials(false) } deployPattern('') resolvePattern('') matrixParams('') useSpecs(true) uploadSpec { spec(''' { "files": [ { "pattern": "*.gz", "target": "myrepo/myfolder" } ] }''') filePath('') } downloadSpec { filePath('') spec('') } deployBuildInfo(true) includeEnvVars(false) envVarsPatterns { includePatterns('') excludePatterns('') } discardOldBuilds(false) discardBuildArtifacts(false) multiConfProject(false) artifactoryCombinationFilter('') customBuildName('') overrideBuildName(false) }
From this example, the only bits that are really relevant are as follows:
artifactoryGenericConfigurator { details { artifactoryName('myserver') artifactoryUrl('http://myserver') } useSpecs(true) uploadSpec { spec(''' { "files": [ { "pattern": "*.gz", "target": "myrepo/myfolder" } ] }''') } deployBuildInfo(true) }
What I would like to see is most of these fields to be set as optional so you aren't required to define all of these superfluous configuration options, setting reasonable defaults for those that may be necessary for the configuration to be functional.
- relates to
-
JENKINS-45158 Unable to create spec-based Artifactory publisher via Job DSL
-
- Open
-
This request is also discussed in the following issue:
https://www.jfrog.com/jira/browse/HAP-968