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。

  1. 如果在 post build scripts 参数中设置 bat脚本或shell脚本,还要看您的 jenkins是否独立运行模式还是 master-slave模式。我尝试过执行bat脚本,执行有效,后果是0执行胜利,然而理论脚本没执行,所以我又切回 应用grovy的形式,尽管我这个脚本也不是很相熟。
  2. 执行grovy脚本,须要留神引入的包。否则会报错。
@Grab(group='org.codehaus.groovy.modules.http-builder', module='http-builder', version='0.7')import groovyx.net.http.HTTPBuilderimport hudson.model.Userimport hudson.model.*import groovyx.net.http.RESTClientimport 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().executabledef 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 } }