summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSorin Sbarnea <ssbarnea@redhat.com>2017-05-10 11:49:06 +0100
committerSorin Sbarnea <ssbarnea@redhat.com>2018-01-26 14:14:07 +0000
commitb76ed1629d1cda2204b51abb8e1ed8b09ba52d3a (patch)
treebabe60103853a430975fd9123d7bf110b9df05e2
parent92a828de6a6c9698e6e74b61b1873764e54ed2e1 (diff)
downloadpython-jenkins-job-builder-b76ed1629d1cda2204b51abb8e1ed8b09ba52d3a.tar.gz
python-jenkins-job-builder-b76ed1629d1cda2204b51abb8e1ed8b09ba52d3a.tar.xz
python-jenkins-job-builder-b76ed1629d1cda2204b51abb8e1ed8b09ba52d3a.zip
Added option to print job names as urls
Add print_job_urls = True to [job_builder] to enable output as urls instead of simple job names when changing them. Change-Id: I3454606a50ca385c87d8c13d3eab5d30d94cf02f Signed-off-by: Sorin Sbarnea <ssbarnea@redhat.com>
-rw-r--r--doc/source/execution.rst5
-rw-r--r--jenkins_jobs/builder.py14
-rw-r--r--jenkins_jobs/config.py7
3 files changed, 24 insertions, 2 deletions
diff --git a/doc/source/execution.rst b/doc/source/execution.rst
index 1006e818..1a67a8ba 100644
--- a/doc/source/execution.rst
+++ b/doc/source/execution.rst
@@ -52,6 +52,11 @@ job_builder section
string, allowing you to use those strings without having to define all the
keys it might be using.
+**print_job_urls**
+ (Optional) If set to True it will print full jobs urls while updating jobs,
+ so user can be sure which instance was updated. User may click the link to
+ go directly to that job. False by default.
+
jenkins section
^^^^^^^^^^^^^^^
diff --git a/jenkins_jobs/builder.py b/jenkins_jobs/builder.py
index 7626d461..04b73e10 100644
--- a/jenkins_jobs/builder.py
+++ b/jenkins_jobs/builder.py
@@ -104,12 +104,22 @@ class JenkinsManager(object):
self._job_list = set(job['fullname'] for job in self.jobs)
return self._job_list
+ def _job_format(self, job_name):
+ # returns job name or url based on config option
+ if self._jjb_config.builder['print_job_urls']:
+ return self._jjb_config.jenkins['url'] + \
+ '/job/' + '/job/'.join(job_name.split('/'))
+ else:
+ return job_name
+
def update_job(self, job_name, xml):
if self.is_job(job_name):
- logger.info("Reconfiguring jenkins job {0}".format(job_name))
+ logger.info("Reconfiguring jenkins job {0}".format(
+ self._job_format(job_name)))
self.jenkins.reconfig_job(job_name, xml)
else:
- logger.info("Creating jenkins job {0}".format(job_name))
+ logger.info("Creating jenkins job {0}".format(
+ self._job_format(job_name)))
self.jenkins.create_job(job_name, xml)
def is_job(self, job_name):
diff --git a/jenkins_jobs/config.py b/jenkins_jobs/config.py
index 81438e13..7b0c2a1d 100644
--- a/jenkins_jobs/config.py
+++ b/jenkins_jobs/config.py
@@ -126,6 +126,7 @@ class JJBConfig(object):
self.config_parser = config_parser
self._section = config_section
+ self.print_job_urls = False
self.jenkins = defaultdict(None)
self.builder = defaultdict(None)
@@ -214,6 +215,11 @@ class JJBConfig(object):
flush_cache = config.getboolean('job_builder', 'flush_cache')
self.builder['flush_cache'] = flush_cache
+ # check the print_job_urls setting
+ if config.has_option('job_builder', 'print_job_urls'):
+ self.print_job_urls = config.getboolean('job_builder',
+ 'print_job_urls')
+
# Jenkins supports access as an anonymous user, which can be used to
# ensure read-only behaviour when querying the version of plugins
# installed for test mode to generate XML output matching what will be
@@ -263,6 +269,7 @@ class JJBConfig(object):
# The way we want to do things moving forward:
self.jenkins['url'] = config.get(self._section, 'url')
+ self.builder['print_job_urls'] = self.print_job_urls
# keep descriptions ? (used by yamlparser)
keep_desc = False