From e7ca55e304ed0a9244c243427350a665a1043d5c Mon Sep 17 00:00:00 2001 From: Paul Sokolovsky Date: Thu, 29 Aug 2013 15:12:45 +0300 Subject: Support creating private projects (--private switch). --- utils/cmdline-client/android-build-client | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) (limited to 'utils') diff --git a/utils/cmdline-client/android-build-client b/utils/cmdline-client/android-build-client index 93fe085..9d6ed99 100755 --- a/utils/cmdline-client/android-build-client +++ b/utils/cmdline-client/android-build-client @@ -20,6 +20,15 @@ import optparse import getpass from xml.dom import minidom +PRIVATE_ACL = """\ + + hudson.model.Item.Build:%(group)s + hudson.model.Item.Configure:%(group)s + hudson.model.Item.Read:%(group)s + hudson.model.Item.Cancel:%(group)s + hudson.model.Item.Discover:%(group)s + +""" class Jenkins(object): @@ -106,8 +115,7 @@ def main(): help="File holding Jenkins API key") optparser.add_option("--cred-file", metavar="FILE", help="File holding Jenkins username:API key pair") - optparser.add_option("--really", action="store_true", - help="Actually perform changes") + optparser.add_option("--private", metavar="GROUP", help="Create privaet job accessible to GROUP") options, args = optparser.parse_args(sys.argv[1:]) if len(args) < 1: @@ -137,6 +145,13 @@ def main(): n = nodes[0].getElementsByTagName("defaultValue")[0] build_config = open(args[2]).read() n.childNodes[0].data = base64.encodestring(build_config) + + if options.private: + n = dom.getElementsByTagName("properties")[0] + c = n.getElementsByTagName("hudson.security.AuthorizationMatrixProperty")[0] + acl_dom = minidom.parseString(PRIVATE_ACL % {"group": options.private}) + n.replaceChild(acl_dom.documentElement, c) + job_conf = dom.toxml() jenkins_job = args[1].replace("/", "_") try: -- cgit v1.2.3