MXBLOG - jenkins
type: channel
link: https://mx.moonjer.com/category/jenkins/
items: jenkins详细教程

jenkins详细教程
type: item
date: 2022-04-19T23:26:00+08:00
description: 最近花了一段时间研究jenkins这个工具。所以写下这篇文章，算是当做记录吧！一、jenkins是什么？ Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具，起源于Hudson（Hudson是商用的），主要用于持续、自动的构建/测试软件项目、监控外部任务的运行（这个比较抽象，暂且写上，不做解释）。Jenkins用Java语言编写，可在Tomcat等流行的servlet容器中运行，也可独立运行。通常与版本管理工具(SCM)、构建工具结合使用。常用的版本控制工具有SVN、GIT，构建工具有Maven、Ant、Gradle。二、CI/CD是什么？ CI(Continuous integration，中文意思是持续集成)是一种软件开发时间。持续集成强调开发人员提交了新代码之后，立刻进行构建、（单元）测试。根据测试结果，我们可以确定新代码和原有代码能否正确地集成在一起。借用网络图片对CI加以理解。CD(Continuous Delivery， 中文意思持续交付)是在持续集成的基础上，将集成后的代码部署到更贴近真实运行环境(类生产环境)中。比如，我们完成单元测试后，可以把代码部署到连接数据库的Staging环境中更多的测试。如果代码没有问题，可以继续手动部署到生产环境。下图反应的是CI/CD 的大概工作模式。三、使用Jenkins进行PHP代码(单元)测试、打包。 Jenkins是一个强大的CI工具，虽然本身使用Java开发，但也能用来做其他语言开发的项目CI。下面讲解如何使用Jenkins创建一个构建任务。 登录Jenkins， 点击左侧的新建，创建新的构建任务。跳转到如下界面。任务名称可以自行设定，但需要全局唯一。输入名称后选择构建一个自由风格的软件项目(其他选项不作介绍)。并点击下方的确定按钮即创建了一个构建任务。之后会自动跳转到该job的配置页面。下图是构建任务设置界面，可以看到上方的几个选项"General", "源码管理"， "构建触发器"，"构建环境"， "构建"， "构建后操作"。下面逐一介绍。1.GeneralGeneral是构建任务的一些基本配置。名称，描述之类的。 项目名称: 是刚才创建构建任务步骤设置的，当然在这里也可以更改。描述: 对构建任务的描述。 丢弃旧的构建： 服务器资源是有限的，有时候保存了太多的历史构建，会导致Jenkins速度变慢，并且服务器硬盘资源也会被占满。当然下方的"保持构建天数" 和 保持构建的最大个数是可以自定义的，需要根据实际情况确定一个合理的值。其他几个选项在这里不做介绍，有兴趣的可以查看Jenkins"帮助信息"， 会有一个大概的介绍。不过这些"帮助信息"都是英文的。2.源码管理源码管理就是配置你代码的存放位置。Git: 支持主流的github 和gitlab代码仓库。因我们的研发团队使用的是gitlab，所以下面我只会对该项进行介绍。Repository URL：仓库地址Credentials：凭证。可以使用HTTP方式的用户名密码，也可以是RSA文件。 但要通过后面的"ADD"按钮添加凭证。Branches to build：构建的分支。*/master表示master分支，也可以设置为其他分支。源码浏览器：你所使用的代码仓库管理工具，如github, gitlab. URL：填入上方的仓库地址即可。Version: 8.7 这个是我们gitlab服务器的版本。Subversion：就是SVN，这里不作介绍。3.构建触发器构建触发器，顾名思义，就是构建任务的触发器。触发远程构建(例如，使用脚本): 该选项会提供一个接口，可以用来在代码层面触发构建。这里不做介绍，后期可能会用到。Build after other projects are built： 该选项意思是"在其他projects构建后构建"。这里不作介绍，后期可能会用到该选项。Build periodically： 周期性的构建。很好理解，就是每隔一段时间进行构建。日程表类似 linux crontab书写格式。如下图的设置，表示每隔30分钟进行一次构建。Build when a change is pushed to GitLab：当有更改push到gitlab代码仓库，即触发构建。后面会有一个触发构建的地址，一般被称为webhooks。需要将这个地址配置到gitlab中，webhooks如何配置后面介绍。这个是常用的构建触发器。Poll SCM：该选项是配合上面这个选项使用的。当代码仓库发生改动，jenkins并不知道。需要配置这个选项，周期性的去检查代码仓库是否发生改动。4.构建环境构建环境就是构建之前的一些准备工作，如指定构建工具(在这里我使用ant)。With Ant：选择这个工具，并指定ant版…