fix(ci): add gitlab ci detection

This commit is contained in:
Nightapes
2019-09-15 20:13:17 +02:00
parent 38e4c178ee
commit ee1dc3d8db
6 changed files with 52 additions and 6 deletions

View File

@@ -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

View File

@@ -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:

2
go.mod
View File

@@ -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

View File

@@ -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
}

View File

@@ -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
View 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
}