实战:向GitHub提交代码时触发Jenkins自动构建

简介: 当我们提交代码到GitHub后,可以在Jenkins上执行构建,但是每次都要动手去执行略显麻烦,今天我们就来实战Jenkins的自动构建功能,每次提交代码到GitHub后,Jenkins会进行自动构建

欢迎访问我的GitHub

这里分类和汇总了欣宸的全部原创(含配套源码): https://github.com/zq2599/blog_demos

本篇概览

  • 当我们提交代码到GitHub后,可以在Jenkins上执行构建,但是每次都要动手去执行略显麻烦,今天我们就来实战Jenkins的自动构建功能,每次提交代码到GitHub后,Jenkins会进行自动构建;

前期准备工作

  • 进行本章的实战前,推荐您参照《docker下的Jenkins安装和体验》做安装和体验的实战,以便对Jenkins服务有初步了解;

重要前提

  1. GitHub收到提交的代码后要主动通知Jenkins,所以Jenkins所在服务器一定要有外网IP,否则GitHub无法访问,我的Jenkins服务器是部署在腾讯云的云主机上,带有外网IP;
  2. 本次实战要提交源码到GitHub,所以您需要有一个GitHub号,并在上面创建工程;

demo工程源码

  • 本次用来在Jenkins上构建的工程是个springboot的web工程,地址是:git@github.com:zq2599/jenkinsdemo.git,用浏览器访问的地址是:https://github.com/zq2599/jenkinsdemo.git
  • 代码很简单,只有一个controller,接收http请求返回一个字符串,如下所示:
@RestController
public class Hello {
    @RequestMapping("/")
    public String sayHello(){
        return "3. Hello jenkins, " + new Date();
    }
}
  • 您需要在自己的GitHub创建一个项目,源码可以参照上述demo工程的源码;

实战步骤梳理

  • 本次整个实战过程依次为如下步骤:
  1. GitHub上准备一个spring boot的web工程;
  2. GitHub上配置Jenkins的webhook地址;
  3. 在GitHub上创建一个access token,Jenkins做一些需要权限的操作的时候就用这个access token去鉴权;
  4. Jenkins安装GitHub Plugin插件;
  5. Jenkins配置GitHub访问权限;
  6. Jenkins上创建一个构建项目,对应的源码是步骤1中的web工程;
  7. 修改web工程的源码,并提交到GitHub上;
  8. 检查Jenkins的构建项目是否被触发自动构建,构建成功后,下载工程运行,看是不是基于最新的代码构建的;

webhook地址

  • webhook是通知Jenkins时的请求地址,用来填写到GitHub上,这样GitHub就能通过该地址通知到Jenkins;
  • 假设Jenkins所在服务器的地址是:192.168.0.1,端口为8080,那么webhook地址就是http://192.168.0.1:8080/github-webhook
  • 再次提醒,上述地址必须是外网也能访问的,否则GitHub无法访问到Jenkins;

配置GitHub

  • 登录GitHub,进入要本次构建用到的工程;
  • 在工程主页面点击右上角的"Settings",再点击左侧"Webhooks",然后点击“Add webhook”,如下图:
    这里写图片描述
  • 如下图,在"Payload URL"位置填入webhook地址,再点击底部的"Add webhook按钮",这样就完成webhook配置了,今后当前工程有代码提交,GitHub就会向此webhook地址发请求,通知Jenkins构建:
    这里写图片描述

生成Personal access tokens

  • Jenkins访问GitHub工程的时候,有的操作是需要授权的,所以我们要在GitHub上生成授权的token给Jenkins使用,这就是Personal access tokens,生成步骤如下:
  • 登录GitHub,进入"Settings"页面,点击左下角的"Developer settings",如下图:

这里写图片描述

  • 跳转到"Developer settings"页面后,点击左下角的“Personal access tokens”,如下图:

这里写图片描述

  • 跳转到"Personal access tokens"页面后,点击右上角的"Generate new token"按钮,如下图:

