You've already forked go-semantic-release
fix(ci): add gitlab ci detection
This commit is contained in:
@@ -3,10 +3,11 @@ package ci
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/Nightapes/go-semantic-release/internal/gitutil"
|
||||
log "github.com/sirupsen/logrus"
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
"github.com/Nightapes/go-semantic-release/internal/gitutil"
|
||||
log "github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
//ProviderConfig struct
|
||||
@@ -43,6 +44,7 @@ func GetCIProvider(gitUtil *gitutil.GitUtil, envs map[string]string) (*ProviderC
|
||||
services := []Service{
|
||||
Travis{},
|
||||
GithubActions{},
|
||||
GitlabCI{},
|
||||
Git{gitUtil: gitUtil}, // GIt must be the last option to check
|
||||
}
|
||||
|
||||
|
||||
@@ -111,6 +111,19 @@ func TestCi(t *testing.T) {
|
||||
result: &ci.ProviderConfig{IsPR: false, PR: "", PRBranch: "", Branch: "feature-branch-1", Tag: "", Commit: "190bfd6aa60022afd0ef830342cfb07e33c45f37", BuildURL: "", Service: "GithubActions", Name: "GithubActions CI"},
|
||||
hasError: false,
|
||||
},
|
||||
{
|
||||
service: "GitLab CI/CD PR",
|
||||
envs: map[string]string{
|
||||
"GITLAB_CI": "true",
|
||||
"CI_COMMIT_SHA": "190bfd6aa60022afd0ef830342cfb07e33c45f37",
|
||||
"CI_COMMIT_REF_NAME": "master",
|
||||
"CI_COMMIT_TAG": "tag",
|
||||
"CI_PROJECT_URL": "https://my.gitlab.com",
|
||||
"CI_PIPELINE_ID": "1",
|
||||
},
|
||||
result: &ci.ProviderConfig{IsPR: false, PR: "", PRBranch: "", Branch: "master", Tag: "tag", Commit: "190bfd6aa60022afd0ef830342cfb07e33c45f37", BuildURL: "https://my.gitlab.com/pipelines/1", Service: "gitlab", Name: "GitLab CI/CD"},
|
||||
hasError: false,
|
||||
},
|
||||
}
|
||||
|
||||
for _, config := range testConfigs {
|
||||
|
||||
26
internal/ci/gitlab_ci.go
Normal file
26
internal/ci/gitlab_ci.go
Normal file
@@ -0,0 +1,26 @@
|
||||
package ci
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
)
|
||||
|
||||
//GitlabCI struct
|
||||
type GitlabCI struct{}
|
||||
|
||||
//Detect if on GitlabCI
|
||||
func (t GitlabCI) detect(envs map[string]string) (*ProviderConfig, error) {
|
||||
|
||||
if _, exists := envs["GITLAB_CI"]; !exists {
|
||||
return nil, fmt.Errorf("not running on gitlab")
|
||||
}
|
||||
|
||||
return &ProviderConfig{
|
||||
Service: "gitlab",
|
||||
Name: "GitLab CI/CD",
|
||||
Commit: envs["CI_COMMIT_SHA"],
|
||||
Tag: envs["CI_COMMIT_TAG"],
|
||||
BuildURL: envs["CI_PROJECT_URL"] + "/pipelines/" + envs["CI_PIPELINE_ID"],
|
||||
Branch: envs["CI_COMMIT_REF_NAME"],
|
||||
IsPR: false,
|
||||
}, nil
|
||||
}
|
||||
Reference in New Issue
Block a user