From 1d304bc19ff6392fa0eedecf0b4cf3fb173581bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E8=B6=85=E8=B6=8A?= Date: Thu, 17 Feb 2022 17:40:07 +0800 Subject: [PATCH] WIP issue #80 gitea support --- go.mod | 2 +- go.sum | 2 ++ internal/core/apps/gitapp.go | 28 ++++++++++++---- internal/core/apps/repo.go | 2 +- .../views/project/detail/ProjectAppAdd.vue | 33 ++++++++++--------- 5 files changed, 42 insertions(+), 25 deletions(-) diff --git a/go.mod b/go.mod index e50737e..ecf5ed7 100644 --- a/go.mod +++ b/go.mod @@ -37,7 +37,7 @@ require ( github.com/casbin/casbin/v2 v2.37.4 github.com/colynn/go-ldap-client/v3 v3.0.0-20201016034829-4c1455a490de github.com/dgrijalva/jwt-go v3.2.0+incompatible - github.com/drone/go-scm v1.18.0 + github.com/drone/go-scm v1.19.0 github.com/ghodss/yaml v1.0.0 github.com/go-atomci/workflow v0.0.0-20211126090842-208f180b47ab github.com/go-gomail/gomail v0.0.0-20160411212932-81ebce5c23df diff --git a/go.sum b/go.sum index 04f1bb8..3855012 100644 --- a/go.sum +++ b/go.sum @@ -188,6 +188,8 @@ github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96 h1:cenwrSVm+Z7QL github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= github.com/drone/go-scm v1.18.0 h1:VU6C6r2Hxf5FZUjTazCH2xlXBe21JDg7gBcJvsL7twk= github.com/drone/go-scm v1.18.0/go.mod h1:DFIJJjhMj0TSXPz+0ni4nyZ9gtTtC40Vh/TGRugtyWw= +github.com/drone/go-scm v1.19.0 h1:JB/Rln0fBH1y2ENYj4Rr8T+CLfaFOa32KCb7brx/sHY= +github.com/drone/go-scm v1.19.0/go.mod h1:DFIJJjhMj0TSXPz+0ni4nyZ9gtTtC40Vh/TGRugtyWw= github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/edsrzf/mmap-go v0.0.0-20170320065105-0bce6a688712/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= diff --git a/internal/core/apps/gitapp.go b/internal/core/apps/gitapp.go index 16fb059..d8eb3c9 100644 --- a/internal/core/apps/gitapp.go +++ b/internal/core/apps/gitapp.go @@ -19,6 +19,7 @@ package apps import ( "context" "fmt" + "github.com/drone/go-scm/scm/driver/gitea" "net/http" "strings" @@ -39,9 +40,9 @@ func NewScmProvider(vcsType, vcsPath, token string) (*scm.Client, error) { var err error var client *scm.Client switch strings.ToLower(vcsType) { - case "gitlab": + case "gitea", "gitlab": if strings.HasSuffix(vcsPath, ".git") { - vcsPath = strings.Replace(vcsPath, ".git", "", -1) + vcsPath = strings.TrimSuffix(vcsPath, ".git") } // TODO: verify vcsPath, only support http, do not support git@gitlab.com:/dddd.git projectPathSplit := strings.Split(strings.Split(vcsPath, "://")[1], "/") @@ -49,11 +50,23 @@ func NewScmProvider(vcsType, vcsPath, token string) (*scm.Client, error) { log.Log.Debug("git projectpathsplit: %s,\tprojectName: %s", projectPathSplit, projectName) schema := strings.Split(vcsPath, "://")[0] - client, err = gitlab.New(schema + "://" + projectPathSplit[0]) - client.Client = &http.Client{ - Transport: &transport.PrivateToken{ - Token: token, - }, + gitRepo := strings.ToLower(vcsType) + + if "gitea" == gitRepo { + client, err = gitea.New(schema + "://" + projectPathSplit[0]) + client.Client = &http.Client{ + Transport: &transport.BearerToken{ + Token: token, + }, + } + } else { + client, err = gitlab.New(schema + "://" + projectPathSplit[0]) + + client.Client = &http.Client{ + Transport: &transport.PrivateToken{ + Token: token, + }, + } } case "github": client = github.NewDefault() @@ -72,6 +85,7 @@ func NewScmProvider(vcsType, vcsPath, token string) (*scm.Client, error) { Token: token, }, } + default: err = fmt.Errorf("source code management system not configured") } diff --git a/internal/core/apps/repo.go b/internal/core/apps/repo.go index 5f5dd8a..f321358 100644 --- a/internal/core/apps/repo.go +++ b/internal/core/apps/repo.go @@ -54,7 +54,7 @@ func (manager *AppManager) AppBranches(appID int64, filter *query.FilterQuery) ( func (manager *AppManager) GetRepos(projectID int64) ([]*RepoServerRsp, error) { repos := []*models.RepoServer{} // TODO: support code repository defined, - defaultRepos := []string{"gitlab", "github", "gitee"} + defaultRepos := []string{"gitlab", "github", "gitee", "gitea"} // defaultRepos := []string{"gitlab"} for _, item := range defaultRepos { _, err := manager.gitAppModel.GetRepoBycIDAndType(projectID, item) diff --git a/web/src/views/project/detail/ProjectAppAdd.vue b/web/src/views/project/detail/ProjectAppAdd.vue index 8310744..8ba2029 100644 --- a/web/src/views/project/detail/ProjectAppAdd.vue +++ b/web/src/views/project/detail/ProjectAppAdd.vue @@ -2,7 +2,7 @@