d47634fc3f
Adds ability to load common params from environment variables: JJB_CONF JJB_LOG_LEVEL JJB_SECTION JJB_USER JJB_PASSWORD Change-Id: Ida786f2e60e4b3e54d739436d0970917a5f93518
103 lines
3.3 KiB
Python
103 lines
3.3 KiB
Python
#!/usr/bin/env python
|
|
# Copyright (C) 2015 Wayne Warren
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# License for the specific language governing permissions and limitations
|
|
# under the License.
|
|
|
|
import argparse
|
|
import os
|
|
|
|
import jenkins_jobs.version
|
|
|
|
from stevedore import extension
|
|
|
|
|
|
def __version__():
|
|
return "Jenkins Job Builder version: %s" % \
|
|
jenkins_jobs.version.version_info.version_string()
|
|
|
|
|
|
def create_parser():
|
|
""" Create an ArgumentParser object usable by JenkinsJobs.
|
|
"""
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument(
|
|
'--conf',
|
|
dest='conf',
|
|
default=os.environ.get('JJB_CONF', None),
|
|
help="configuration file [JJB_CONF]")
|
|
parser.add_argument(
|
|
'-l',
|
|
'--log_level',
|
|
dest='log_level',
|
|
default=os.environ.get('JJB_LOG_LEVEL', 'info'),
|
|
help="log level (default: %(default)s) [JJB_LOG_LEVEL]")
|
|
parser.add_argument(
|
|
'--ignore-cache',
|
|
action='store_true',
|
|
dest='ignore_cache',
|
|
default=None,
|
|
help="ignore the cache and update the jobs anyhow (that will "
|
|
"only flush the specified jobs cache)")
|
|
parser.add_argument(
|
|
'--flush-cache',
|
|
action='store_true',
|
|
dest='flush_cache',
|
|
default=None,
|
|
help="flush all the cache entries before updating")
|
|
parser.add_argument(
|
|
'--version',
|
|
dest='version',
|
|
action='version',
|
|
version=__version__(),
|
|
help="show version")
|
|
parser.add_argument(
|
|
'--allow-empty-variables',
|
|
action='store_true',
|
|
dest='allow_empty_variables',
|
|
default=None,
|
|
help="Don\'t fail if any of the variables inside any string are "
|
|
"not defined, replace with empty string instead.")
|
|
parser.add_argument(
|
|
'--server', '-s',
|
|
dest='section',
|
|
default=os.environ.get('JJB_SECTION', 'jenkins'),
|
|
help="The Jenkins server ini section to use. Defaults to 'jenkins' "
|
|
"[JJB_SECTION]")
|
|
parser.add_argument(
|
|
'--user', '-u',
|
|
default=os.environ.get('JJB_USER', None),
|
|
help="The Jenkins user to use for authentication. This overrides "
|
|
"the user specified in the configuration file. [JJB_USER]")
|
|
parser.add_argument(
|
|
'--password', '-p',
|
|
default=os.environ.get('JJB_PASSWORD', None),
|
|
help="Password or API token to use for authenticating towards Jenkins."
|
|
" This overrides the password specified in the configuration file."
|
|
" [JJB_PASSWORD]")
|
|
|
|
subparser = parser.add_subparsers(
|
|
dest='command',
|
|
help="update, test, list or delete job")
|
|
|
|
extension_manager = extension.ExtensionManager(
|
|
namespace='jjb.cli.subcommands',
|
|
invoke_on_load=True,
|
|
)
|
|
|
|
def parse_subcommand_args(ext, subparser):
|
|
ext.obj.parse_args(subparser)
|
|
|
|
extension_manager.map(parse_subcommand_args, subparser)
|
|
|
|
return parser
|