6
votes

I am in process of moving configuration parameters out of Java application. I discover that the best approach is to extend your classpath and use .properties files (leave ZooKeeper alone for another requirement).

So my WAR file no longer have any hosts/IPs/URLs, users/passwords.

DevOps distribute configs manually across test, stage, stable installations.

Now time for Jenkins to run tests. But they fail as there are no required .propeties files in classpath.

How can I load this config files to Jenkins and how to make in available in test classpath?

maven-surefire-plugin allow extending classpath and passing system-properties.

So only question how to get separate directory in Jenkins hosting server and load files to this directory and create alias/placeholder/envvar per build job to refer to this path in build config.

This job can be done with SSH access, but I think that this is "wrong way". I expect that this can be done via Jenkins UI (any manager can upload file in WEB browser).

UPDATE I have no requirements for distributed slave/master builds but it whould nice to have solution that migrate configuration files to slaves automatically...

In this way sshing to host or ftp/scp - bad thing.

2

2 Answers

11
votes

I read most of Jenkins docs, ask at mail list and IRC. Yea - Jenkins community is silent. At docs I found link to Config File Provider Plugin, after that I visit http://builder.evil.com/jenkins/pluginManager/available page and look for config keyword.

There are a lot related plug-ins with various usefulness to my subject (most useless first):

Only last plug-in - Config File Provider Plugin allow editing configs via Jenkins WEB interface. And it have brother - Managed Script Plugin - for uploading/managing/editing custom scripts. No question now I use Config File Provider Plugin!

-1
votes

You should keep the configs required for the tests together with the rest of source code, so that after compilation, your unit tests can run.

After deploying the .war, the DevOps team should overwrite the in-war configs with whatever per-environment configs that they have.