Jenkins教程

Jenkins

这几天在给公司内部做一个jenkins的培训,讲解一些基本的Jenkins的功能和使用。顺便把培训的内容整理一下,写成了这个教程。

下面的教程都是使用的Jenkins 2.32.1 如果你使用的是其他的版本,可能会有差别。

1 Jenkins安装与配置

1.1 安装

Jenkins最简单的安装方式就是使用预先编译好的war包。从 https://jenkins.io/download/ 页面下载Generic Java Package包就可以了。

下载页面部分截图

下载完毕后,运行命令

java -jar jenkins.war

就可以运行jenkins了。简单明了!

在第一次运行Jenkins的时候,需要注意日志中会出现如下的信息:

Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:
9ad5910ea6c0406291f960bb10a10691
This may also be found at: /Users/afrag/.jenkins/secrets/initialAdminPassword

上面的日志里就是Jenkins自动生成的初始管理密码,在后续的配置过程中要用到。

1.2 初始配置

打开浏览器,输入地址 http://localhost:8080 就可以进入jenkins。 第一次使用jenkins的时候,需要输入jenkins密码并进行初始配置,页面如下:

第一次进入的首页

输入初始管理密码之后,点击Continue按钮,进入下一页,选择要安装的插件。Jenkins的大部分的功能都是由插件来实现的,具体的我们在后面会讲解。

安装插件页面

可以默认安装推荐的插件,也可以自行选择要安装的插件。这里我选择的是 Select plugins to install,自行选择要安装的插件。在这里可以根据项目的需要,安装不同的插件。当日也可以在以后添加新的插件。
在选择插件页面,除了默认的插件外,我添加了:

  • Throttle Concurrent Builds Plug-in
  • Checkstyle Plug-in
  • JUnit Plugin
  • Build Pipeline Plugin
  • Conditional BuildStep
  • Role-based Authorization Strategy
  • Publish Over SSH
  • SSH plugin

选择完插件之后,点击install,进入插件安装页面。插件安装需要一段时间(视网速而定,在国内通常不会太快,你懂的),大家可以去喝杯水,活动活动。
安装过程中,可能有些plugin会失败,多retry几次把。

插件安装完之后,会进入创建管理员用户的界面,没有什么好说的。到这里,Jenkins的初始配置就完成了,可以正式使用了。

2 Jenkins的项目配置基础

后续的构建中,我们要使用到Maven和Git。关于Maven和Git的安装,不在本教程的范围之内。

2.1 创建项目

在Jenkins首页页面左上角,点击新建菜单,如下图所示:

新建项目菜单

在新创建的项目中

  • 输入新项目的名称HelloWorld(这个不能和其他的项目重名)。
  • 选择构建项目的类型,我们这里使用“构建一个Maven项目”
  • 点击OK,创建新的构建项目

2.2 配置构建项目

新的构建项目创建好之后,会自动进入项目配置的页面。这个页面总共分为9个部分,可以通过页面上方的tab快速进入不同的部分,如下图所示:

image.png

2.2.1 General配置

  • 项目名称:可以修改项目的名称
  • 描述:描述项目的作用和需要说明的东西
    其他的选项都有相应的说明,可以点击相应的问号(?)图标查看说明(说明都是英文,但是都不太困难)。目前我们暂时用不到,在后面的进阶部分会对其中部分做讲解。

2.2.2 源码管理

源码管理用来配置从哪里获取要构建的源代码。这里我们选择Git。选择Git后,需要填入如下的信息:

git信息
  • Repository URL:Git的Repository的地址
  • Credential:访问Git的身份认证的凭证,可以点击右侧的Add按钮添加一个新的凭证,也可以选择已有的凭证。我们这里通过Add添加一个新的凭证。关于添加凭证的详细内容,可以参考后面的进阶部分的凭证相关的内容。
    -Branches to build: 这里可以选择要拉取代码的分支、tag等信息,从而获取指定版本的代码。默认使用master分支。

2.2.3 构建触发器

构建触发器中的配置决定了我们的构建项目什么时候会执行。在使用Maven项目的时候,我们最常用的构建触发器有以下几种:

  • Build whenever a SNAPSHOT dependency is built:当前项目所依赖的其他的SNAPSHOT组件构建成功的时候。
  • Build after other projects are built : 当指定的project构建之后,构建当前project
  • Build periodically:定时构建
  • Poll SCM:定时查询是否有更新,有更新则进行构建

如果希望没错人工进行构建,可以什么都不选。

我们这里选择Poll SCM,设置如下图所示:


Poll SCM设置
Poll SCM设置

上面的设置中,每15分钟查询一次代码仓库,如果有代码变化的话,就重新进行构建。

2.2.4 构建

在maven项目中,我们采用maven来进行编译、测试和打包。只需要指定pom文件,以及相应的maven参数就可以了。


构建设置
构建设置

2.2.5 部署

可以采用执行shell命令的方式来进行部署。如下图所示:


shell脚本进行部署
shell脚本进行部署

2.3 总结

在日常工作中,jenkins用来做持续集成,包括从源码仓库获取代码、编译、测试、打包、部署。这些步骤都可以通过jenkins完成。

3 Jenkins的项目配置进阶

前面讲了最基本的jenkins实现持续集成的配置。下面来讲讲常用的一些其他的“高级”一些的配置。

3.1 使用便利进行构构建

有些时候,我们需要在构建中添加一些参数变量。例如:源码的branch、版本号等等。
在Jenkins中,参数变量可以分为3类:

  • 内置变量
  • 全局变量
  • 局部变量

3.1.1 内置变量

内置的参数变量主要是和单次构建相关的预先定义的变量。在前面的 2.2.5 节的“shell脚本进行部署”的图例中,可以看到在下方有一个链接"the list of available environment variables",其中列出了所有可以使用内置变量及其含义。

3.1.2 全局变量

全局变量就是所有的jenkins项目都可以引用的变量。在jenkins首页,点击左上角的“系统管理”菜单,然后在出现的页面中选择“系统设置”;在出现的页面中,在如下图所示的区域中,就可以设置全局变量:


jenkins全局变量
jenkins全局变量

3.1.3 局部变量

局部变量在各个构建项目内部设置。在项目配置的General区域中,选中“参数化构建”,就可以添加局部变量了。如下图所示:


jenkins局部变量
jenkins局部变量

3.1.4 变量的使用

在项目的配置中,我们可以使用 ${变量名} 的方式来引用变量。(我的经验是在绝大部分地方可以使用,还是有一些插件的配置中不能使用变量)。

3.2 远程部署

远程部署通常分为以下几个步骤:

  1. 关闭旧的程序
  2. 将新的程序包上传到远程机器
  3. 启动新的程序

第二步可能有些小的变化,例如将程序包上传到仓库,然后远程机器从仓库获取等等。但是万变不离其宗。

这些步骤都可以通过ssh/scp来实现。

需要指出的是,如果是通过ssh来远程启动应用程序,在构建关闭的时候,会自动关闭ssh所启动的所有的进程。如果构建的结果是需要长期执行的(通常情况下都是这样),那么我们可以结合指定BUILD_ID和使用nohup命令,来保证程序在后台运行。

3.3 触发其他的构建项目

正在撰写,请稍待。

3.4 清除旧的构建

正在撰写,请稍待。

4 Jenkins安全

正在撰写,请稍待。

6 Pipeline

正在撰写,请稍待。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容