这里写图片描述

  • 可能会提示输入GitHub密码,输入后跳转到创建token的页面,如下图所示,输入title,再勾选"repo"和"admin:repo_hook",再点击底部的"Generate token"按钮,就能产生一个新的access token,将此字符串复制下来,后面jenkins任务中会用到:

这里写图片描述

Jenkins配置

  • GitHub Plugin插件,在"系统管理->管理插件"位置检查此插件是否已经安装,没有的话请先安装;
  • 配置GitHub,点击“系统管理->系统设置”,如下图:
    这里写图片描述
  • 在系统设置页面找到"GitHub",配置一个"GitHub Server",如下图,"API URL"填写"https://api.github.com","Credentials"位置如下图红框所示,选择"Add->Jenkins":
    这里写图片描述
  • 弹出的页面中,"Kind"选择"Secret text","Secret"填入前面在GitHub上生成的Personal access tokens,Description随便写一些描述信息,如下图:
    这里写图片描述
  • 填写完毕后,点击右侧的"Test connection"按钮,如果信息没有填错,显示的内容如下图所示:
    这里写图片描述
  • 点击页面最底部的"保存"按钮;

GitHub项目的项目主页和仓库地址

  • 项目主页和仓库地址是不同的,如下图,红框1中是项目主页,点击红框2的按钮后,红框3中是仓库地址(要用HTTPS的,不用SSH 的):

这里写图片描述

新建构建项目

  • 在Jenkins上新建一个maven构建项目,名为test003,如下图:

这里写图片描述

  • 接下来设置test003的配置信息,分为"源码管理设置"和"构建环境设置"两部分;

源码管理设置

这里写图片描述

  • 上图中每个红框的设置如下解释:
  1. 选择"Git";
  2. "Repository URL"输入仓库地址:https://github.com/zq2599/jenkinsdemo.git
  3. "Credentials"创建一个Credentials,Kind选择"Username with password",Username输入GitHub账号,Password输入GitHub密码;
  4. "源码库浏览器"选择"githubweb";
  5. "URL"输入项目主页:https://github.com/zq2599/jenkinsdemo
  6. "构建触发器"中勾选"GitHub hook trigger for GiTScm polling";

构建环境设置

  • 如下图所示,勾选"Use secret text(s) or file(s)",下面的"Credentials"选择我们之前配置过的"Personal access tokens"

这里写图片描述

  • 设置完成后,点击页面底部的"保存"按钮;

修改web工程代码并提交到GitHub

  • 将GitHub仓库的代码clone到本地,做一些修改然后提交到GitHub上,例如我修改了Hello.java中的源码(修改了sayHello方法的return的字符串的内容),如下所示:
@RestController
public class Hello {

    @RequestMapping("/")
    public String sayHello(){
        //修改返回的字符串的内容
        return "abcdefg. Hello jenkins, " + new Date();
    }
}
  • 提交到GitHub的操作如下图所示:

这里写图片描述

Jenkins自动构建

  • 回到Jenkins的test003页面,可以看到已经开始自动构建了,如下图:

这里写图片描述

验证自动构建结果

  • 在test003的页面,点击"工作空间"->"工作区",如下图:
    这里写图片描述
  • 点击下图红框中的"mavendockerplugindemo-0.0.1-SNAPSHOT.jar",浏览器就会下载这个文件:
    这里写图片描述
  • 下载成功后,在mavendockerplugindemo-0.0.1-SNAPSHOT.jar所在目录下执行命令java -jar mavendockerplugindemo-0.0.1-SNAPSHOT.jar,web应用启动成功,如下图:
    这里写图片描述
  • 浏览器输入localhost:8080,可以看到web应用返回的内容是我们刚刚提交的最新内容,如下图:

这里写图片描述

  • 至此,GitHub提交触发Jenkins自动构建的实战就完成了,希望能对您搭建持续构建环境有所帮助。

欢迎关注阿里云开发者社区博客:程序员欣宸

