[ https://issues.jenkins-ci.org/browse/JENKINS-13466?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
gbois updated JENKINS-13466: ---------------------------- Assignee: gbois (was: Frédéric Camblor) Component/s: core envinject (was: scm-sync-configuration) > Custom environment variables not available when build started by an SCM change > ------------------------------------------------------------------------------ > > Key: JENKINS-13466 > URL: https://issues.jenkins-ci.org/browse/JENKINS-13466 > Project: Jenkins > Issue Type: Bug > Components: core, envinject > Environment: not applicable > Reporter: Robin Jarry > Assignee: gbois > Attachments: custom-env-master.jpg, custom-env-slave.jpg > > > Hi there, > I may have found a sneaky bug. Custom environment variables can be defined by > the user into the general & nodes config: > !custom-env-master.jpg! > !custom-env-slave.jpg! > When a build is triggered by an SCM change, those variables are not available > for SCM plugins. > Let's say that I have a field in my SCM plugin configured with this value: > *$\{JOB_NAME\}\_$\{HOSTNAME}\_$\{NODE_TYPE\}* If the build is triggered by an > SCM change I get this error: > {code} > Started by an SCM change > Building remotely on vmo426 > [ClearCase] ### Begin source code retrieval ### > cleartool error: Illegal characters found in view name : ${NODE_TYPE}. An > environment variable may have not been resolved. > Finished: FAILURE > {code} > Here is the code snipet from my plugin that does that: > {code:Java} > @Override > public boolean checkout(AbstractBuild build, Launcher launcher, FilePath > workspace, > BuildListener listener, File changelogFile) throws IOException, > InterruptedException > { > try { > logger.log("### Begin source code retrieval ###"); > String resolvedViewName = > build.getEnvironment(listener).expand(this.viewName); > > Pattern pattern = Pattern.compile("(\\$\\{.+?\\})"); > Matcher matcher = pattern.matcher(resolvedViewName); > if (matcher.find()) { > String message = "Illegal characters found in view name : %s. " + > "An environment variable may have not been resolved."; > throw new ClearToolError(String.format(message, matcher.group())); > } > {code} > I removed *$\{NODE_TYPE\}* from my SCM configuration to let the build > continue. And the user custom environment variables seem to be injected into > the build environment after the SCM checkout. > {code} > Started by an SCM change > Building remotely on vmo426 > [ClearCase] ### Begin source code retrieval ### > ... > [ClearCase] === End source code retrieval === > [polling_linux] $ /bin/sh -xe /tmp/hudson7589128551511062241.sh > + env > ... > NODE_TYPE=SLAVE > ... > {code} > Could this be fixed? :) -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.jenkins-ci.org/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira