说起来这Jenkins打包,我刚开始的时候,那也是个小白,啥都不懂。以前公司项目打包,全靠手动,每次改了点东西,测试要了,我就得吭哧吭哧地去服务器上,先拉代码,然后敲命令,等半天,打完包再传过去。那效率,低得吓人,还特别容易出错,手一抖命令敲错了,或者漏了个步骤,就得重来。就为了这事儿,没少被产品和测试催,那滋味可真不好受。
本站为89游戏官网游戏攻略分站,89游戏每日更新热门游戏,下载请前往主站地址:www.gm89.icu
后来发现这么搞真不是个事儿,心想这玩意儿肯定有自动化的办法。于是就开始各种搜,看别人咋弄的。那时候听说了持续集成、持续部署这些概念,然后就瞄上了Jenkins。我记得很清楚,第一次看到同事用Jenkins点一下就自动打包发布了,我当时眼睛都直了,心里就琢磨,这好东西,我也得学透它!
上手第一步:把Jenkins请回家
我算是比较幸运,公司有一台闲置的机器,配置还凑合,我就拿过来当“试验田”了。第一步就是把Jenkins装上。我那会儿找了网上好多教程,大部分都是教你先下个war包,然后跑Java命令启动。当然也有直接装服务那种,我一开始选了个最简单的,直接用命令行把war包跑起来。看到命令行里输出一堆启动信息,显示“Jenkins is fully up and running”的时候,心里那叫一个激动。
装好之后,就是访问地址,第一次进入会要你输入一个初始密码,我按着提示去日志文件里找到那串密码输进去。然后就是安装推荐插件,那会儿也分不清哪些有用哪些没用,就傻乎乎地点了“安装推荐插件”。等插件一个个装完,重启一下,Jenkins的界面就出来了,白白的,清清爽爽,感觉像打开了新世界的大门。
配置项目:从零到一的实践
接下来就是把我那个需要手动打包的项目给迁移到Jenkins上。这才是硬骨头。
- 新建任务: 我点了一下“新建任务”,然后选了“构建一个自由风格的软件项目”。当时就觉得这名字挺酷的,哈哈哈。任务名就随便起了一个,比如“我的第一个测试项目”。
- 源码管理: 我项目代码是放Git上的,所以我就选了Git。然后填上仓库地址,credentials那块儿,刚开始没配置ssh key,就直接用用户名密码进去了。等项目跑起来不顺利,才发现用ssh key更方便,后面又补上了。
- 构建触发器: 这块儿有意思了。我一开始是想,每次我往Git一提交代码,Jenkins就自动给我打包。所以我就选了“Poll SCM”,填了一串星号,意思是每隔几分钟去检查一下有没有代码更新。后来学会了WebHook,那是真香,代码一推,立马构建,反应特别快。
-
构建步骤: 这才是重点中的重点!
- 前奏:环境准备。 我的项目是Java的,要用Maven打包。所以我在Jenkins的全局工具配置里,把Maven给配置好了。指定Java路径,指定Maven路径,这些都是必不可少的。
- 核心:执行Shell命令。 我在“增加构建步骤”里选了“执行shell”,然后把我平时手动打包的命令敲了进去,比如
mvn clean package -DskipTests。敲完心里还忐忑,不知道能不能行。
- 构建后操作: 打包完了怎么办?总不能就放在那儿。我那会儿就想,至少得知道打包成功没,所以加了个“邮件通知”,配上自己的邮箱,构建成功或失败都发个邮件给我。后来才慢慢学着把打出来的包自动复制到测试服务器,或者上传到制品库里。
踩坑、爬坑、再踩坑
整个过程下来,不可能一帆风顺。我记得那会儿遇到了好几个大坑。
- 权限问题: 第一次构建,Jenkins报错说没权限,连我的项目目录都找不到。后来发现是Jenkins运行的用户权限不够,我把Jenkins服务停了,然后用管理员身份重新启动,又或者直接给Jenkins运行的用户加权限,才解决。
- 环境依赖: 有一次打包总是失败,错误信息是找不到某个Java类。折腾了半天,才发现Jenkins服务器上的Java版本和项目要求的Java版本对不上。赶紧把服务器的Java版本给升级了,或者在Jenkins的构建环境里指定正确的Java环境。
- Maven配置: 还有一次是Maven下载依赖特别慢,或者找不到公司内部的私有库。这才知道要在Jenkins里给Maven配置*文件,把私有库地址和镜像源都加进去。
这些坑,每一个都让我头疼好久,都是靠着一遍遍地试,一遍遍地搜,才慢慢解决的。每次解决一个问题,都感觉自己又学到了好多,那种成就感,比手动打包成功不知道高到哪里去了。
Jenkins带给我的变化
现在回过头来看,自从我把项目都放到Jenkins上自动打包之后,效率简直是质的飞跃。以前得花半小时手动操作,现在点一下按钮,几分钟,甚至几十秒就能搞定。测试那边再也不用等我了,我也有更多时间去琢磨代码逻辑,去学新东西。而且因为它每次都是按照一套标准流程来,出错的概率也小了很多,稳定性和可靠性都上来了。
我为啥对这些东西这么上心,学得这么认真?说起来就来气。我刚毕业那会儿,进了一家小公司。公司不大,项目倒是不少。每个项目改动了,需要发布了,就得我这个小码农手动去服务器上敲命令打包,上传。一天天的,我的工作时间有一半都浪费在这种机械性劳动上。更要命的是,每次手动操作,总有马虎的时候,命令敲错,文件传错,出了问题还得挨批。那时候我心里就憋着一股火,总觉得这种重复劳动不应该占据我宝贵的学习和成长时间。
有一次,因为着急下班约会,手抖把测试环境的数据库给删了一半,结果可想而知,被领导骂得狗血淋头,还加班加点把数据恢复回来,约会也泡汤了。从那以后我就下定决心,凡是能自动化的,我一个都不会放过。我发现与其抱怨,不如自己动手去解决问题。Jenkins就是那时候我找到的“救星”。学会了它,就像是给自己加了一对翅膀,一下子就能从那些枯燥的重复劳动中解放出来,把精力放到更有价值的事情上。后来我跳槽,面试的时候,能熟练说出CI/CD这套东西,还自己实践过,简直就是个加分项,让我顺利拿到了更好的机会。这手动打包的苦,我可是吃够了,再也不想回去了。