From ee1dc3d8db6215ab3c391dbdd72cd8b36cdde207 Mon Sep 17 00:00:00 2001 From: Nightapes Date: Sun, 15 Sep 2019 20:13:17 +0200 Subject: [PATCH] fix(ci): add gitlab ci detection --- .github/workflows/main.yml | 6 +++--- README.md | 5 +++++ go.mod | 2 +- internal/ci/ci.go | 6 ++++-- internal/ci/ci_test.go | 13 +++++++++++++ internal/ci/gitlab_ci.go | 26 ++++++++++++++++++++++++++ 6 files changed, 52 insertions(+), 6 deletions(-) create mode 100644 internal/ci/gitlab_ci.go diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 6d34d3c..e35ca00 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -31,10 +31,10 @@ jobs: run: | go build -o build/go-semantic-release-temp ./cmd/go-semantic-release/ ./build/go-semantic-release-temp next --no-cache --loglevel trace - go build -o build/go-semantic-release -ldflags "-w -s --X main.version=`./build/go-semantic-release-temp next`" ./cmd/go-semantic-release/ - GOOS=windows GOARCH=386 go build -o build/go-semantic-release.exe -ldflags "-w -s -X main.version=`./build/go-semantic-release-temp next`" ./cmd/go-semantic-release/ + GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o build/go-semantic-release -ldflags "-w -s --X main.version=`./build/go-semantic-release-temp next`" ./cmd/go-semantic-release/ + GOOS=windows GOARCH=386 CGO_ENABLED=0 go build -o build/go-semantic-release.exe -ldflags "-w -s -X main.version=`./build/go-semantic-release-temp next`" ./cmd/go-semantic-release/ - name: Release env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: ./build/go-semantic-release-temp release --loglevel trace + run: ./build/go-semantic-release-temp release --loglevel trace \ No newline at end of file diff --git a/README.md b/README.md index 44d80f8..162cebf 100644 --- a/README.md +++ b/README.md @@ -71,6 +71,8 @@ At the moment we support releases to gitlab and github. ##### Github +You need to set the env `GITHUB_TOKEN` with an access token. + ```yml release: 'github' github: @@ -82,6 +84,9 @@ github: ##### Gitlab +You need to set the env `GITLAB_ACCESS_TOKEN` with an personal access token. + + ```yml release: 'gitlab' gitlab: diff --git a/go.mod b/go.mod index 6d9f669..3274316 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/Nightapes/go-semantic-release -go 1.12 +go 1.13 require ( github.com/Masterminds/semver v1.4.2 diff --git a/internal/ci/ci.go b/internal/ci/ci.go index b1b486d..3e21c49 100644 --- a/internal/ci/ci.go +++ b/internal/ci/ci.go @@ -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 } diff --git a/internal/ci/ci_test.go b/internal/ci/ci_test.go index 31ecd0c..57a68e5 100644 --- a/internal/ci/ci_test.go +++ b/internal/ci/ci_test.go @@ -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 { diff --git a/internal/ci/gitlab_ci.go b/internal/ci/gitlab_ci.go new file mode 100644 index 0000000..1b06cc6 --- /dev/null +++ b/internal/ci/gitlab_ci.go @@ -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 +}