• Icon: Improvement Improvement
    • Resolution: Fixed
    • Icon: Major Major
    • core

      We are using $JOB_NAME a lot to automatically create names für ClearCase views in our jobs. This looks like

      ${USER_NAME}${COMPUTERNAME}${JOB_NAME} for the view tag and
      ${JOB_NAME} for the view name.

      Additionaly we ha a small managed script to automatically create a build tag:
      echo %BUILD_TAG% > %CLEARCASE_VIEWPATH%%JOB_NAME%-build.tag

      When a Job is now moved into a folder the JOB-NAME is "foldername/jobname" which is longer and contains a slash causing real pain on windows.

      I don't know if someone is relying on JOB_NAME containing the folder name and the slash, but would it be possible to separate this into two variables like FOLDER_NAME and (SHORT_)JOB_NAME?

          [JENKINS-25164] Provide a short $JOB_NAME inside a folder

          Jesse Glick added a comment -

          This is a duplicate of something but do not have time to look it up now. Anyway component should be core, with label folders.

          Jesse Glick added a comment - This is a duplicate of something but do not have time to look it up now. Anyway component should be core , with label folders .

          Dirk Kuypers added a comment -

          Thanks Jesse, I changed the component and added the label but I am not able to find the related Issue. Too dumb to search...

          Dirk Kuypers added a comment - Thanks Jesse, I changed the component and added the label but I am not able to find the related Issue. Too dumb to search...

          Jesse Glick added a comment -

          Well maybe it was not already filed. Perhaps was just discussed somewhere else.

          Jesse Glick added a comment - Well maybe it was not already filed. Perhaps was just discussed somewhere else.

          Groovy Script that can be used. This will pull only the last portion of the job name and create a new environment variable.

          JOBNAME = build.getEnvironment(null)["JOB_NAME"]
          def match = JOBNAME =~ /.*\/(.*)/
          if (match) { 
          	e = new hudson.EnvVars()
          	e.put('SHORT_JOB_NAME', match[0][1])
          	build.environments.add(hudson.model.Environment.create(e))
          }
          

          Walter Kacynski added a comment - Groovy Script that can be used. This will pull only the last portion of the job name and create a new environment variable. JOBNAME = build.getEnvironment( null )[ "JOB_NAME" ] def match = JOBNAME =~ /.*\/(.*)/ if (match) { e = new hudson.EnvVars() e.put( 'SHORT_JOB_NAME' , match[0][1]) build.environments.add(hudson.model.Environment.create(e)) }

          Jesse Glick added a comment -

          Workaround inside (Unix) shell steps is

          ${JOB_NAME##*/}
          

          But not available in other contexts.

          Could be done easily as an EnvironmentContributor (even added to top-level jobs for the sake of consistency). Do not forget the buildEnv.jelly for documentation.

          Jesse Glick added a comment - Workaround inside (Unix) shell steps is ${JOB_NAME##*/} But not available in other contexts. Could be done easily as an EnvironmentContributor (even added to top-level jobs for the sake of consistency). Do not forget the buildEnv.jelly for documentation.

          The EnvInject plugin gives access to currentJob instance and therefore it is possible to inject the "short" job name like this:

          return ['ITEM_NAME': currentJob.getName()]
          

          Allan BURDAJEWICZ added a comment - The EnvInject plugin gives access to currentJob instance and therefore it is possible to inject the "short" job name like this: return [ 'ITEM_NAME' : currentJob.getName()]

          James Nord added a comment -

          It should be trivial to implement this in a plugin. see buildtagfixer for an approach that fixed the BUILD_TAG environment variable to contain the full job name when folders where first introduced.

          James Nord added a comment - It should be trivial to implement this in a plugin. see buildtagfixer for an approach that fixed the BUILD_TAG environment variable to contain the full job name when folders where first introduced.

          Code changed in jenkins
          User: Felix Belzunce Arcos
          Path:
          core/src/main/java/hudson/model/Job.java
          core/src/main/resources/jenkins/model/CoreEnvironmentContributor/buildEnv.groovy
          core/src/main/resources/jenkins/model/CoreEnvironmentContributor/buildEnv.properties
          http://jenkins-ci.org/commit/jenkins/4bab3630efcc2fa331db2989e321d9af1b8cdc1c
          Log:
          [FIXED JENKINS-25164] Add JOB_BASE_NAME env var (#2321)

          • Delete strip off

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Felix Belzunce Arcos Path: core/src/main/java/hudson/model/Job.java core/src/main/resources/jenkins/model/CoreEnvironmentContributor/buildEnv.groovy core/src/main/resources/jenkins/model/CoreEnvironmentContributor/buildEnv.properties http://jenkins-ci.org/commit/jenkins/4bab3630efcc2fa331db2989e321d9af1b8cdc1c Log: [FIXED JENKINS-25164] Add JOB_BASE_NAME env var (#2321) JENKINS-25164 Add SHORT_JOB_NAME env var Delete strip off JENKINS-25164 Change SHORT_JOB_NAME for LEAF_JOB_NAME JENKINS-25164 Change LEAF_JOB_NAME for JOB_BASE_NAME

          Oleg Nenashev added a comment -

          Released as Jenkins-2.4

          Oleg Nenashev added a comment - Released as Jenkins-2.4

          Sverre Moe added a comment -

          Not sure if it is intentional
          With Jenkins pipeline the JOB_BASE_NAME is same as BRANCH_NAME instead of the actual project name.
          BRANCH_NAME=master
          JOB_NAME=projectA/master
          JOB_BASE_NAME=master

          The value for JOB_BASE_NAME should be in this case projectA.

          Sverre Moe added a comment - Not sure if it is intentional With Jenkins pipeline the JOB_BASE_NAME is same as BRANCH_NAME instead of the actual project name. BRANCH_NAME=master JOB_NAME=projectA/master JOB_BASE_NAME=master The value for JOB_BASE_NAME should be in this case projectA.

            fbelzunc Félix Belzunce Arcos
            bruce Dirk Kuypers
            Votes:
            2 Vote for this issue
            Watchers:
            9 Start watching this issue

              Created:
              Updated:
              Resolved: