Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-45156

Set sensible defaults for artifactory plugin in job DSL

    • Icon: Improvement Improvement
    • Resolution: Unresolved
    • Icon: Minor Minor
    • artifactory-plugin
    • 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.

          [JENKINS-45156] Set sensible defaults for artifactory plugin in job DSL

          This request is also discussed in the following issue:
          https://www.jfrog.com/jira/browse/HAP-968

          Eyal Ben Moshe added a comment - This request is also discussed in the following issue: https://www.jfrog.com/jira/browse/HAP-968

            eyalbe Eyal Ben Moshe
            leedega Kevin Phillips
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated: