共计 3541 个字符,预计需要花费 9 分钟才能阅读完成。
1. 如果须要在 JENKIS 我的项目构建后,做 SHELL 或批处理 BAT 操作,须要应用插件
post build task 或 post build scripts.
2. 依据我的应用教训,前者 在执行时候不能带参数,而后者能够带参数,前者做执行工夫长的脚本的时候容易内存溢出,因为须要匹配字符串。而后者 间接抉择 JENKINS JOB 的默认状态。
3. 说到这个 post build scripts. 带参数肯定,要留神,只能带环境变量的参数。上面做个邮件发送插件的参数和这个参数的辨别:
a. 邮件的配置变量
${GIT_BRANCH} – build 的 Git 分支
${FILE,path=”xxx”} – xxx 为指定的文件,文件内容能够在邮件中显示。留神:xxx 是工作区目录的相对路径,不是绝对路径。
${JOB_DESCRIPTION} – 显示我的项目形容。
${BUILD_NUMBER} – 显示以后构建的编号。
${SVN_REVISION} – 显示 svn 版本号。还反对 Subversion 插件进口的 SVN_REVISION_n 版本。
${CAUSE} – 显示谁、通过什么渠道触发这次构建。
${CHANGES} – 显示上一次构建之后的变动。
${BUILD_ID} – 显示以后构建生成的 ID。
${PROJECT_NAME} – 显示我的项目的全名。
${PROJECT_DISPLAY_NAME} – 显示我的项目的显示名称。
$ {SCRIPT} – 从一个脚本生成自定义音讯内容。自定义脚本应该放在 “$JENKINS_HOME/email-templates”。当应用自定义脚本时会默认搜寻 $JENKINS_HOME/email-templatesdirectory 目录。其余的目录将不会被搜寻。
${JENKINS_URL} – 显示 Jenkins 服务器的 url 地址(能够在系统配置页更改)。
${BUILD_LOG_MULTILINE_REGEX} – 按正则表达式匹配并显示构建日志。
${BUILD_LOG} – 显示最终构建日志。
${PROJECT_URL} – 显示我的项目的 URL 地址。
${BUILD_STATUS} – 显示以后构建的状态 (失败、胜利等等)。
${BUILD_URL} – 显示以后构建的 URL 地址。
${CHANGES_SINCE_LAST_SUCCESS} – 显示上一次胜利构建之后的变动。
${CHANGES_SINCE_LAST_UNSTABLE} – 显示显示上一次不稳固或者胜利的构建之后的变动。
${ENV} – 显示一个环境变量。
${FAILED_TESTS} – 如果有失败的测试,显示这些失败的单元测试信息。
${PROJECT_URL} – 显示我的项目的 URL。
$ {JELLY_SCRIPT} – 从一个 Jelly 脚本模板中自定义音讯内容。有两种模板可供配置:HTML 和 TEXT。你能够在 $JENKINS_HOME/email-templates 下自定义替换它。当应用主动义模板时,”template”参数的名称不蕴含“.jelly”。
${TEST_COUNTS} – 显示测试的数量。
b. 环境变量
BRANCH_NAME
对于多分支我的项目,这将被设置为正在构建的分支的名称,例如,如果您心愿从而 master 不是从特色分支部署到生产。
CHANGE_ID
对于与某种更改申请绝对应的多分支我的项目,这将被设置为更改 ID,例如拉取申请号。
CHANGE_URL
对于与某种更改申请绝对应的多分支我的项目,这将被设置为更改 URL。
CHANGE_TITLE
对于对应于某种变更申请的多分支我的项目,这将被设置为更改的题目。
CHANGE_AUTHOR
对于对应于某种变更申请的多分支我的项目,这将被设置为拟议更改的作者的用户名。
CHANGE_AUTHOR_DISPLAY_NAME
对于对应于某种变更申请的多分支我的项目,这将被设置为作者的人名。
CHANGE_AUTHOR_EMAIL
对于对应于某种变更申请的多分支我的项目,这将被设置为作者的电子邮件地址。
CHANGE_TARGET
对于对应于某种变更申请的多分支我的项目,这将被设置为能够合并更改的指标或根本分支。
BUILD_NUMBER
目前的编号,如“153”
BUILD_ID
以后版本 ID,与 BUILD_NUMBER 雷同,用于在 1.597+ 中创建的构建,但较旧版本的 YYYY-MM-DD_hh-mm-ss 工夫戳记
BUILD_DISPLAY_NAME
以后版本的显示名称,默认为“#153”。
JOB_NAME
此构建我的项目的名称,如“foo”或“foo / bar”。
JOB_BASE_NAME
此建设我的项目的名称将剥离文件夹门路,例如“bar / foo”的“foo”。
BUILD_TAG
“jenkins- $ {JOB_NAME} – $ {BUILD_NUMBER}”的字符串。JOB_NAME 中的所有正斜杠(/)都会用破折号(–)替换。不便放入资源文件,jar 文件等,以不便辨认。
EXECUTOR_NUMBER
辨认执行此构建的以后执行程序(在同一台计算机的执行程序中)的惟一编号。这是您在“构建执行者状态”中看到的数字,但数字从 0 开始,而不是 1。
NODE_NAME
代理的名称,如果构建是代理,或者“主”,如果在主机上运行
NODE_LABELS
空格分隔的节点调配的标签列表。
WORKSPACE
调配给构建作为工作区的目录的绝对路径。
JENKINS_HOME
Jenkins 主节点上调配的目录绝对路径存储数据。
JENKINS_URL
残缺的 Jenkins 网址,例如 http:// server:port / jenkins /(留神:只有在系统配置中设置了 Jenkins URL)
BUILD_URL
此构建的残缺 URL,如 http:// server:port / jenkins / job / foo / 15 /(Jenkins URL 必须设置)
JOB_URL
此作业的残缺 URL,如 http:// server:port / jenkins / job / foo /(必须设置 Jenkins URL)
SVN_REVISION
Subversion 版本号,以后已被检出到工作区,如“12345”
SVN_URL
以后曾经检出到工作空间的 Subversion URL。
- 如果在 post build scripts 参数中设置 bat 脚本或 shell 脚本,还要看您的 jenkins 是否独立运行模式还是 master-slave 模式。我尝试过执行 bat 脚本,执行有效,后果是 0 执行胜利,然而理论脚本没执行,所以我又切回 应用 grovy 的形式,尽管我这个脚本也不是很相熟。
- 执行 grovy 脚本,须要留神引入的包。否则会报错。
@Grab(group='org.codehaus.groovy.modules.http-builder', module='http-builder', version='0.7')
import groovyx.net.http.HTTPBuilder
import hudson.model.User
import hudson.model.*
import groovyx.net.http.RESTClient
import groovyx.net.http.HttpResponseDecorator
import static groovyx.net.http.ContentType.*
import static groovyx.net.http.Method.*
def http =new HTTPBuilder('http://192.168.132.223:8093')
def build = Thread.currentThread().executable
def build_number = build.properties.environment.BUILD_NUMBER.toString()
def job_name=build.properties.environment.JOB_NAME.toString()
http.request(GET, TEXT) {
uri.path="/sendmsg"
uri.query = ['projectname':job_name,'buildnum':build_number,msgkey:'f14fec71-e8fd-4095-b2d1-ddebf14d7480']
response.success ={resp,reader->
println resp.statusLine.statusCode
println resp.headers.'content-length'
System.out << reader
}
response.failure={resp->println resp.status}
}