Jenkins快速入门教程
前几年在参与维护德国的一个软件项目时,他们使用了Atlassian Bamboo和Bitbucket实现了自动化流程。
当我提交代码到Bitbucket仓库分支时,Bamboo会自动打包,并提供安装包下载。
Bitbucket是什么?
Bitbucket Cloud 是一款基于 Git 的代码托管与协作工具,专为团队打造。Bitbucket 一流的 Jira 和 Trello 集成旨在集结整个软件团队以便共同处理一个项目。我们为您的团队提供了一个平台,方便您的团队开展从概念到云的代码协作、通过自动化测试构建优质代码,以及从容地部署代码。
Bamboo是什么?
Bamboo是Atlassian推出的持续集成与持续交付(CI/CD)工具,用于自动化构建、测试和部署流程,并与Jira、Bitbucket等产品深度集成。
这两款产品都是商业付费使用,一个5-10人小型团队一年的费用大概在3-5w,我还吃不上细糠,所以只能自己去搭建了。
这里我选用的方案是Gogs + Jenkins。Gogs实现代码托管,Jenkins实现CI/CD.
关于Gogs的搭建,在我前面的文章中有介绍过:https://www.cnblogs.com/zhaotianff/p/17887191.html
后续会再更新如何 使用Gogs配合Jenkins实现自动化流程。
本文主要介绍Jenkins的使用。
Jenkins是什么
Jenkins 是一款使用Java开发的主流开源自动化服务器,开发人员借助它实现软件构建、测试与部署流程自动化。它是持续集成 / 持续交付(CI/CD)流水线的核心基础工具,支持研发团队高频合并代码变更,并自动将代码发布至生产环境。
项目地址:https://github.com/jenkinsci/jenkins
安装步骤
1、安装Java环境
打开Oracle网站Java Downloads | Oracle 中国下载JDK
如果不想麻烦就直接下载Installer或MSI Installer,这两个是安装包,可以省去配置的麻烦。

我这里直接下载压缩包,自行解压。
注意:因为Jenkins里面的插件也是依赖Java环境的,所以必须要配置环境变量。如果是使用Installer或MSI Installer安装的,可以跳过这一步。
运行输入sysdm.cpl,切换到【高级】页,打开环境变量设置

在系统变量这里增加一个JAVA_HOME变量,变量值设置为JDK的路径

然后在Path里增加一行%JAVA_HOME%\bin路径

此时打开命令提示符/PowerShell/终端,输入Java,输出如下:

2、下载Jenkins
下载地址:http://mirrors.jenkins.io/war-stable/latest/jenkins.war
如果下载速度比较慢,可以到这里下载
https://mirrors.tuna.tsinghua.edu.cn/jenkins/war/
这里需要注意Java和Jenkins的版本对应关系

3、启动Jenkins
下面的命令行可以指定8080端口启动jenkins
注意:需要在已配置java环境变量参数的情况下,在jenkins.war文件所在的目录下启动,不然会提示找不到jenkins.war
1 java -jar jenkins.war --httpPort=8080
启动效果如下

4、打开浏览器,访问http://localhost:8080进行配置

这里需要输入密码,密码的位置在前面的控制台上已经打印出来了

题外话:
做开Java开发的同学都知道,在安装Java时是必须要配置环境变量的,要先创建一个%JAVA_HOME%的变量。这是因为很多依赖Java的软件会去读取这个环境变量,如果读取不到Java的路径,可能就会报错。
Jenkins这里也不例外,它需要配置一个%JENKINS_HOME%的环境变量。
这个环境变量会决定后续一些文件的输出路径,如日志、配置等。
我们将jenkins.war放到一个固定路径,例如D:\Software\Jenkins\jenkins.war。
然后再打开环境变量配置界面,增加一个JENKINS_HOME变量

注意:这一步不是必须的,如果没有配置,这些文件会输出在C:\Users\你的用户名\.jenkins和jenkins.war所在目录下。
在Windows开发中,我一般很少去配置环境变量,在需要时,调用SetCurrentDirectory win32 api函数即可解决路径问题。
5、配置Jenkins
输入密码后进入插件配置界面

我这里直接点了安装推荐的插件

