专栏首页DevOps持续集成整理Jenkins与Gitlab的交互方式

整理Jenkins与Gitlab的交互方式

作者:泽阳 http://zeyangli.github.io

1 简介

在做持续集成的过程中,项目的代码管理基本上采用的就是gitlab。在进行集成流水线的过程中需要跟gitlab做一些交互。

例如:

  • 将构建状态返回给gitlab。
  • 通过流水线自动创建gitlab标签。
  • 获取gitlab代码库中的配置文件等等。

2 如何在Jenkins中配置?

在Jenkins插件管理安装插件 “HTTP Request”,然后在“流水线语法”中生成Jenkinsfile。

主要填写的信息:

  • 接口地址
  • 请求方式
  • 数据接收与返回格式
  • 接口认证信息(可以使用用户密码/用户token认证)

注意:如果需要认证,需要提前在jenkins中创建gitlab用户的凭据。

流水线语法

httpRequest acceptType: 'APPLICATION_JSON_UTF8', authentication: '24982560-17fc-4589-819b-bc5bea89da77', contentType: 'APPLICATION_JSON_UTF8', responseHandle: 'NONE', url: 'http://gitlab.demo.com/api/v4/xxxx'

封装一下下

package org.demo

def HttpReq(reqUrl,reqMode,reqBody){
    response = httpRequest acceptType: 'APPLICATION_JSON_UTF8',
                        authentication: '24982560-17fc-4589-819b-bc5bea89da77', 
                        contentType: 'APPLICATION_JSON_UTF8', 
                        url: 'http://gitlab.demo.com/api/v4/xxxx',
                        requestBody: """{"aa":"bb","cc":"dd"}"""
    response = readJSON text: "${response.content}"
    return response
}

3 常用的gitlabAPI整理

Gitlab 接口文档, 分为ce 和ee 。 例如ce= https://docs.gitlab.com/ce/api/ 。

  • Group管理(获取所有项目)
  • Project管理(项目ID)
  • branch管理(新建/过滤)
  • Tag管理(创建标签)
  • Pipeline管理(运行/成功/失败)
  • Repofile 管理(获取/创建/删除)
  • Commit管理(获取)
  • MergeRequest管理(创建)

4 总结

不重复造轮子,有一些操作通过jenkins的gitlab插件能够完成。但是特殊的场景下就需要自己来封装请求了。 遗憾不会JAVA开发,否则做个插件出来更有意义。当前的使用方式是直接在sharelibrary中扩展的groovy文件。

本文分享自微信公众号 - DevOps持续集成(devopsadmin)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-10-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 高效协同开发

    假设服务机器开通sambas服务端口,并且windows防火墙允许访问。这时候可以在windows打开网盘一样,打开sambas共享的服务器文件夹,把代码工程放...

    mariolu
  • 一个月真的可以学会一门语言吗?

    知乎上总看到有人提这个问题, 我想转行,我要学多久才能学会,分享下我到经历,以便你评估一下自身来不来得及,别人是没办法帮你评估的。

    王炸
  • 创建Github远程仓库

    之后在在Repository name 填入 ZXTabBarController(你的远程仓库名) ,其他保持默认设置,

    周希
  • iOS PureLayout使用

    PureLayout是iOS Auto Layout的终端API,强大而简单。由UIView、NSArray和NSLayoutConstraint类别组成。 ...

    周希
  • Go 模块存在的意义与解决的问题

    作者:William Kennedy | 原文:Modules Part 01: Why And What

    波罗学
  • 【React】377- 实现 React 中的状态自动保存

    移动端中,用户访问了一个列表页,上拉浏览列表页的过程中,随着滚动高度逐渐增加,数据也将采用触底分页加载的形式逐步增加,列表页浏览到某个位置,用户看到了感兴趣的项...

    pingan8787
  • 基于AFN封装的带缓存的网络请求

    git: https://github.com/zhouxihi/NVNetworking

    周希
  • GitHub 博客项目学习之接入GitHu登录

    限于篇幅原因源码以上传github: https://github.com/codesbull/community

    cherishspring
  • 预训练语言模型关系图+必读论文列表,清华荣誉出品

    Github 项目:https://github.com/thunlp/PLMpapers

    机器之心
  • 关于Git和Github你不知道的十件事

    Git 和 GitHub 都是非常强大的工具。即使你已经使用他们很长时间,你也很有可能不知道每个细节。

    Rookie

扫码关注云+社区

领取腾讯云代金券