Skip to content

Commit bb2dee3

Browse files
committed
load CI from env vars
1 parent f31c207 commit bb2dee3

File tree

3 files changed

+82
-16
lines changed

3 files changed

+82
-16
lines changed

Diff for: env/ci.go

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package env
2+
3+
import "bytes"
4+
5+
type CI struct {
6+
Name string
7+
BuildID string
8+
BuildURL string
9+
}
10+
11+
func (c CI) String() string {
12+
out := &bytes.Buffer{}
13+
out.WriteString("CI_NAME=")
14+
out.WriteString(c.Name)
15+
out.WriteString("\nCI_BUILD_ID=")
16+
out.WriteString(c.BuildID)
17+
out.WriteString("\nCI_BUILD_URL=")
18+
out.WriteString(c.BuildURL)
19+
return out.String()
20+
}
21+
22+
func loadCIInfo() CI {
23+
return CI{
24+
Name: findVar(ciNameVars),
25+
BuildID: findVar(ciBuildIDVars),
26+
BuildURL: findVar(ciBuildURLVars),
27+
}
28+
}
29+
30+
var ciNameVars = []string{"CI_NAME", "APPVEYOR", "BUILDKITE", "CIRCLECI", "GITLAB_CI", "JENKINS_URL", "SEMAPHORE", "TDDIUM", "TRAVIS", "WERCKER"}
31+
32+
var ciBuildIDVars = []string{"CI_BUILD_ID", "APPVEYOR_BUILD_ID", "BUILDKITE_JOB_ID", "BUILD_NUMBER", "CIRCLE_BUILD_NUM", "CI_BUILD_NUMBER", "SEMAPHORE_BUILD_NUMBER", "TDDIUM_SESSION_ID", "TRAVIS_JOB_ID", "WERCKER_BUILD_ID"}
33+
34+
var ciBuildURLVars = []string{"CI_BUILD_URL", "APPVEYOR_API_URL", "BUILDKITE_BUILD_URL", "BUILD_URL", "CIRCLE_BUILD_NUM", "WERCKER_BUILD_URL"}

Diff for: env/ci_test.go

+47
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package env
2+
3+
import (
4+
"testing"
5+
6+
"github.com/gobuffalo/envy"
7+
"github.com/stretchr/testify/require"
8+
)
9+
10+
func Test_loadCIFromENV(t *testing.T) {
11+
r := require.New(t)
12+
envy.Temp(func() {
13+
envy.Set("CI_NAME", "travis")
14+
envy.Set("CI_BUILD_ID", "a12345")
15+
envy.Set("CI_BUILD_URL", "http://example.com")
16+
c := loadCIInfo()
17+
r.Equal(c.Name, "travis")
18+
r.Equal(c.BuildID, "a12345")
19+
r.Equal(c.BuildURL, "http://example.com")
20+
})
21+
}
22+
23+
func Test_loadCIFromENV_Alt_Vars(t *testing.T) {
24+
r := require.New(t)
25+
envy.Temp(func() {
26+
envy.Set("GITLAB_CI", "gitlab")
27+
envy.Set("TDDIUM_SESSION_ID", "b12345")
28+
envy.Set("BUILDKITE_BUILD_URL", "http://example.org")
29+
c := loadCIInfo()
30+
r.Equal(c.Name, "gitlab")
31+
r.Equal(c.BuildID, "b12345")
32+
r.Equal(c.BuildURL, "http://example.org")
33+
})
34+
}
35+
36+
func Test_CI_String(t *testing.T) {
37+
r := require.New(t)
38+
c := CI{
39+
Name: "codeclimate",
40+
BuildID: "a12345",
41+
BuildURL: "http://example.net",
42+
}
43+
exp := `CI_NAME=codeclimate
44+
CI_BUILD_ID=a12345
45+
CI_BUILD_URL=http://example.net`
46+
r.Equal(exp, c.String())
47+
}

Diff for: env/env.go

+1-16
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,6 @@ import (
66
"github.com/gobuffalo/envy"
77
)
88

9-
type CI struct {
10-
Name string
11-
BuildID string
12-
BuildURL string
13-
}
14-
15-
func (c CI) String() string {
16-
out := &bytes.Buffer{}
17-
// TODO fill in
18-
return out.String()
19-
}
20-
219
type Environment struct {
2210
Git Git
2311
CI CI
@@ -26,6 +14,7 @@ type Environment struct {
2614
func (e Environment) String() string {
2715
out := &bytes.Buffer{}
2816
out.WriteString(e.Git.String())
17+
out.WriteString("\n")
2918
out.WriteString(e.CI.String())
3019
return out.String()
3120
}
@@ -40,10 +29,6 @@ func New() (Environment, error) {
4029
return e, nil
4130
}
4231

43-
func loadCIInfo() CI {
44-
return CI{}
45-
}
46-
4732
func findVar(names []string) string {
4833
for _, n := range names {
4934
v := envy.Get(n, "")

0 commit comments

Comments
 (0)