热门标签 | 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结果确认

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


推荐阅读
  • 本文详细介绍了在PHP中如何获取和处理HTTP头部信息,包括通过cURL获取请求头信息、使用header函数发送响应头以及获取客户端HTTP头部的方法。同时,还探讨了PHP中$_SERVER变量的使用,以获取客户端和服务器的相关信息。 ... [详细]
  • 使用 ModelAttribute 实现页面数据自动填充
    本文介绍了如何利用 Spring MVC 中的 ModelAttribute 注解,在页面跳转后自动填充表单数据。主要探讨了两种实现方法及其背后的原理。 ... [详细]
  • 本文详细介绍了Socket在Linux内核中的实现机制,包括基本的Socket结构、协议操作集以及不同协议下的具体实现。通过这些内容,读者可以更好地理解Socket的工作原理。 ... [详细]
  • egg实现登录鉴权(七):权限管理
    权限管理包含三部分:访问页面的权限,操作功能的权限和获取数据权限。页面权限:登录用户所属角色的可访问页面的权限功能权限:登录用户所属角色的可访问页面的操作权限数据权限:登录用户所属 ... [详细]
  • 在尝试加载支持推送通知的iOS应用程序的Ad Hoc构建时,遇到了‘no valid aps-environment entitlement found for application’的错误提示。本文将探讨此错误的原因及多种可能的解决方案。 ... [详细]
  • publicclassBindActionextendsActionSupport{privateStringproString;privateStringcitString; ... [详细]
  • 在开发过程中,我最初也依赖于功能全面但操作繁琐的集成开发环境(IDE),如Borland Delphi 和 Microsoft Visual Studio。然而,随着对高效开发的追求,我逐渐转向了更加轻量级和灵活的工具组合。通过 CLIfe,我构建了一个高度定制化的开发环境,不仅提高了代码编写效率,还简化了项目管理流程。这一配置结合了多种强大的命令行工具和插件,使我在日常开发中能够更加得心应手。 ... [详细]
  • ShiftLeft:将静态防护与运行时防护结合的持续性安全防护解决方案
    ShiftLeft公司是一家致力于将应用的静态防护和运行时防护与应用开发自动化工作流相结合以提升软件开发生命周期中的安全性的公司。传统的安全防护方式存在误报率高、人工成本高、耗时长等问题,而ShiftLeft提供的持续性安全防护解决方案能够解决这些问题。通过将下一代静态代码分析与应用开发自动化工作流中涉及的安全工具相结合,ShiftLeft帮助企业实现DevSecOps的安全部分,提供高效、准确的安全能力。 ... [详细]
  • 使用git+gitlab搭建私有的版本控制环境
    使用git+gitlab搭建私有的版本控制环境*硬件环境:git客户端Windows版,gitlabubuntu版,Windows10,ubuntu16.0.3一、git下载与安装 ... [详细]
  • 题面:P3178[HAOI2015]树上操作好像其他人都嫌这道题太容易了懒得讲,好吧那我讲。题解:第一个操作和第二个操作本质上是一样的&# ... [详细]
  • 长期从事ABAP开发工作的专业人士,在面对行业新趋势时,往往需要重新审视自己的发展方向。本文探讨了几位资深专家对ABAP未来走向的看法,以及开发者应如何调整技能以适应新的技术环境。 ... [详细]
  • 关于ScrumXPDevOps的学习
    最近听了ECUG大会上孙敬云老师的分享感觉受益匪浅,毕竟大学课本上只讲到瀑布模型就没有下文了,工作以后一直贯彻的都是Scrum路线,一直也没有时间好好的去学习整理这部分的知识,直到 ... [详细]
  • 局限性_Scrum框架的局限性
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Scrum框架的局限性相关的知识,希望对你有一定的参考价值。在很多工作坊的讨论中, ... [详细]
  • 解决Sharepoint 2013运行状况分析出现的“一个或多个服务器未响应”问题的方法
    本文介绍了解决Sharepoint 2013运行状况分析中出现的“一个或多个服务器未响应”问题的方法。对于有高要求的客户来说,系统检测问题的存在是不可接受的。文章详细描述了解决该问题的步骤,包括删除服务器、处理分布式缓存留下的记录以及使用代码等方法。同时还提供了相关关键词和错误提示信息,以帮助读者更好地理解和解决该问题。 ... [详细]
  • 周末,受微软公司的邀请,参加微软主持的云容器培训会议,为参加培训的学院提供技术辅导,引导学员体验微软云端的DevOps实践。说是辅导,实际上自己也学到了许多的内容,包括K8S集群、负载、Azure中 ... [详细]
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社区 版权所有