#jenkins安装配置使用实践及实现持续化集成(手把手教你使用jenkins)

前言:

为什么要实现持续化集成?
开发过程中有很多时候都是重复的工作,而这些乏味的工作留给机器,在一定程度上可以节约开发者的时间,也避免一些手动配置带来的问题(偶尔手贱点错了,导致得重新来一次)。那这时候我们就可以使用jenkins 来完成这些工作。简单来说持续化集成有以下优点:

优化工作流程,节约工作时间,快速迭代版本
随时可以部署,可操作者也不再只是开发人员,而是整个Team。
避免低级错误,我们手动部署时候,难免可能因为手误或者遗忘了需要配置的地方,这样子许多时候就需要重新进行部署。

一、Homebrew是什么?

Homebrew是一款Mac OS平台下的软件包管理工具,拥有安装、卸载、更新、查看、搜索等很多实用的功能。简单的一条指令,就可以实现包管理,而不用你关心各种依赖和文件路径的情况,十分方便快捷。

二、安装 Homebrew

打开终端,输入以下代码,稍等片刻,输入密码,等待安装完成

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

ps:参考链接1
ps:参考链接2

三、 Homebrew辅助工具Cakebrew和LaunchRocket(这一步可以省略)

1.Cakebrew 相当于Homebrew可视化管理软件工具,可以轻松的下载安装卸载软件。Cakebrew可以通过brew命令安装

brew cask install cakebrew

也可以直接到Cakebrew官网下载dmg安装,我用brew命令安装失败了,最后去官网下的dmg安装成功了.

WeChate8d509d5fb53a56db54d07948fd2e326.png

注意:点红框按钮下载可以,点绿框按钮下载很慢,使用brew命令安装失败应该跟这个有关,下载软件的链接和绿框按钮的下载链接是同一个链接,点红框下载就是了
2.LaunchRocket 管理root 启动开机启动软件,以及开始或停止服务。安装命令:

brew cask install launchrocket

也可以点击LaunchRocket去下载安装
ps:参考链接3

四、 Jenkins 安装

ps:前三步为准备工作,小编本来打算用Homebrew来安装Jenkins,但是报错了,所以踩了前边一些坑.
1.Jenkins 需要Java 环境,没Java环境运行不起来.这个可以通过Homebrew 安装,命令:

brew cask install java

也可以直接去下载安装,只是下载这个需要先注册一个oracle官网账号,看个人喜好安装就行.

  1. 安装Jenkins,我们可以到Jenkins 官网直接下载Jenkins pkg 包。
    1506237-ea6992b003865b49.png

    剩下的点击继续就可以了.

安装完成之后,Safari可能会自动打开,如果没有自动打开,手动打开链接http://localhost:8080.这个时候可能会报一个错误。

1470193134186282.jpg

如果出现了上面的问题,先去双击一下jenkins.war(前边的Jenkins安装成功你的应用程序列表就会有这个了)
屏幕快照 2019-05-29 上午10.29.12.png

如果还是报这个错,也可能是Java环境有问题,尝试重新安装Java环境。

3.重置jenkins用户信息
这个时候如果你重启电脑会发现Jenkins给你新增了一个用户,名字就叫Jenkins,不过这个时候你不知道密码。你可能会去试密码,肯定是是不对的,因为初始密码很复杂。这个时候正确做法是打开http://localhost:8080 ,打开成功会出现下图的重设初始密码的界面。

1470193188289506-2.png

按照网页中提示路径,找到initialAdminPassword文件->双击打开->复制密码->粘贴到网页输入框.
1470193206449608-2.jpg

如果涉及到读写权限问题,移步ps:参考链接4ps:参考链接5解决一下,小编没有遇到权限问题.
4.然后安装常用插件,我选择的推荐的插件,也可以选择插件下载
1470193287450655.jpg

插件下载完成后,等Jenkins 启动完成,就可以创建管理员用户了.
1470193367891030.jpg

输入用户名,密码,邮件这些,就算安装完成了。
5.安装一些辅助插件
还是继续登录localhost:8080
WeChat84cf87d2dcf0a566512a6ab0b63f4f19.png

WeChatf6c586ec01fc257b47da5c78dfc26b91.png

WeChat1bf943db9d14d48bb30b5e4248df7032.png

