diff --git a/go.mod b/go.mod index 89bb077eebb8da9484a9f81557366ab3c95017d4..4cdd9a6a1a488e746572c4ed7ef9bfedb6405491 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module gitee.com/openeuler/ci-bot go 1.13 require ( - gitee.com/openeuler/go-gitee v0.0.0-20191128020051-2ace5809b3f9 + gitee.com/openeuler/go-gitee v0.0.0-20191209072105-b1105b99c89c github.com/antihax/optional v1.0.0 github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b github.com/golang/protobuf v1.3.2 // indirect diff --git a/go.sum b/go.sum index 919869212b2bb6f50e6176ee064e214c98e45667..16d1748ceab9a34b84366130cfa0fd0483875d0c 100644 --- a/go.sum +++ b/go.sum @@ -2,8 +2,8 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMT cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.37.4 h1:glPeL3BQJsbF6aIIYfZizMwc5LTYz250bDMjttbBGAU= cloud.google.com/go v0.37.4/go.mod h1:NHPJ89PdicEuT9hdPXMROBD91xc5uRDxsMtSB16k7hw= -gitee.com/openeuler/go-gitee v0.0.0-20191128020051-2ace5809b3f9 h1:Xq+N6tbSQYXg1PjR6ANloKusImBdXEc7f9n2CkwKoKM= -gitee.com/openeuler/go-gitee v0.0.0-20191128020051-2ace5809b3f9/go.mod h1:TQrS/LP/DFXLqM+lVrZd4nL2pbTrqiXABGT9PJepVTA= +gitee.com/openeuler/go-gitee v0.0.0-20191209072105-b1105b99c89c h1:i23w7TchKv3MgO1sUaqGTIPqn6yFs+qGrx/4/bABxmc= +gitee.com/openeuler/go-gitee v0.0.0-20191209072105-b1105b99c89c/go.mod h1:TQrS/LP/DFXLqM+lVrZd4nL2pbTrqiXABGT9PJepVTA= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= diff --git a/pkg/cibot/inithandler.go b/pkg/cibot/inithandler.go index 3a3324deb042d0875304610c1911f7e6cdedaa71..702663a0ecd09d414505eecc85a89df5e6407fd8 100644 --- a/pkg/cibot/inithandler.go +++ b/pkg/cibot/inithandler.go @@ -244,7 +244,13 @@ func (handler *InitHandler) watch() { // handle branches err = handler.handleBranches(ps.Community, ps.Repositories[i]) if err != nil { - glog.Error("failed to handle branches: %v", err) + glog.Errorf("failed to handle branches: %v", err) + result = false + } + // handle repository type + err = handler.handleRepositoryTypes(ps.Community, ps.Repositories[i]) + if err != nil { + glog.Errorf("failed to handle repository types: %v", err) result = false } } @@ -985,3 +991,58 @@ func (handler *InitHandler) addBranchProtections(c Community, r Repository, mapB return nil } + +// handleRepositoryTypes handles that the repo is private or public +func (handler *InitHandler) handleRepositoryTypes(c Community, r Repository) error { + // get repos from DB + var rs database.Repositories + err := database.DBConnection.Model(&database.Repositories{}). + Where("owner = ? and repo = ?", c.Name, r.Name).First(&rs).Error + if err != nil { + glog.Errorf("unable to get repositories files: %v", err) + return err + } + + // the type is changed + if rs.Type != *r.Type { + // set value + isSetPrivate := false + if *r.Type == "private" { + isSetPrivate = true + } + + // invoke query repository + glog.Infof("begin to query repository: %s", *r.Name) + localVarOptionals := &gitee.GetV5ReposOwnerRepoOpts{} + localVarOptionals.AccessToken = optional.NewString(handler.Config.GiteeToken) + pj, response, _ := handler.GiteeClient.RepositoriesApi.GetV5ReposOwnerRepo( + handler.Context, *c.Name, *r.Name, localVarOptionals) + if response.StatusCode == 404 { + glog.Infof("repository is not exist: %s", *r.Name) + return nil + } + if pj.Private == isSetPrivate { + glog.Infof("repository type is already: %s", *r.Type) + return nil + } + + // build patch repository param + patchBody := gitee.RepoPatchParam{} + patchBody.AccessToken = handler.Config.GiteeToken + patchBody.Name = pj.Name + patchBody.Description = pj.Description + patchBody.Homepage = pj.Homepage + patchBody.HasIssues = pj.HasIssues + patchBody.HasWiki = pj.HasWiki + patchBody.Description = pj.DefaultBranch + patchBody.Private = isSetPrivate + // invoke set type + _, _, err = handler.GiteeClient.RepositoriesApi.PatchV5ReposOwnerRepo(handler.Context, *c.Name, *r.Name, patchBody) + if err != nil { + glog.Errorf("unable to set repository type: %v", err) + return err + } + } + + return nil +} diff --git a/vendor/gitee.com/openeuler/go-gitee/gitee/api_repositories.go b/vendor/gitee.com/openeuler/go-gitee/gitee/api_repositories.go index 272cefe1aee9b2bedaa7aa6ea910bb8d7b3d8db3..c58d4948d299bb6335ba1e3bd3ce22f525f6a8b3 100644 --- a/vendor/gitee.com/openeuler/go-gitee/gitee/api_repositories.go +++ b/vendor/gitee.com/openeuler/go-gitee/gitee/api_repositories.go @@ -3851,30 +3851,11 @@ RepositoriesApiService 更新仓库设置 * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). * @param owner 仓库所属空间地址(企业、组织或个人的地址path) * @param repo 仓库路径(path) - * @param name 仓库名称 - * @param optional nil or *PatchV5ReposOwnerRepoOpts - Optional Parameters: - * @param "AccessToken" (optional.String) - 用户授权码 - * @param "Description" (optional.String) - 仓库描述 - * @param "Homepage" (optional.String) - 主页(eg: https://gitee.com) - * @param "HasIssues" (optional.Bool) - 允许提Issue与否。默认: 允许(true) - * @param "HasWiki" (optional.Bool) - 提供Wiki与否。默认: 提供(true) - * @param "Private" (optional.Bool) - 仓库公开或私有。 - * @param "DefaultBranch" (optional.String) - 更新默认分支 + * @param body repo patch param @return Project */ - -type PatchV5ReposOwnerRepoOpts struct { - AccessToken optional.String - Description optional.String - Homepage optional.String - HasIssues optional.Bool - HasWiki optional.Bool - Private optional.Bool - DefaultBranch optional.String -} - -func (a *RepositoriesApiService) PatchV5ReposOwnerRepo(ctx context.Context, owner string, repo string, name string, localVarOptionals *PatchV5ReposOwnerRepoOpts) (Project, *http.Response, error) { +func (a *RepositoriesApiService) PatchV5ReposOwnerRepo(ctx context.Context, owner string, repo string, body RepoPatchParam) (Project, *http.Response, error) { var ( localVarHttpMethod = strings.ToUpper("Patch") localVarPostBody interface{} @@ -3909,28 +3890,8 @@ func (a *RepositoriesApiService) PatchV5ReposOwnerRepo(ctx context.Context, owne if localVarHttpHeaderAccept != "" { localVarHeaderParams["Accept"] = localVarHttpHeaderAccept } - if localVarOptionals != nil && localVarOptionals.AccessToken.IsSet() { - localVarFormParams.Add("access_token", parameterToString(localVarOptionals.AccessToken.Value(), "")) - } - localVarFormParams.Add("name", parameterToString(name, "")) - if localVarOptionals != nil && localVarOptionals.Description.IsSet() { - localVarFormParams.Add("description", parameterToString(localVarOptionals.Description.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.Homepage.IsSet() { - localVarFormParams.Add("homepage", parameterToString(localVarOptionals.Homepage.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.HasIssues.IsSet() { - localVarFormParams.Add("has_issues", parameterToString(localVarOptionals.HasIssues.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.HasWiki.IsSet() { - localVarFormParams.Add("has_wiki", parameterToString(localVarOptionals.HasWiki.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.Private.IsSet() { - localVarFormParams.Add("private", parameterToString(localVarOptionals.Private.Value(), "")) - } - if localVarOptionals != nil && localVarOptionals.DefaultBranch.IsSet() { - localVarFormParams.Add("default_branch", parameterToString(localVarOptionals.DefaultBranch.Value(), "")) - } + // body params + localVarPostBody = &body r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) if err != nil { return localVarReturnValue, nil, err diff --git a/vendor/gitee.com/openeuler/go-gitee/gitee/model_repo_patch_param.go b/vendor/gitee.com/openeuler/go-gitee/gitee/model_repo_patch_param.go new file mode 100644 index 0000000000000000000000000000000000000000..1b4791dbd3ff5b96f6d8566458313ea2cfb38731 --- /dev/null +++ b/vendor/gitee.com/openeuler/go-gitee/gitee/model_repo_patch_param.go @@ -0,0 +1,30 @@ +/* + * 码云 Open API + * + * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) + * + * API version: 5.3.2 + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package gitee + +// repo patch parameter +type RepoPatchParam struct { + // 用户授权码 + AccessToken string `json:"access_token,omitempty"` + // 仓库名称 + Name string `json:"name,omitempty"` + // 仓库描述 + Description string `json:"description,omitempty"` + // 主页(eg: https://gitee.com) + Homepage string `json:"homepage,omitempty"` + // 允许提Issue与否。默认: 允许(true) + HasIssues bool `json:"has_issues,omitempty"` + // 提供Wiki与否。默认: 提供(true) + HasWiki bool `json:"has_wiki,omitempty"` + // 仓库公开或私有。 + Private bool `json:"private,omitempty"` + // 更新默认分支 + DefaultBranch string `json:"default_branch,omitempty"` +}