乐趣区

关于jenkins:JENKINS-构建失败后请求HTTP接口的一些问题

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.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} 
}

退出移动版