(1)安装GitLab插件
因为我们用的是GitLab来管理源代码,Jenkins本身并没有自带GitLab插件,所以我们需要搜索找到
“GitLab”和“Gitlab Hook”这两个插件选中,然后安装。
(2)安装Keychains and Provisioning ProfilesManagement 插件
搜索“ Keychains”就能找到这个插件,安装.我们用这个插件来管理Keychains里的证书和Provisioning配置文件,必须安装
(3)安装Xcode插件
搜索“Xcode integration”选中安装.
安装完了这个,我们就可以配置一个构建项目了。
ps:参考链接4
ps:参考链接5

五、 Jenkins 的配置

敲黑板了!注意了!前边坑不大,后边有坑,不过我都踩过了,除了使用方法,还有踩坑经验.
1.Keychains and Provisioning ProfilesManagement 插件的配置


WeChat2b97b9210b0ee5983170acadec0cee32.png

如上图,只要Keychains and Provisioning ProfilesManagement插件安装成功,在这个位置会多出来这个插件,单击进去,看到如下


WechatIMG44.jpeg

这里有两个大坑:
(1)这里需要上传一个 .keychain 为后缀的钥匙串,但是打开存放钥匙串的文件,发现根本就没有.keychain文件,只有一个.keychain-db文件(上传db文件发现根本上传不上去),百度以后才知道新版本的mac系统已经没有这个文件了,旧系统才有,又查了很多资料,有说改名的把-db删掉(无效),有说降级mac系统,拿到.keychain以后再升级系统的(这方法虽然有效,但也太繁琐了点吧,这方法太恶心了!),查了半天也没找到啥方便的办法解决这个问题.突然想起了毛主席的话,自己劳动丰衣足食!既然是钥匙串,那就从钥匙串下手呗,我的方法就是自己创建一个.keychain文件.又要敲黑板了!以下是创建流程:
WechatIMG39.jpeg

先创建一个钥匙串,这里命名不能是login,否则会报错,这里以loginCopy为文件名描述,存放位置用默认的就行


WechatIMG40.jpeg

然后你需要输入一个秘密,这个密码记录一下,后边的配置会用到.
WechatIMG41.jpeg

确定后就会生成这样两个文件,我的当时是放在桌面的,这是桌面上的截图,上边那个文件删了就行了,下边那个.keychain文件就是我们需要的东西.如果你是默认的存放路径,那请看下图,存放.keychain-db的位置多已经生成了这个.keychain文件,如果你没有把.keychain文件存放在这里,那也要手动拖过来,方便文件管理,而且这个文件放在这里最合适了.
WechatIMG38.jpeg

这时候再去钥匙串,会发现多了一个名为"loginCopy"的钥匙串,而且里边是没有证书的,这时候,只要去"登录"里边把你需要的证书右键拷贝一份,粘贴到"loginCopy"里边就行了.如果粘贴失败,就去"登录"里找到你需要的证书,生成一个.p12文件,然后双击安装一下,"loginCopy"里也会有那个证书.
WechatIMG42.jpeg

这样你的.keychain文件就做好了,然后选取.keychain文件,选完后,再点上传(Upload)按钮.
(2)还是在刚才上传.keychain文件的位置,需要上传对应的Provisioning Profile文件,而且可以上传多个.keychain和Provisioning Profile文件
WechatIMG43.jpeg

在上图的路径中能看到上传的文件(这是我的路径,你的路径得看你jenkins安装在哪了),上传完这两种文件,才能进行Keychains and Provisioning ProfilesManagement 插件的正常配置,请看下图


WeChat7d667d600fb8252f83160a8d597009d2.png
WeChatab97be8d2a09dda76861104ef2ff797c.png

在Upload按钮下边,配置Keychains和Provisioning Profiles.这里需要注意,Filename就是上传的.keychain文件名,Password就是生成这个文件那个密码,下边填写的是.keychain包含的证书名,可以是一个或者多个.Provisioning Profiles Directory Path 需要填写刚才上传上去的配置文件的存放路径,去你安装的jenkins里边找就能找到,配置完别忘了保存一下.

六、 Jenkins 的使用

1.新建item,构建一个项目

1470193401595013.jpg

WechatIMG45.jpeg

填写一个项目名,选Freestyle project 就行了,别的应该也可以,我没试过,有需要的可以去试试.
2.配置General参数,这里可以设置包的保留天数还有天数。
1470193438155282.jpg