安装完成后进入管理员用户配置界面
如果遇到安排失败的插件也没关系,直接点继续,进入管理员用户配置界面

点击保存并完成,进入实例配置,这里直接用默认的配置

进入主界面

注意:
因为网络原因或其它原因,在前面安装插件时,会出现插件安装失败的情况。可以尝试下面的方法。
1、点击设置,进入插件管理

2、选择高级设置
找到升级站点,修改为https://mirrors.huaweicloud.com/jenkins/update-center.json

此时再手动去安装前面安装失败的插件。
如果还是不行,可以直接打开 https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/
找到你需要的插件,并下载对应版本的文件,然后手动部署。

当进入系统配置页面没有任何报错时,代表所有的插件包括依赖插件都已经安装好了。

Pipeline
在系统架构设计中,有一种模式叫管道-过滤器(Pipe-Filter)模式。这种模式的核心就是将复杂任务拆解为多个处理单元(过滤器),数据在上一个单元处理完毕后,自动流入下一个单元继续处理。
Jenkins中的Pipeline(流水线)也是类似的原理。例如,代码提交后(或通过定时/手动触发),流水线会按依赖关系依次执行构建、测试、部署等阶段。
但一般在管道-过滤器模式中,处理的是纯数据。Jenkins Pipeline不仅传递数据流,更侧重于构建产物(Artifact)的流转和环境状态的传递。
同时,现代Pipeline还支持并行执行非依赖阶段,从而大幅提升自动化效率,本质上是将线性的“数据流”扩展为了带有依赖关系的“任务编排”。
通过下图我们就可以有一个直观的了解:

Jenkinsfile
对Jenkins 流水线的定义被写在一个文本文件中 (成为 Jenkinsfile),该文件可以被提交到项目的源代码的控制仓库。
这是"流水线即代码"的基础; 将CD 流水线作为应用程序的一部分,像其他代码一样进行版本化和审查。 创建 `Jenkinsfile`并提交它到源代码控制中提供了一些即时的好处:
-
自动地为所有分支创建流水线构建过程并拉取请求。
-
在流水线上代码复查/迭代 (以及剩余的源代码)。
-
对流水线进行审计跟踪。
-
该流水线的真正的源代码, 可以被项目的多个成员查看和编辑。
流水线语法
Jenkins Pipeline 支持两种核心语法:声明式流水线(Declarative Pipeline) 和脚本化流水线(Scripted Pipeline)。它们底层使用相同的执行引擎-,核心区别在于设计哲学和灵活性。
两种语法对比
声明式流水线
这是Jenkins官方推荐的、更现代化的流水线写法。
在声明式流水线语法中, pipeline 块定义了整个流水线中完成的所有的工作。
-
核心构成:
-
agent:定义流水线或某个阶段在哪里执行(如any,label)。 -
stages:包含一个或多个stage,每个stage代表流水线的一个逻辑阶段。 -
steps:在stage内部,定义要执行的具体操作,这是最核心的部分。 -
post:定义流水线或阶段执行后的操作(如always,success,failure。 -
when:条件判断指令,用于控制阶段是否执行。
-
-
优点:代码结构清晰,可读性和可维护性极高;语法错误能在脚本开始时被快速发现。
我们可以看一下一个简单的声明式流水线示例
1 pipeline { 2 agent any // 1 3 stages { 4 stage('Build') { // 2 5 steps { 6 // 3 7 } 8 } 9 stage('Test') { // 4 10 steps { 11 // 5 12 } 13 } 14 stage('Deploy') { // 6 15 steps { 16 // 7 17 } 18 } 19 } 20 }
步骤1:在任何可用的代理上,执行流水线或它的任何阶段。
步骤2:定义 "Build" 阶段。
步骤3:执行与 "Build" 阶段相关的步骤。
步骤4:定义"Test" 阶段。
步骤5:执行与"Test" 阶段相关的步骤。
步骤6:定义 "Deploy" 阶段。
步骤7:执行与 "Deploy" 阶段相关的步骤。
方便大家理解 ,这里我们先试验 一下。
打开Jenkins主页,选择Create a job

输入任务名称,选项类型为流水线


浙公网安备 33010602011771号