jenkins构建项目的错误和原因及其解决方法

jenkins构建项目的错误和原因及其解决方法,第1张

我们项目开发完之后需要构建项目发布上线时,通常会使用到jenkins构建工具,然后在使用jenkins工具构建项目时通常也会遇到一些构建错误问题,通常情况下,如果项目在自己本地打包时没有问题,启动服务时也没有问题的情况下,可能是jenkins配置问题,需要开发人员配合本地配置项的修改完成,下面我给大家分享一下我遇到的一些构建失败问题,注意:本篇文章讲的主要是关于前端项目的构建失败问题。

Umi自动化工程创建的react项目

从图一中可以看出,是构建时打包命令出错,使用了不能识别的 npm run build:prod ,该命令是前端工程项目中 packagejson 包文件中的 scripts 中配置的,该案例中前端并没有配置build:prod 这个打包命令,如图:

这里有两种解决办法。

直接去jenkins 上将打包命令配置成前端包文件种配置的命令,本案例中因为没有区分不同的开发环境,而且项目也只有master一个主分支,没有使用环境变量来区分不同环境的打包命令,所以图一中的问题,可以直接将jenkins里面的打包命令配置成图二中的打包命令 npm run build。去到jenkins 工具中,找到对应的配置项,如图:

如果项目变得复杂,需要进行严格的环境区分,那么这种情况下建议使用第二种方法,使用环境变量区分不同环境的打包命令,具体步骤如下:

去到前端项目在项目根目录下找到包文件packagejson文件,打开后,在scripts下面配置build:prod 的打包命令,如图:

去到前端项目中的配置文件configjs中配置 APP_ENV环境变量来区分不同的环境,例如生产环境,开发环境,测试环境等,配置如下:

本文中暂时讲到图一中这种jenkins构建失败的现象以及导致失败的原因和针对其不同的两种解决方法,后续再碰到其它失败现象再补充,或者大家也可以在评论区回复各自遇到的失败情况,欢迎留言。

Jenkins是基于Java开发的一种持续集成工具。所以呢,要使用Jenkins必须使用先安装JDK。

JDK安装 :Java Development Kit

如果出现下面情况,则JDK有问题重新安装

21 进入 系统偏好设置->用户与群组

22 点击左下角的解锁,输入当前用户的密码

23 此时Jenkins用户还是一个空的无名用户,可以在用户列表中选择Jenkins用户,右击并选择“高级选项”,输入全名并确定。

24 点击“更改密码”重设Jenkins用户的密码。为了后期方便,可勾选“运行用户管理这台电脑”,将Jenkins用户设为管理员。

25 选择用户列表下方的登录选项,将自动登录用户设为Jenkins。

3初始化Jenkins

重启以后,自动以Jenkins登录了。找到/Users/Shared/Jenkins/Home/ 这个目录下,打开initialAdminPassword文件,复制出密码,就可以填到网页上去重置密码了

security unlock-keychain -p "你的用户密码" ~/Library/Keychains/loginkeychain

Mac下Jenkins+SVN+Xcode构建持续导出环境

Mac下Jenkins+SVN(Git)+Xcode搭建持续构建环境

手把手教你利用Jenkins持续集成iOS项目

基于xcodebuild和xcrun的自动化打包

xcodebuild批量打包之区分不同的渠道

建议你这样试试看:

在每个stage{} 中, 用 post {} 上传日志

再整个 pipeline{} 末尾, 用 post{} 上传日志

这样做的好处:

层次清晰

可以聚合各个 stage 的日志, 如 robotframework log, build log

By Xiak

在 Jenkins Job 中,添加一个 pre script 来提高自动化程度,将这个脚本的输出作为其他主要流程build的参数,因此,build 参数的逻辑由 pre script 来控制,而不改变main job的逻辑。

下面的 sample 是通过获取一个 python 脚本的 console output 到 pipeline,然后再传递给其他 step 使用。

python script 中 print 或 sysstdoutwrite 的输出,Jenkins 都可以获取到。只需要在pipeline script 中使用下面的方法,会获取到 script 的所有 output

func test_value 是为了说明 return value 但并不输出到console,脚本执行结束后 Jenkins 并获取不到。下面的脚本,Jenkins 获取到的是 “Value: 2 3”。为了 pipeline 处理方便,可以在脚本中控制输出。

sample pipeline 中设置了三个stage,Preparation中定义一个变量,Get number 执行python 脚本,获取输出,Result 中使用该变量。

通过 brew 安装 jenkins

通过 brew list jenkins 查看安装路径

jenkins 相关命令:

在浏览器输入 localhost:8080 就可以打开Jenkins的web界面了。

如果忘记了更改的端口号,可以查看下 homebrewmxcljenkinsplist 文件,里面有端口号。更改 homebrewmxcljenkinsplist 文件之后,记得 restart 一下。

如上图,在项目的 构建触发器 区域里面,有个 触发远程构建 选项。勾选之后,就会有一个 身份验证令牌 ,就是以后用的 token 了。

可能有些Jinkens下没有触发远程构建的选项,是因为需要先在 系统管理 -> Configure Gloal Security -> 打开启用安全选项 :

打开 启用安全 之后,配置一些选项,项目中就有 触发远程构建 了。

勾选 触发远程构建 ,下面会有几行解释说明:

我构建了两个项目如下:

没有参数: JENKINS_URL/job/TestAPI/buildtoken=TOKEN_NAME

通过命令行调用:

也可以直接在浏览器里面输入上面命令里面的 url 。

TestAPINoParams 为一个没有任何参数项目,如果有参数的话,就不能用上面的命令了。

通过命令行调用:

也可用 Postman 测试:

通过命令行:

通过 Postman :

比如说,我这里传的是 logo-1024png , API 调用成功后, jenkins 服务器上 /Users/xulong/Desktop/receiveFile/ 在这个路径下,就会有一个 receivepng 文件。

可以先用 Postman 调试成功,然后可以导出 curl 命令和其它命令。

在这里Jenkins就不做过多的概述,它是一个自动集成的工具。本文直接说说利用Jenkins与profile管理自动集成中的配置文件。

在maven中可以使用profiles可以配置出各个环境的profile,通过激活这些profile来获取各个环境的构建信息,在项目的pomxml文件中配置profiles:

同时在项目中创建配置文件文件夹deployEnv,目录结构如下:

把配置文件文件夹deployEnv放到和src文件夹同级,在下面创建三个环境对应的文件夹,要以环境版本做为文件夹名称,在各个环境的文件夹下面书写各自所需的配置文件。

需要在pomxml文件中的build属性,加上资源文件拷贝的配置

配置完毕,在idea开发工具中可以快速设置激活profile,

在本机开发环境中选择激活dev profile,那么在本机maven构建项目的时候,使用的是deployEnv文件夹下dev下的配置文件。

在Jenkins中,进入项目的配置,找到Build标签,在Goals and options文本框中输入: clean install -P test,这是maven的命令,作用是,先清理项目,然后构建项目, -P test的意思是使用 test profile 进行项目的构建,这样在构建测试环境的时候,使用的是deployEnv文件夹下test下的配置文件。

这样的管理配置文件的方式是不是很简单呢?欢迎大家来沟通交流~

谢谢大家!

项目中使用 jenkins 作为运维平台,有一个需求是将build name修改为 #build_no -- build_user 这样的格式,如: #10086 - admin ,这样可以在build list里面清楚看到哪一次的构建是由谁完成的。

这种项目需求,最快的是通过jenkins插件完成,在plugin中找了一下,发现 Build Name Setter Plugin 可以完成项目的需求,但是在安装后,发现jenkins本身并没有构建者的宏提供,如 BUILD_USER_ID 之类的宏,感觉好坑,于是又找到另外一个插件 Build User Vars Plugin ,这个插件可以提供Build User名字宏:

在安装这个插件后,接下来就是配置跟踩坑的问题了,针对上面的需求,进行配置就得到我们想要的Build Name显示效果啦。

配置步骤

显示效果

以上就是关于jenkins构建项目的错误和原因及其解决方法全部的内容,包括:jenkins构建项目的错误和原因及其解决方法、Jenkins 配置、jenkins 2 pipeline怎么获取各个阶段的log等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9635752.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存