学习路上,你不孤单,欣宸原创一路相伴...
相关文章
|
3月前
|
人工智能 自然语言处理 安全
Milvus x n8n :自动化拆解Github文档,零代码构建领域知识智能问答
本文介绍了在构建特定技术领域问答机器人时面临的四大挑战:知识滞后性、信息幻觉、领域术语理解不足和知识库维护成本高。通过结合Milvus向量数据库和n8n低代码平台,提出了一种高效的解决方案。该方案利用Milvus的高性能向量检索和n8n的工作流编排能力,构建了一个可自动更新、精准回答技术问题的智能问答系统,并介绍了部署过程中的可观测性和安全性实现方法。
|
3月前
|
存储 人工智能 自然语言处理
让你拥有一个AI大脑,这个32.1k Github项目是你不错的选择,支持PDF、Markdown、代码、视频成为你的知识内容
Quivr 是开源全栈 RAG 平台,助你打造“第二大脑”,支持多文档类型与多种 LLM,实现智能搜索与聊天。具备语义检索、本地部署、隐私保护等功能,适用于个人知识管理与企业知识库,界面简洁易用,是高效智能问答的理想选择。
197 0
|
3月前
|
Java jenkins 应用服务中间件
结合Jenkins与Tomcat,实施Maven项目的自动构建和部署流程。
任何项目构建和部署的自动化流程,总离不开对各个环节精细把控与密切配合。涉及到源代码管理、构建工具、持续集成服务器以及最终的运行时环境的协调。通过上述简洁实用的步骤,可以实现Maven项目从源代码到运行状态的无缝过渡,进而提升软件开发的效率与质量。
270 0
|
3月前
|
数据采集 缓存 JSON
GitHub 开源爆款工具|MediaCrawler:程序员零门槛采集抖音/小红书/B站等社交评论,30K star 背后的场景实战揭秘!
MediaCrawler 是一个支持多平台的社交媒体数据爬虫工具,覆盖小红书、抖音、B站等主流平台,提供关键词/ID爬取、评论采集、登录态缓存、代理池等功能,结合 Playwright 实现浏览器模拟,降低逆向难度,适合内容运营、数据分析等场景,开源免费,使用简便。
760 0
|
4月前
|
自然语言处理 关系型数据库 PostgreSQL
Github 10.1k star 的高颜值实时Kanban,看完就想收藏!引爆团队效率的开源利器:Planka 实战深度解析
Planka 是一款开源协作看板工具,支持多人实时协作、Markdown 编辑、通知提醒等功能。基于 MIT 许可,可自托管部署,适合中小团队和个人高效管理任务。
261 0
|
5月前
|
Ubuntu jenkins 机器人
在Jenkins上配置触发Ubuntu环境的图形用户界面(GUI)构建任务。
以上,这趟融合了技术与艺术的Jenkins配置之旅就告一段落了。记住,技术应当像艺术一样有趣和生动,这样才能激发出最大的创新和效率。
153 2
|
6月前
|
JSON JavaScript API
MCP 实战:用配置与真实代码玩转 GitHub 集成
MCP 实战:用配置与真实代码玩转 GitHub 集成
1430 4
|
8月前
|
人工智能 网络安全 开发工具
vscode代码推送到github库菜鸡专用教程
vscode代码推送到github库菜鸡专用教程
|
10月前
|
Devops Shell 网络安全
git使用之如何将一套代码同时推送至github|gitee|gitcode|gitlab等多个仓库-含添加ssh-优雅草央千澈完美解决-提供整体提交代码
git使用之如何将一套代码同时推送至github|gitee|gitcode|gitlab等多个仓库-含添加ssh-优雅草央千澈完美解决-提供整体提交代码
456 16
git使用之如何将一套代码同时推送至github|gitee|gitcode|gitlab等多个仓库-含添加ssh-优雅草央千澈完美解决-提供整体提交代码
|
开发工具 git Python
代码管理记录(二):Github代码上传实操
本文是关于如何使用Git将本地代码上传到GitHub的实操指南。介绍了Git的基本概念、安装方法,并通过详细的步骤指导用户从GitHub创建仓库到使用Git命令初始化、添加、提交代码,最终将代码推送到远程仓库。同时,还汇总了一些常见的错误及其解决方法。
356 2
代码管理记录(二):Github代码上传实操

热门文章

最新文章

推荐镜像

更多