-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathcreate_jenkins_global_env_vars.py
executable file
·59 lines (51 loc) · 1.76 KB
/
create_jenkins_global_env_vars.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#!/usr/bin/env python
import argparse
import configparser
import sys
import os
import ruamel.yaml
yaml = ruamel.yaml.YAML()
kvlist = []
output = {}
envdict = {"env":kvlist}
def dir_path(path):
if os.path.isdir(path):
return path
else:
raise argparse.ArgumentTypeError(f"readable_dir:{path} is not a valid path")
def parse_arguments():
casc_d_dir = "/var/lib/jenkins/casc.d/community.d"
parser = argparse.ArgumentParser(
description='Create jcasc yaml from path to jenkins config dir.')
parser.add_argument('--path', type=dir_path,
help="Path to jenkins-admin directory")
parser.add_argument(
"-s", "--sandbox",
help="Is configuration being created for a sandbox",
dest="sandbox", action = "store_true"
)
parser.add_argument(
"--outputvars",
type=argparse.FileType("w"),
default="{}/jenkins_global_envvars.yaml".format(casc_d_dir),
help="Optional custom location for jenkins_global_envvars.yaml",
)
return parser.parse_args()
def global_vars(global_var_file):
with open(global_var_file) as myfile:
for line in myfile:
name, var = line.partition("=")[::2]
varstripped = var.strip()
kvlist.append({"key": name, "value": varstripped})
output.update({'jenkins':
{'globalNodeProperties':
[{'envVars':envdict}]
}
})
yaml.dump(output, parsed_args.outputvars)
parsed_args = parse_arguments()
path = (parsed_args.path)
global_var_file = ("{}/global-vars-production.sh".format(parsed_args.path))
if parsed_args.sandbox:
global_var_file = ("{}/global-vars-sandbox.sh".format(parsed_args.path))
global_vars(global_var_file)