From b7889e41728fce3661f8be5841e6f55fb09af163 Mon Sep 17 00:00:00 2001 From: runzexia Date: Wed, 8 May 2019 14:41:55 +0800 Subject: [PATCH] jenkins init Signed-off-by: runzexia --- pkg/apis/devops/v1alpha2/register.go | 6 +-- pkg/simple/client/admin_jenkins/jenkins.go | 53 +++++++++++----------- 2 files changed, 30 insertions(+), 29 deletions(-) diff --git a/pkg/apis/devops/v1alpha2/register.go b/pkg/apis/devops/v1alpha2/register.go index 7e4cfef8c..f1aa540d6 100644 --- a/pkg/apis/devops/v1alpha2/register.go +++ b/pkg/apis/devops/v1alpha2/register.go @@ -590,7 +590,7 @@ func addWebService(c *restful.Container) error { Param(webservice.QueryParameter("limit", "limit count"). Required(false). DataFormat("limit=%d")). - Returns(http.StatusOK, RespOK,[]devops.NodeSteps{}). + Returns(http.StatusOK, RespOK, []devops.NodeSteps{}). Writes([]devops.NodeSteps{})) // match /pipeline-model-converter/toJenkinsfile @@ -601,7 +601,7 @@ func addWebService(c *restful.Container) error { Produces("application/json", "charset=utf-8"). Doc("Json to Jenkinsfile."). Reads(devops.ReqJson{}). - Returns(http.StatusOK, RespOK,devops.NodeSteps{}). + Returns(http.StatusOK, RespOK, devops.NodeSteps{}). Writes(devops.ResJenkinsfile{})) // match /pipeline-model-converter/toJson @@ -612,7 +612,7 @@ func addWebService(c *restful.Container) error { Produces("application/json", "charset=utf-8"). Doc("Jenkinsfile to Json."). Reads(devops.ReqJenkinsfile{}). - Returns(http.StatusOK, RespOK,devops.ResJson{}). + Returns(http.StatusOK, RespOK, devops.ResJson{}). Writes(devops.ResJson{})) // match /git/notifyCommit/?url= diff --git a/pkg/simple/client/admin_jenkins/jenkins.go b/pkg/simple/client/admin_jenkins/jenkins.go index cd147b5ba..13e6e6f27 100644 --- a/pkg/simple/client/admin_jenkins/jenkins.go +++ b/pkg/simple/client/admin_jenkins/jenkins.go @@ -21,7 +21,7 @@ import ( ) var ( - jenkinsClientOnce sync.Once + jenkinsInitMutex sync.Mutex jenkinsClient *gojenkins.Jenkins jenkinsAdminAddress string jenkinsAdminUsername string @@ -41,35 +41,36 @@ func init() { } func Client() *gojenkins.Jenkins { - jenkinsClientOnce.Do(func() { - jenkins := gojenkins.CreateJenkins(nil, jenkinsAdminAddress, jenkinsMaxConn, jenkinsAdminUsername, jenkinsAdminPassword) - jenkins, err := jenkins.Init() - if err != nil { - glog.Error("failed to connect jenkins") - return - } - jenkinsClient = jenkins - globalRole, err := jenkins.GetGlobalRole(JenkinsAllUserRoleName) - if err != nil { - glog.Error("failed to get jenkins role") - } - if globalRole == nil { - _, err := jenkins.AddGlobalRole(JenkinsAllUserRoleName, gojenkins.GlobalPermissionIds{ - GlobalRead: true, + if jenkinsClient == nil { + jenkinsInitMutex.Lock() + defer jenkinsInitMutex.Unlock() + if jenkinsClient == nil { + jenkins := gojenkins.CreateJenkins(nil, jenkinsAdminAddress, jenkinsMaxConn, jenkinsAdminUsername, jenkinsAdminPassword) + jenkins, err := jenkins.Init() + if err != nil { + glog.Errorf("failed to connect jenkins, %+v", err) + } + globalRole, err := jenkins.GetGlobalRole(JenkinsAllUserRoleName) + if err != nil { + glog.Errorf("failed to get jenkins role, %+v", err) + } + if globalRole == nil { + _, err := jenkins.AddGlobalRole(JenkinsAllUserRoleName, gojenkins.GlobalPermissionIds{ + GlobalRead: true, + }, true) + if err != nil { + glog.Errorf("failed to create jenkins global role, %+v", err) + } + } + _, err = jenkins.AddProjectRole(JenkinsAllUserRoleName, "\\n\\s*\\r", gojenkins.ProjectPermissionIds{ + SCMTag: true, }, true) if err != nil { - glog.Error("failed to create jenkins global role") - return + glog.Errorf("failed to create jenkins project role, %+v", err) } + jenkinsClient = jenkins } - _, err = jenkins.AddProjectRole(JenkinsAllUserRoleName, "\\n\\s*\\r", gojenkins.ProjectPermissionIds{ - SCMTag: true, - }, true) - if err != nil { - glog.Error("failed to create jenkins project role") - return - } - }) + } return jenkinsClient