-
Notifications
You must be signed in to change notification settings - Fork 0
/
init.go
124 lines (100 loc) · 3.74 KB
/
init.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
package main
import (
flagpkg "flag"
"fmt"
"os"
"path/filepath"
gitpkg "wen/self-release/git"
"wen/self-release/pkg/harbor"
"wen/self-release/pkg/k8s"
"wen/self-release/pkg/notify"
"wen/self-release/pkg/sse"
projectpkg "wen/self-release/project"
rice "github.com/GeertJohan/go.rice"
"github.com/chinglinwen/log"
"github.com/peterbourgon/ff"
"github.com/peterbourgon/ff/ffyaml"
)
var (
port string
secretKey string
selfURL string
)
const harborkey = "eyJhdXRocyI6eyJoYXJib3IuaGFvZGFpLm5ldCI6eyJ1c2VybmFtZSI6ImRldnVzZXIiLCJwYXNzd29yZCI6IkxuMjhvaHlEbiIsImVtYWlsIjoieXVud2VpQGhhb2RhaS5uZXQiLCJhdXRoIjoiWkdWMmRYTmxjanBNYmpJNGIyaDVSRzQ9In19fQ=="
func InitAll() {
flag := flagpkg.NewFlagSet("self-release", flagpkg.ExitOnError)
var (
flagport = flag.String("p", "8089", "port")
flagsecretKey = flag.String("key", "", "secret key keep private")
flagselfURL = flag.String("self-url", "http://release.haodai.net", "self URL for log view")
defaultWebDir = flag.String("webdir", "web", "default web template dir")
defaultConfigRepo = flag.String("configrepo", "yunwei/config-deploy", "default config-repo")
buildsvcAddr = flag.String("buildsvc", "buildsvc:10000", "buildsvc address host:port ( or k8s service name )")
defaultHarborKey = flag.String("harborkey", harborkey, "default HarborKey to pull image")
harborURL = flag.String("harbor-url", "http://harbor.haodai.net", "harbor URL for harbor auth")
harborUser = flag.String("harbor-user", "", "harbor user for harbor auth")
harborPass = flag.String("harbor-pass", "", "harbor pass for harbor auth")
// git
defaultGitlabURL = flag.String("gitlab-url", "http://g.haodai.net", "default gitlab url")
defaultUser = flag.String("gitlab-user", "", "default gitlab user")
defaultPass = flag.String("gitlab-pass", "", "default gitlab pass(personal token is ok)")
gitlabAccessToken = flag.String("gitlab-token", "", "gitlab admin access token")
defaultRepoDir = flag.String("repoDir", "repos", "default path to store cloned projects")
logsPath = flag.String("logsDir", "projectlogs", "build logs dir")
wechatURL = flag.String("wechat-receiver-url", "http://localhost:8002", "wechat-receiver-url")
kubeconfig = flag.String("kubeconfig", defaultKubeConfig(), "path to the kubeconfig file (optional)")
_ = flag.String("config", "", "config file (optional)")
)
ff.Parse(flag, os.Args[1:],
ff.WithConfigFileFlag("config"),
ff.WithConfigFileParser(ffyaml.Parser),
ff.WithEnvVarPrefix("SR"),
)
// set for main
port = *flagport
secretKey = *flagsecretKey
selfURL = *flagselfURL
fmt.Println("args:", os.Args)
if secretKey == "" {
log.Fatal("secretKey is empty")
}
// git
if *defaultGitlabURL == "" {
log.Fatal("no defaultGitlabURL provided")
}
if *gitlabAccessToken == "" {
log.Fatal("no gitlabAccessToken provided")
}
if *defaultRepoDir == "" {
log.Fatal("no defaultRepoDir provided")
}
if *harborUser == "" {
log.Fatal("no harborUser provided")
}
if *harborPass == "" {
log.Fatal("no harborPass provided")
}
if *defaultUser == "" {
log.Fatal("no defaultUser provided")
}
if *defaultPass == "" {
log.Fatal("no defaultPass provided")
}
gitpkg.Init(*defaultGitlabURL, *defaultUser, *defaultPass, *gitlabAccessToken, *defaultRepoDir)
log.Printf("using default notify user: %v", *defaultUser)
sse.Init(*logsPath)
projectpkg.Setting(*defaultHarborKey, *buildsvcAddr, *defaultConfigRepo)
harbor.Setting(*harborURL, *harborUser, *harborPass)
notify.Init(*wechatURL)
k8s.Init(*kubeconfig)
box = rice.MustFindBox(*defaultWebDir)
}
func defaultKubeConfig() string {
return filepath.Join(homeDir(), ".kube", "config")
}
func homeDir() string {
if h := os.Getenv("HOME"); h != "" {
return h
}
return os.Getenv("USERPROFILE") // windows
}