Skip to content

Commit 749d844

Browse files
authored
Merge pull request #6 from eksrvb/bugfix/pipeline-failed
Bugfix/pipeline failed
2 parents 9394169 + 70e93ba commit 749d844

File tree

7 files changed

+101
-44
lines changed

7 files changed

+101
-44
lines changed

gitcontroller/github.go

Lines changed: 36 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -38,20 +38,20 @@ func newGetRequest(endpoint string, token string) map[string]interface{} {
3838
req.Header.Add("Accept", "application/vnd.github.v3+json")
3939
req.Header.Add("Authorization", "token "+token)
4040
if err != nil {
41-
fmt.Println("(newGetRequest) Error at building request: ", err)
41+
log.Fatalln("(newGetRequest) Error at building request: ", err)
4242
}
4343

4444
resp, err := client.Do(req)
4545
if err != nil {
46-
fmt.Println("(newGetRequest) Error form response:", err, resp)
46+
log.Fatalln("(newGetRequest) Error form response:", err, resp)
4747
}
4848
defer resp.Body.Close()
4949

5050
var result map[string]interface{}
5151
json.NewDecoder(resp.Body).Decode(&result)
5252

5353
if result["message"] == "Bad credentials" {
54-
fmt.Println("Please provide the right credentials and make sure you have the right access rights!")
54+
log.Fatalln("Please provide the right credentials and make sure you have the right access rights!")
5555
os.Exit(1)
5656
}
5757

@@ -66,7 +66,7 @@ func newPostRequest(endpoint string, token string, isFile bool, requestBody []by
6666

6767
request, err := http.NewRequest(http.MethodPost, endpoint, bytes.NewBuffer(requestBody))
6868
if err != nil {
69-
fmt.Println("(newPostRequest) Error at building request: ", err)
69+
log.Fatalln("(newPostRequest) Error at building request: ", err)
7070
}
7171
if isFile {
7272
request.Header.Set("Content-Type", "application/octet-stream")
@@ -77,7 +77,8 @@ func newPostRequest(endpoint string, token string, isFile bool, requestBody []by
7777

7878
resp, err := client.Do(request)
7979
if err != nil {
80-
fmt.Println("(newPostRequest) Error form response:", err, resp)
80+
log.Fatalln("(newPostRequest) Error form response:", err, resp)
81+
os.Exit(1)
8182
}
8283
defer resp.Body.Close()
8384

@@ -103,7 +104,6 @@ func github_getLatestReleaseVersion(conf GitConfiguration) string {
103104
}
104105

105106
func github_createNextGitHubRelease(conf GitConfiguration, newReleaseVersion string, uploadArtifacts string) {
106-
107107
requestBody, err := json.Marshal(NewRelease{
108108
TagName: newReleaseVersion,
109109
TargetCommitish: conf.DefaultBranchName,
@@ -117,12 +117,13 @@ func github_createNextGitHubRelease(conf GitConfiguration, newReleaseVersion str
117117
}
118118

119119
url := fmt.Sprintf("%s/repos/%s/releases", conf.ApiUrl, conf.Repository)
120-
result := newPostRequest(url, conf.AccessToken, false, requestBody)
121-
122-
if result["name"] == "Release "+newReleaseVersion {
120+
log.Println("url for creating release:", url)
121+
respCreateRelease := newPostRequest(url, conf.AccessToken, false, requestBody)
122+
if respCreateRelease["name"] == "Release "+newReleaseVersion {
123123
fmt.Println("Release " + newReleaseVersion + " sucsessfully created")
124124
} else {
125-
fmt.Println("Somethin went worng at creating release!")
125+
log.Fatalln("Somethin went worng at creating release:\n", githubErrorPrinter(respCreateRelease))
126+
os.Exit(1)
126127
}
127128

128129
if uploadArtifacts != "" {
@@ -135,14 +136,34 @@ func github_createNextGitHubRelease(conf GitConfiguration, newReleaseVersion str
135136

136137
releaseFileName := uploadArtifacts[strings.LastIndex(uploadArtifacts, "/")+1:]
137138

138-
uploadUrl := fmt.Sprintf("%s", result["upload_url"])
139+
uploadUrl := fmt.Sprintf("%s", respCreateRelease["upload_url"])
139140
newUploadUrl := strings.Replace(uploadUrl, "{?name,label}", "?name="+releaseFileName, -1)
140-
resultTwo := newPostRequest(newUploadUrl, conf.AccessToken, true, file)
141-
142-
if resultTwo["name"] == releaseFileName {
141+
log.Println("url for uploading asset to release:", newUploadUrl)
142+
respUploadArtifact := newPostRequest(newUploadUrl, conf.AccessToken, true, file)
143+
if respUploadArtifact["name"] == releaseFileName {
143144
fmt.Println(releaseFileName + " sucsessfully uploaded")
144145
} else {
145-
fmt.Println("Somethin went worng at uploading release!")
146+
log.Fatalln("Somethin went wrong at uploading asset:", respUploadArtifact["message"])
147+
os.Exit(1)
148+
}
149+
}
150+
}
151+
152+
func githubErrorPrinter(responseErrors map[string]interface{}) string {
153+
var errors []map[string]interface{}
154+
outputString := fmt.Sprintln(responseErrors["message"])
155+
156+
b, err := json.Marshal(responseErrors["errors"])
157+
if err != nil {
158+
panic(err)
159+
}
160+
json.Unmarshal(b, &errors)
161+
for index := range errors {
162+
if errors[index]["code"] == "custom" {
163+
outputString = outputString + fmt.Sprintf("code: %s => message: %s\n", errors[index]["code"], errors[index]["message"])
164+
} else {
165+
outputString = outputString + fmt.Sprintf("code: %s => message: %s\n", errors[index]["code"], errors[index])
146166
}
147167
}
168+
return outputString
148169
}

gitcontroller/initsenv.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,12 @@ import (
88
func getEnv(key, fallback string, confidential bool) string {
99
if value, ok := os.LookupEnv(key); ok {
1010
var newValue = "**********"
11-
if len(value) > 10 {
12-
newValue = value[0:4] + "******"
11+
if confidential {
12+
if len(value) > 10 {
13+
newValue = value[0:4] + "******"
14+
}
15+
} else {
16+
newValue = value
1317
}
1418
return newValue
1519
}

go.mod

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,10 @@ module awesome-ci
33
go 1.15
44

55
require (
6+
github.com/mattn/go-colorable v0.1.8 // indirect
7+
github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d // indirect
8+
github.com/sirupsen/logrus v1.8.1
9+
github.com/x-cray/logrus-prefixed-formatter v0.5.2
610
golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5 // indirect
711
golang.org/x/tools v0.1.0 // indirect
812
)

go.sum

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,20 @@
1+
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
2+
github.com/mattn/go-colorable v0.1.8 h1:c1ghPdyEDarC70ftn0y+A/Ee++9zz8ljHG1b13eJ0s8=
3+
github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
4+
github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY=
5+
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
6+
github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d h1:5PJl274Y63IEHC+7izoQE9x6ikvDFZS2mDVS3drnohI=
7+
github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE=
8+
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
9+
github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE=
10+
github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
11+
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
12+
github.com/x-cray/logrus-prefixed-formatter v0.5.2 h1:00txxvfBM9muc0jiLIEAkAcIMJzfthRT6usrui8uGmg=
13+
github.com/x-cray/logrus-prefixed-formatter v0.5.2/go.mod h1:2duySbKsL6M18s5GU7VPsoEPHyzalCE06qoARUCeBBE=
114
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
215
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
316
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
17+
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI=
418
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
519
golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5 h1:2M3HP5CCK1Si9FQhwnzYhXdG6DXeebvUHFpre8QvbyI=
620
golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
@@ -13,7 +27,11 @@ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJ
1327
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
1428
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
1529
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
30+
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
31+
golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
32+
golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
1633
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
34+
golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4 h1:myAQVi0cGEoqQVR5POX+8RR2mrocKqNN1hmeMqhX27k=
1735
golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
1836
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
1937
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=

main.go

Lines changed: 28 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,15 @@ package main
33
import (
44
"awesome-ci/service"
55
"flag"
6-
"io/ioutil"
7-
"log"
6+
"fmt"
87
"os"
98
)
109

1110
var (
12-
cienv *string
11+
cienv string
1312
createRelease CreateReleaseSet
1413
getBuildInfos getBuildInfosSet
14+
debug bool
1515
)
1616

1717
type CreateReleaseSet struct {
@@ -31,15 +31,16 @@ type getBuildInfosSet struct {
3131
}
3232

3333
func init() {
34-
cienv = flag.String("cienv", "Github", "set your CI Environment for Special Featueres!\nAvalible: Jenkins, Github, Gitlab, Custom\nDefault: Github")
34+
flag.StringVar(&cienv, "cienv", "Github", "set your CI Environment for Special Featueres!\nAvalible: Jenkins, Github, Gitlab, Custom\nDefault: Github")
35+
// flag.BoolVar(&debug, "debug", false, "enable debug level by calling it")
3536

3637
// createReleaseSet
3738
createRelease.fs = flag.NewFlagSet("createRelease", flag.ExitOnError)
3839
createRelease.fs.StringVar(&createRelease.version, "version", "", "override version to Update")
3940
createRelease.fs.StringVar(&createRelease.patchLevel, "patchLevel", "bugfix", "predefine version to Update")
4041
createRelease.fs.StringVar(&createRelease.publishNpm, "publishNpm", "", "runs npm publish --tag <createdTag> with custom directory")
4142
createRelease.fs.StringVar(&createRelease.uploadArtifacts, "uploadArtifacts", "", "uploads atifacts to release (file)")
42-
createRelease.fs.BoolVar(&createRelease.dryRun, "dry-run", false, "make dry-run before writing version to Git")
43+
createRelease.fs.BoolVar(&createRelease.dryRun, "dry-run", false, "make dry-run before writing version to Git by calling it")
4344

4445
// getNewReleaseVersion
4546
getBuildInfos.fs = flag.NewFlagSet("getBuildInfos", flag.ExitOnError)
@@ -49,19 +50,29 @@ func init() {
4950
}
5051

5152
func main() {
52-
53-
// disable logging
54-
log.SetOutput(ioutil.Discard)
55-
53+
flag.Usage = func() {
54+
fmt.Println("awesome-ci makes your CI easy.")
55+
fmt.Print("\n Find more information and examples at: https://github.com/eksrvb/awesome-ci\n\n")
56+
fmt.Println("Available commands:")
57+
flag.PrintDefaults()
58+
fmt.Print("\nSubcommand: createRelease\n")
59+
createRelease.fs.PrintDefaults()
60+
fmt.Print("\nSubcommand: getBuildInfos\n")
61+
getBuildInfos.fs.PrintDefaults()
62+
fmt.Print("\nUsage:\n awesome-ci [subcommand] [options]\n")
63+
fmt.Print("\nUse awesome-ci createRelease -patchLevel bugfix -dry-run\n")
64+
fmt.Print("CI examples at: https://github.com/eksrvb/awesome-ci\n")
65+
}
5666
flag.Parse()
5767

58-
switch os.Args[1] {
59-
case "createRelease":
60-
createRelease.fs.Parse(os.Args[2:])
61-
service.CreateRelease(cienv, &createRelease.version, &createRelease.patchLevel, &createRelease.dryRun, &createRelease.publishNpm, &createRelease.uploadArtifacts)
62-
case "getBuildInfos":
63-
getBuildInfos.fs.Parse(os.Args[2:])
64-
service.GetBuildInfos(cienv, &getBuildInfos.version, &getBuildInfos.patchLevel, &getBuildInfos.output)
68+
if len(os.Args) > 0 {
69+
switch os.Args[1] {
70+
case "createRelease":
71+
createRelease.fs.Parse(os.Args[2:])
72+
service.CreateRelease(cienv, &createRelease.version, &createRelease.patchLevel, &createRelease.dryRun, &createRelease.publishNpm, &createRelease.uploadArtifacts)
73+
case "getBuildInfos":
74+
getBuildInfos.fs.Parse(os.Args[2:])
75+
service.GetBuildInfos(cienv, &getBuildInfos.version, &getBuildInfos.patchLevel, &getBuildInfos.output)
76+
}
6577
}
66-
6778
}

service/createRelease.go

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ func runcmd(cmd string, shell bool) string {
1717
out, err := exec.Command("bash", "-c", cmd).Output()
1818
if err != nil {
1919
fmt.Println(err)
20-
panic("some error found")
2120
}
2221
return string(out)
2322
}
@@ -28,19 +27,19 @@ func runcmd(cmd string, shell bool) string {
2827
return string(out)
2928
}
3029

31-
func CreateRelease(cienv *string, overrideVersion *string, getVersionIncrease *string, isDryRun *bool, publishNpm *string, uploadArtifacts *string) {
30+
func CreateRelease(cienv string, overrideVersion *string, getVersionIncrease *string, isDryRun *bool, publishNpm *string, uploadArtifacts *string) {
3231
var gitVersion string
3332
if *overrideVersion != "" {
3433
gitVersion = *overrideVersion
3534
} else {
36-
gitVersion = gitcontroller.GetLatestReleaseVersion(*cienv)
35+
gitVersion = gitcontroller.GetLatestReleaseVersion(cienv)
3736
}
3837

3938
var patchLevel string
4039
if *getVersionIncrease != "" {
4140
patchLevel = *getVersionIncrease
4241
} else {
43-
if *cienv == "Github" {
42+
if cienv == "Github" {
4443
// Output: []string {FullString, PR, FullBranch, Orga, branch, branchBegin, restOfBranch}
4544
regex := `[a-zA-z ]+#([0-9]+) from (([0-9a-zA-Z-]+)/((feature|bugfix|fix)/(.+)))`
4645
r := regexp.MustCompile(regex)
@@ -53,8 +52,8 @@ func CreateRelease(cienv *string, overrideVersion *string, getVersionIncrease *s
5352
patchLevel = mergeMessage[5]
5453
} else {
5554
fmt.Println("No merge message found pls make shure this regex matches: ", regex)
56-
fmt.Print("Example: Merge pull request #3 from some-orga/feature/awesome-feature\n\n")
57-
fmt.Print("If you like to set your patch level manually by flag: -level (feautre|bugfix)\n\n")
55+
fmt.Println("Example: Merge pull request #3 from some-orga/feature/awesome-feature")
56+
fmt.Println("If you like to set your patch level manually by flag: -level (feautre|bugfix)")
5857
os.Exit(1)
5958
}
6059
}
@@ -67,7 +66,7 @@ func CreateRelease(cienv *string, overrideVersion *string, getVersionIncrease *s
6766
} else {
6867
fmt.Printf("Old version: %s\n", gitVersion)
6968
fmt.Printf("Writing new release: %s\n", newVersion)
70-
gitcontroller.CreateNextGitHubRelease(*cienv, newVersion, *uploadArtifacts)
69+
gitcontroller.CreateNextGitHubRelease(cienv, newVersion, *uploadArtifacts)
7170
}
7271

7372
if *publishNpm != "" {

service/getBuildInfos.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,18 @@ import (
88
"regexp"
99
)
1010

11-
func GetBuildInfos(cienv *string, overrideVersion *string, patchLevel *string, output *string) {
11+
func GetBuildInfos(cienv string, overrideVersion *string, patchLevel *string, output *string) {
1212
var gitVersion string
1313
if *overrideVersion != "" {
1414
gitVersion = *overrideVersion
1515
} else {
16-
gitVersion = gitcontroller.GetLatestReleaseVersion(*cienv)
16+
gitVersion = gitcontroller.GetLatestReleaseVersion(cienv)
1717
}
1818

1919
if *patchLevel != "" {
2020
log.Println("patchLevel has Override:", *patchLevel)
2121
} else {
22-
if *cienv == "Github" {
22+
if cienv == "Github" {
2323
// Output: []string {FullString, PR, FullBranch, Orga, branch, branchBegin, restOfBranch}
2424
regex := `[a-zA-z ]+#([0-9]+) from (([0-9a-zA-Z-]+)/((feature|bugfix|fix)/(.+)))`
2525
r := regexp.MustCompile(regex)

0 commit comments

Comments
 (0)