Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

environment variable substitution for config files in /usr/share/jenkins/ref/ #448

Open
jpraet opened this issue Mar 10, 2017 · 3 comments

Comments

@jpraet
Copy link
Contributor

jpraet commented Mar 10, 2017

It would be nice if environment variables (or another placeholder replacement mechanism) could be used for the config files in /usr/share/jenkins/ref/. For example:

hudson.tasks.Mailer.xml:

<?xml version='1.0' encoding='UTF-8'?>
<hudson.tasks.Mailer_-DescriptorImpl plugin="mailer@1.19">
  <hudsonUrl>http://jenkins.example.com/</hudsonUrl>
  <smtpHost>smtp.example.com</smtpHost>
  <useSsl>false</useSsl>
  <charset>UTF-8</charset>
</hudson.tasks.Mailer_-DescriptorImpl>

jenkins.model.JenkinsLocationConfiguration.xml:

<?xml version='1.0' encoding='UTF-8'?>
<jenkins.model.JenkinsLocationConfiguration>
  <adminAddress>no-reply-jenkins@example.com</adminAddress>
  <jenkinsUrl>http://jenkins.example.com/</jenkinsUrl>
</jenkins.model.JenkinsLocationConfiguration>

I would like to provide these default configuration files in /usr/share/jenkins/ref/, but the http://jenkins.example.com/ should be specified dynamically when running the container (e.g. for another instance in a test environment).

So I'd like to be able to write something like
<jenkinsUrl>${JENKINS_URL}</jenkinsUrl>
or maybe with a default value
<jenkinsUrl>${JENKINS_URL-http://jenkins.example.com/}</jenkinsUrl>

and then specify a value at runtime with
docker run -e "JENKINS_URL=http://jenkins-test.example.com/"

What do you think?

@hoshsadiq
Copy link

Alternatively you can using groovy.init.d to configure Jenkins. From here you are able to access environment variables using System.getenv("VARIABLE_NAME"), in your case: System.getenv("JENKINS_URL")

@PriyankaSuchak
Copy link

I have similar requirement, basically I want jenkins container configuration to be different for different Kuberentes project . example: jenkins/sonarqube for one Kuberentes namespace will be having different names vs second namespace (jenkins/sonarqube). However I want to build standard image where based on environment variable I can update hudson.plugins.sonar.SonarGlobalConfiguration.xml
for $SONAR_URL and $TOKEN

if this can be achieved by groovy option, could you explain little more on how to use goovy.init.d

Regards
Priyanka

@ibaldonl
Copy link

ibaldonl commented Jun 5, 2019

I think this is not specific to the container but a more generally useful suggestion.
Some people asked for a similar thing here:
https://issues.jenkins-ci.org/browse/JENKINS-28466?focusedCommentId=283101&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-283101

MarkEWaite added a commit to MarkEWaite/docker that referenced this issue Jun 28, 2022
https://github.com/jenkinsci/plugin-installation-manager-tool/releases/tag/2.12.7
new features:

* Support output format for list option (jenkinsci#448) @cronik

Also includes dependency updates

* Use plugin installation manager tool 2.12.7.
  Can generate a plugins.txt from the contents of a plugins directory.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants