想偷懒就自己做个Jenkins Job

发表于:2020-7-17 09:37

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:张淼    来源:51Testing软件测试网原创

  从09年开始接触Jenkins,从最基础的做job,到做view,到做大型项目job的并行,串联,出报告,功能之强大真的是叹为观止,就算不用插件,也能满足日常测试需要了。最近被同事安利各种好用的插件,更新很快嘛,这么多好用的东西不拿来用真是浪费。正好前段时间自己做实验装了个Jenkins,打算试一把,主要目的是访问Linux Server,然后在上面执行一些东西,想象中是个简单的活儿,做起来简直到处都是坑~
  最开始想的是这个Job做成功之后,比如需要去某个server上面查log就再也不用每天Putty -> Login -> 一堆command过去 -> vi -> 使劲翻篇找内容,只要做一个job,每次要看的时候点一下,就搞定啦!这还没算上每次都要从小本本上找server的用户名密码浪费时间,按进去的隐藏密码还可能会出错,没有大显示器vi完了翻个篇都头晕,还要记住各个环境的名字,尤其是同时做五六个项目,很有可能会记乱了测试Server,等等等等。赶紧动手来干吧!
  首先,我们在本地装Jenkins,网上的安装教程一大堆,随便找一个,一路Next也就装上了:
  但是谁说装上就没有坑的!安装之后第一次登陆是需要初始密码的,然后我第二天到公司突然发现把密码忘了,顺便把初始密码路径也忘了……但是隐约记得刚装好的时候是有提示的:
  傻乎乎地重装了一次,终于找到了,赶紧找个小本本记上,初始密码路径是C:\Program Files (x86)\Jenkins\secrets\:
  装好之后自定义Jenkins,可以选择安装推荐的插件,和选择插件来安装,看了看“选择插件来安装”里面的插件列表,包括汉化包,Git,Email Extension之类的,感觉很多用不到的东西,装上之后反而会让Jenkins很臃肿,于是打算只选择自己用的到的Publish Over SSH,然而坑来了,电脑没有网……
  如果不安装任何插件,后续也可以去plugins.jenkins.io再下载,然后离线安装。
  支持离线安装就好,下载完之后,在Jenkins -> Manage Jenkins -> Manage Plugins -> Advance Tab -> Upload Plugin:
  天真地以为upload之后会出现一个Success,结果却是缺!依!赖!包!如果没有网的机器,请务必下好依赖包,按顺序安装,且一定要注意依赖包的版本,有的包太新导致不能兼容旧版Jenkins:
  趟过了这几个坑咱们继续往后进行日常操作:New Item -> FreeStyle Project -> OK,在安装Publish Over SSH插件之前,Configure里面的Build只有3种模式:
  装好插件之后,重启Jenkins:
  然后回到Job里面我们会发现,多了个选项叫“Send files or execute commands over SSH”:
  下一步就是开始配这个Publish Over SSH,网上教程一大堆,咱们就按官网来吧,先去到Manage Jenkins -> Configure System:
  找到Publish over SSH配置的模块,点SSH Servers后面的Add,填Name,Hostname,Username,然后点Advanced,勾选Use password authentication, or use a different key,填上Passphrase/Password,最后点Test Configuration,如果显示Success就表示连上了。这个地方的坑在于可能会报各种jenkins.plugins.publish.over.BapPublisherException,见招拆招,提示还是很明确的,基本都能解决。
  配置完这块回到Job的Configure里面,点击Build下面Add build step,选择Execute shell script on remote host using ssh,SSH Site选择刚才配置的,然后Command里面直接输入你想执行的命令就行了,比如python:
  马上要大功告成了?竟然没有坑?我果然又天真了……报错如下:
  Which: no python in ($PATH)
  大概的意思是Path里找不到python,这个很明显是环境变量没配对嘛,于是果断putty到机器上,echo $PATH了一下,然后就惊呆了,python明明就在那里啊!!!Debug的过程大概就是回到Job里面,在Command里填了echo $PATH,再跑一次,发现果然没有Python。这……Path还能被Jenkins吃了的?看了无数帖子发现,对的,Jenkin会吃path的(大概意思就是publish over ssh会把Jenkins server自身的环境变量带过去),把网上找到的各种解决方案都试了一遍,甚至连bashrc文件都做了一个还是不行,最终发现唯一好用的方法就是在Command里面加上下面两行,根据系统不同,这里的profile有可能是bash_profile:
  source /etc/profile
  source ~/.profile
  然后再执行,哇!果然成功了!蓝色的小点点在向我微笑:



版权声明:本文出自《51测试天地》第五十八期。51Testing软件测试网及相关内容提供者拥有51testing.com内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号