gitlab变更commit状态(三)jenkins+gitlab

上面:增加获取hook参数,获取分支名称

问题1:看不出来是哪个分支构建

做法:增加构建描述信息

流水线语法--->全局变量参考--->currentBuild

'currentBuild.description'

# 想知道:谁提交了,提交到哪个分支导致自动构建!
# 做法-->获取gitlab传递的json字符串中的user_username

#  说明-->在pipeline执行之前,就先进行变量的重新定义!
#  在jenkinsfile中添加信息

# 观察:在构建历史中观察

#  gitlab中commit提交后也是有状态的

#  状态如下

#  进一步:提交流水线优化--->变更commite提交状态!

#  正常:gitlab-->CI,提交一次就会跑一次流水线,流水线成功与否就会有一个标志

#  说明:11版本之前gitlab是支持jenkins的,所以早前能把状态匹配过来,现在不支持了!

#  需求:gitlab没有提交,都有一个状态,证明提交成功与否!

#  在帮助中找gitlab API

点击Gitlab API

Projects --->跳转到API --->选择Commits 

#  获取一个commite的状态

GET /projects/:id/repository/commits

#  发送一个commite的状态

POST /projects/:id/statuses/:sha

#  说明:流水线太单薄了,应该有构建成功干啥,构建失败干啥

参考模板

#  jenkins构建后根据对应的状态对号入座

进一步:在jenkinsfile中定义构建之后的操作,根据构建的结果,执行对应的代码

测试:gitlab侧提交,然后看jenkins构建的结果

或者rebuild,需要先安装插件

进入终极测试

(1)创建一个sharelib gitlab.groovy,定义两个方法

package  org.devops

//(1)封装HTTP请求
def HttpReq(reqType,reqUrl,reqBody){
    //1)  Gitlab Api地址
    def gitServer = "http://180.xx.107.87/api/v4"
    //2)  gitlab上创建一个凭据,存在给jenkins上,凭据名字(gitlab-token),赋值给gitlabToken变量
    withCredentials([string(credentialsId: 'gitlab-token', variable: 'gitlabToken')]) {
      //  发送HTTP请求-->请求类型、等等信息-->请求的时候加到Header里面
      result = httpRequest customHeaders: [[maskValue: true, name: 'PRIVATE-TOKEN', value: "${gitlabToken}"]],
                httpMode: reqType,
                contentType: "APPLICATION_JSON",
                consoleLogResponseBody: true,
                ignoreSslErrors: true,
                requestBody: reqBody,
                url: "${gitServer}/${reqUrl}"
                //quiet: true
    }
    return result
}


//(2)更改提交状态-->利用HTTP的请求

def ChangeCommitStatus(projectId,commitSha,status){
    //参照:curl --request POST --header "PRIVATE-TOKEN: <your_access_token>"
    "https://gitlab.example.com/api/v4/projects/17/statuses/18f3e63d05582537db6d183d9d557be09e1f90c8?state=success"
    //1)  定义CommitApi
    commitApi = "projects/${projectId}/statuses/${commitSha}?state=${status}"
    //2)  发送HTTP的POST请求
    response = HttpReq("POST",commitApi,'').content
    println("${response}")
}
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/17/statuses/18f3e63d05582537db6d183d9d557be09e1f90c8?state=success"
# 编辑:更改提交状态,然后HTTP发送请求

# 解释:在gitlab上创建了一个token,然后存在jenkins中,把凭据的数值赋值给这个变量,最后请求的时候加到head里面!
#  做法:jenkins中添加两个变量

#  (1)项目id

#  (2)commit号

报错信息

#  进一步在jenkins中把gitlab产生的token相关信息添加到凭据里面,注意凭据的类型(txt)

# 报错原因-->凭据类型与要求的不一致!

注意:凭据类型选择Secret text,将'gitlab生成的凭据(token)写到secret中',同时'id'一定要为gitlab-token

查看

jenkins查看 

#  -->进一步:查看实验效果

对比--->15s前后查看

# 注意:刷新gitlab的页面

原理说明:实际上调用的还是gitlab,只是把jenkins当做gitlab的CI,让gitlab以为:我提交代码了,我跑了gitlab CI的一个流水线,实际上跑了jenkins流水线,执行之后把gitlab的状态改变了!

#  后续说明

说明:最终的测试结果是--->在'gitlab可以看到相应的展示结果'

说明:库里面'封装了两个方法'(gitlab.groovy)

后续:gitlab CI调用的是runner

 

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值