在Jenkins pipeline的groovy脚本中可以实现很多复杂灵活的功能,但是:
1 一来对java、groovy不是很熟,也不知道能不能引入一些三方库?比如搞个jdbc操作下mysql什么的。
2 二是自己对go和python比较熟悉,所以想能够更加灵活的实现更多的功能:
比如:
stage('send email to sendList and exec mysqlDB') { checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'gitlabAdmin', url: 'http://gitlab-ip/group/go-script.git']]]) def sendList = [ "XXXXXXXX@qq.com", "XXXXXXXX@qq.com", "XXXXXXXX@qq.com", "XXXXXXXX@qq.com", "XXXXXXXX@qq.com" ] def goMail = [ user: "发送者邮箱地址", secret: "发送者邮箱秘钥", smtpHost: "smtp.qq.com", sslPort: "465", sendTo: sendList, subject: "测试subject", content: "测试content", // 这里自定义html,或者将html模板放在代码库中替换, // 在go脚本中定义好相应的header就行了 ] def goMysql = [ DSN: "root:passwd@tcp(1.1.1.1:3306)/jenkins?charset=utf8", sql: [ "update XXX set XX=XX where id=XX AND XX=XX", "update XXX set XX=XX where id=XX AND XX=XX", "update XXX set XX=XX where id=XX AND XX=XX", "update XXX set XX=XX where id=XX AND XX=XX" ] ] def scriptParams = [ GoMail: goMail, GoMysql: goMysql ] def output = JsonOutput.toJson(scriptParams) try { echo '执行go脚本,参数:' println(output); sh "chmod +x ./run && ./run -scriptParams /'${output}/'" }
type GoMail struct { User string `json:"user"` Secret string `json:"secret"` SmtpHost string `json:"smtpHost"` SslPort string `json:"sslPort"` SendTo []string `json:"sendTo"` Subject string `json:"subject"` Content string `json:"content"` } type GoMysql struct { DSN string `json:"DSN"` Sql []string `json:"sql"` } type ScriptParams struct { GoMail GoMail `json:"GoMail"` GoMysql GoMysql `json:"GoMysql"` }