3.设置源码管理
1560233181881.jpg

先填写源码的URL,这个URL就是可以克隆到你的代码,如果用的SourceTree,直接去SourceTree的设置里去找就是了.然后填写你需要操作的分支,最后点添加按钮,会出现这样的界面
1560233528472.jpg

类型可以选择用户名密码登录也可以选择SSH,如果没有SSH,直接填写你的源码后台的登录用户名和登录密码就行了,ID和描述不用填写.如果有SSH,先配置SSH Key,在Jenkins的证书管理中添加SSH。在Jenkins管理页面,选择“Credentials”,然后选择“Global credentials (unrestricted)”,点击“Add Credentials”,如下图所示,我们填写自己的SSH信息,然后点击“Save”,这样就把SSH添加到Jenkins的全局域中去了。如下图
1470193457565659.jpg

如果正常的配置正确的话,是不会出现下图中的那段红色的警告。如果有下图的提示,就说明Jenkins还没有连通GitLab或者SVN,那就请再检查SSH Key是否配置正确。
1470193469440969.jpg

4.构建触发器设置
这里是设置自动化测试的地方。这里涉及的内容很多,暂时我也没有深入研究,这里暂时先不设置。有自动化测试需求的可以好好研究研究这里的设置。
不过这里有两个配置还是需要是配置的
Poll SCM (poll source code management) 轮询源码管理
需要设置源码的路径才能起到轮询的效果。一般设置为类似结果: 0/5 每5分钟轮询一次。
Build periodically(定时build)
一般设置为类似: 00 20 * 每天 20点执行定时build 。当然两者的设置都是一样可以通用的。
格式是这样的
分钟(0-59) 小时(0-23) 日期(1-31) 月(1-12) 周几(0-7,0和7都是周日)(更加详细的设置看这里)也可以点击后边的问号查看帮助.
1470193513196310.jpg

5.构建环境设置
iOS打包需要签名文件和证书,所以这部分我们勾选“Keychains and Code Signing Identities”和“Mobile Provisioning Profiles”。如果第五步,配置的Keychains and Provisioning ProfilesManagement 插件没问题,那这里就不需要做什么了,勾选下图两个按钮后,选择对应的证书和Provisioning配置文件就行了,如果这里的证书和Provisioning配置文件无法显示,那问题是在第五步,检查Keychains and Provisioning ProfilesManagement插件的配置,修改好了,这里也就正常了.
6.构建设置
1470193606750423.jpg

我们这里选择执行一段打包脚本.我自己也写了一个脚本,包含一键运行->自动替换图标(多项目且使用不同图标的情况,只有一个项目,可以去掉这部分代码)->自动打包->自动上传到蒲公英(这里也可以改成自动上传fri或者App store).
接下来纯粹就是发福利了,以下是脚本下来地址,下载以后,把脚本中的路径和文件名等地方修改成自己的,copy到jenkins构建设置里边就行了
下载脚本
这里还有一个坑,我的脚本里并没有写更新cocopods的逻辑,如果有用到cocopods,自己想办法解决一下吧,去找一下相关脚本,我也是踩着坑解决的,方法比较简单粗暴,直接把自己原来项目里的pods文件夹copy到jenkins项目里,替换掉了jenkins里的cocopods,你也可以cd到对应项目里,执行pod install命令更新一下.
7.构建后操作
一般第6步都是构建和打包,在这一步进行上传等构建完成以后的操作,因为这里也可以用一个第6步那种脚本操作,所以我这一步什么都没做,把这一步的脚本合并到第6步里一起执行了。至此,我们的Jenkins设置就全部完成了。点击构建,就会开始构建项目了。

结束语:到这里,jenkins的安装/配置/使用以及踩的一些坑都写到这里了,写这篇文章我也是参考了好多篇文章,里边的部分图片和文字也是摘自其它文章,摘图摘文字并不是为了抄袭,而是为了踩坑,希望大家理解并支持,浏览了很多文章解决问题,这里也不一一列出那些文章的作者了,总之,谢谢各位大牛们,在这里向你们致敬,由衷的感谢你们支撑我完成了这篇文章!另外,技术水平有限,写作水平也有限,呕心沥血,有不足的地方,还请各位看官不吝赐教,谢谢!😁

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