You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
92 lines
2.1 KiB
92 lines
2.1 KiB
package main |
|
|
|
import ( |
|
"flag" |
|
"os" |
|
"strings" |
|
|
|
"go-common/app/tool/ci/lib/mail" |
|
"go-common/library/log" |
|
|
|
"github.com/BurntSushi/toml" |
|
) |
|
|
|
type sendInfo struct { |
|
SenderName string |
|
SendTitle string |
|
SendContent string |
|
ExtraData string |
|
} |
|
type receiverInfo struct { |
|
ReceiverName []string |
|
} |
|
type config struct { |
|
Title string |
|
SendInfo sendInfo |
|
ReceiverInfo receiverInfo |
|
} |
|
|
|
func mailToml(cPath string) (conf config, err error) { |
|
if _, err = toml.DecodeFile(cPath, &conf); err != nil { |
|
log.Error("Error(%v)", err) |
|
} |
|
return |
|
} |
|
func main() { |
|
var ( |
|
filePath string |
|
ciSendTo string |
|
pipeStatus string |
|
eConf config |
|
sendTo []string |
|
sendContent string |
|
extraData string |
|
err error |
|
ciProjectURL = os.Getenv("CI_PROJECT_URL") |
|
ciPipelineId = os.Getenv("CI_PIPELINE_ID") |
|
ciUserEmail = os.Getenv("GITLAB_USER_EMAIL") |
|
sourceBranch = os.Getenv("CI_COMMIT_REF_NAME") |
|
) |
|
//log init |
|
logConfig := &log.Config{ |
|
Stdout: true, |
|
} |
|
log.Init(logConfig) |
|
|
|
//pipeline url |
|
if ciProjectURL == "" { |
|
log.Warn("Error: Not CI_PROJECT_URL") |
|
} |
|
pipelineURL := ciProjectURL + "/pipelines/" + ciPipelineId |
|
log.Info("url: %v", pipelineURL) |
|
|
|
//send email data from config files |
|
flag.StringVar(&filePath, "configPath", "", "config path, eg: /data/gitlab/email.toml") |
|
flag.StringVar(&ciSendTo, "sendTo", "", "send to email, eg: [email protected],[email protected]") |
|
flag.StringVar(&pipeStatus, "pipeStatus", "failed", "pipeStatus, only failed or success") |
|
flag.StringVar(&extraData, "extraData", "", "email contents") |
|
flag.Parse() |
|
|
|
if ciSendTo != "" { |
|
matchList := strings.Split(ciSendTo, ",") |
|
sendTo = matchList |
|
} else { |
|
if filePath != "" { |
|
if eConf, err = mailToml(filePath); err != nil { |
|
log.Warn("Warn(%v)", err) |
|
} |
|
sendTo = eConf.ReceiverInfo.ReceiverName |
|
sendContent = eConf.SendInfo.SendContent |
|
extraData = eConf.SendInfo.ExtraData |
|
} else { |
|
sendTo = []string{ciUserEmail} |
|
} |
|
} |
|
|
|
// delete saga send mail |
|
if strings.Contains(ciUserEmail, "zzjs") { |
|
log.Info("Saga exc pipeline") |
|
} else { |
|
sendmail.SendMail(sendTo, pipelineURL, sendContent, sourceBranch, extraData, pipeStatus) |
|
} |
|
}
|
|
|