热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

版本管理之gitlab实践教程:基础篇(12)

这篇文章我们将会介绍一下如果使用gitlab和jenkins进行结合,通过api动态设定gitlab的webhook,实现每次向gitlab进行push操作的时候,jenkins的job会自动被

这篇文章我们将会介绍一下如果使用gitlab和jenkins进行结合,通过api动态设定gitlab的webhook,实现每次向gitlab进行push操作的时候,jenkins的job会自动被执行的效果。

试验版本
工具 版本
gitlab 10.4.2
jenkins 2.73.3

Jenkins设定

pipeline

创建一个jenkins的pipeline的job,job名称设定为:devops-pipeline-webhook。另外为了简单演示,具体的jenkinsfile设定如下:

node {
stage('build'){
echo 'build';
}

stage('test'){
echo 'test';
}

stage('deploy'){
echo 'deploy';
}
}

gitlab hook plugin

需要在jenkin上设定gitlab hook plugin,此plugin支持gitlab8及以后的版本。详细信息可以参看如下说明:
https://wiki.jenkins.io/display/JENKINS/Gitlab+Hook+Plugin

job设定

为了建立jenkins的job和gitlab的webhook之间的关联,所创建的jenkins的job只需要做如下设定即可:
选中 Trigger builds remotely (e.g, from scripts)
同时设定gitlab调用的token:此处设定为liumiao
这里写图片描述
而具体在gitlab设定的jenkins的URL则为:
http://192.168.163.154:32002/job/devops-pipeline-webhook/build?token=liumiao
另外如果此job如果是需要传入参数的类型,具体调用方式不是/build而换成/buildWithParameters即可

gitlab的webhook

gitlab下有system hook和web hook,web hook的增删改查在项目的setting/Integrations下进行操作,当然也可以通过上篇文章中所提到的api来实现。

[root@devops ~]# curl --request POST --header "PRIVATE-TOKEN: sqiSUhn3tHYXe8nSGRDi" --data "id=1&url=http://192.168.163.154:32002/job/devops-pipeline-webhook/build?token=liumiao&enable_ssl_verification=false" "http://127.0.0.1:32001/api/v4/projects/1/hooks" |jq .
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 511 100 396 100 115 12807 3719 --:--:-- --:--:-- --:--:-- 13200
{
"id": 4,
"url": "http://192.168.163.154:32002/job/devops-pipeline-webhook/build?token=liumiao",
"created_at": "2018-02-04T04:24:50.499Z",
"push_events": true,
"tag_push_events": false,
"repository_update_events": false,
"enable_ssl_verification": false,
"project_id": 1,
"issues_events": false,
"merge_requests_events": false,
"note_events": false,
"pipeline_events": false,
"wiki_page_events": false,
"job_events": false
}
[root@devops ~]#

创建之后可以通过gitlab进行结果确认
这里写图片描述

git push

做完以上设定,只要向此gitlab的project进行push操作,就会出发jenkins的job,让我们来向此project添加一个hello文件并进行push。

[root@devops ~]# git clone http://127.0.0.1:32001/root/demodefaultprj.git
Cloning into 'demodefaultprj'...
remote: Counting objects: 5, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 5 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (5/5), done.
[root@devops ~]# cd demodefaultprj/
[root@devops demodefaultprj]# touch hello
[root@devops demodefaultprj]# git add hello
[root@devops demodefaultprj]# git commit -m "for push test"
[master f8af63b] for push test
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 hello
[root@devops demodefaultprj]# git push -u origin master
Username for 'http://127.0.0.1:32001': root
Password for 'http://root@127.0.0.1:32001':
Counting objects: 4, done.
Writing objects: 100% (3/3), 237 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To http://127.0.0.1:32001/root/demodefaultprj.git
e07b882..f8af63b master -> master
Branch master set up to track remote branch master from origin.
[root@devops demodefaultprj]#

jenkins结果确认

这里写图片描述
可以看到已经被自动触发执行了


推荐阅读
  • 持续集成概述与实践指南
    本文探讨了持续集成(CI)的基本概念、目的及其在现代软件开发中的应用。通过实例分析,帮助读者理解如何有效实施持续集成,提高软件开发效率。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 扫描线三巨头 hdu1928hdu 1255  hdu 1542 [POJ 1151]
    学习链接:http:blog.csdn.netlwt36articledetails48908031学习扫描线主要学习的是一种扫描的思想,后期可以求解很 ... [详细]
  • Splay Tree 区间操作优化
    本文详细介绍了使用Splay Tree进行区间操作的实现方法,包括插入、删除、修改、翻转和求和等操作。通过这些操作,可以高效地处理动态序列问题,并且代码实现具有一定的挑战性,有助于编程能力的提升。 ... [详细]
  • 本题涉及一棵由N个节点组成的树(共有N-1条边),初始时所有节点均为白色。题目要求处理两种操作:一是改变某个节点的颜色(从白变黑或从黑变白);二是查询从根节点到指定节点路径上的第一个黑色节点,若无则输出-1。 ... [详细]
  • 本文介绍如何在Linux Mint系统上搭建Rust开发环境,包括安装IntelliJ IDEA、Rust工具链及必要的插件。通过详细步骤,帮助开发者快速上手。 ... [详细]
  • 2018-2019学年第六周《Java数据结构与算法》学习总结
    本文总结了2018-2019学年第六周在《Java数据结构与算法》课程中的学习内容,重点介绍了非线性数据结构——树的相关知识及其应用。 ... [详细]
  • 本题来自WC2014,题目编号为BZOJ3435、洛谷P3920和UOJ55。该问题描述了一棵不断生长的带权树及其节点上小精灵之间的友谊关系,要求实时计算每次新增节点后树上所有可能的朋友对数。 ... [详细]
  • 软件项目管理实践——Jenkins持续集成与Maven、GitHub的应用
    本文详细介绍了如何利用Jenkins实现持续集成,以及Maven和GitHub在项目开发中的具体应用。包括环境搭建、工具安装、项目创建及代码管理等关键步骤。 ... [详细]
  • 解决Jenkins编译过程中ERROR: Failed to Parse POMs的问题
    在使用Jenkins进行自动化构建时,有时会遇到“ERROR: Failed to parse POMs”的错误。本文将详细分析该问题的原因,并提供有效的解决方案。 ... [详细]
  • 本文探讨了如何在模运算下高效计算组合数C(n, m),并详细介绍了乘法逆元的应用。通过扩展欧几里得算法求解乘法逆元,从而实现除法取余的计算。 ... [详细]
  • Startup 类配置服务和应用的请求管道。Startup类ASP.NETCore应用使用 Startup 类,按照约定命名为 Startup。 Startup 类:可选择性地包括 ... [详细]
  • 探讨如何优化 npm 构建过程,提升开发效率,减少构建时间,并介绍自动化部署的最佳实践。 ... [详细]
  • 本题探讨了在一个有向图中,如何根据特定规则将城市划分为若干个区域,使得每个区域内的城市之间能够相互到达,并且划分的区域数量最少。题目提供了时间限制和内存限制,要求在给定的城市和道路信息下,计算出最少需要划分的区域数量。 ... [详细]
  • 给定行数 numRows,生成帕斯卡三角形的前 numRows 行。例如,当 numRows 为 5 时,返回的结果应为:[[1], [1, 1], [1, 2, 1], [1, 3, 3, 1], [1, 4, 6, 4, 1]]。 ... [详细]
author-avatar
老鼠爱上毛ee
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有