1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- 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: jiangkai@bilibili.com,tangyongqiang@bilibili.com")
- 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)
- }
- }
|