Jenkins 持续集成
1. Jenkins
A. Jenkins配置文件:/etc/sysconfig/jenkins,可以更换端口和用户级别;
B. Jenkins核心目录:/var/lib/jenkins
workspace是工作目录(源代码存放位置);
jobs是保存项目在jenkins上的配置、日志和构建结果,该目录文件大小随着构建次数逐渐变大,所以空间不足记得定时清理。
C. 常用变量:
WORKSPACE:当前job构建目录的绝对路径;
JOB_NAME:此项目的版本名称;
JOB_BASE_NAME:此项目的短名称,剥离了文件夹路径。
2. 通用插件
A. Localization: Chinese (Simplified):Jenkins简体中文语言包;
B. Folders Plugin:支持使用目录管理项目,目录支持嵌套;
C. Maven Integration plugin:支持创建Maven的项目;
D. Rebuilder:支持构建执行上一次的构建过程;
E. Job Configuration History Plugin:查看历史的构建配置和恢复;
F. Role-based Authorization Strategy:基于角色的的用户权限控制;
G. Git plugin:支持使用Github、GitLab、Gerrit等系统管理代码仓库;
H. Git Parameter Plug-In:构建过程添加git参数,可以支持需要构建的分支;
I. Credentials Binding Plugin:凭证管理,如Git;
J. NodeJS Plugin:前端(Vue)依赖NodeJs包;
K. Extended Choice Parmeter plugin:添加参数多选框;
M. Pipeline:流水线构建,将多个项目并行变成串行执行,替代手动操作。
3. 权限控制:可参考:jenkins 权限控制插件 Role-based Authorization Strategy
4. 凭证配置(Manage Credentials)
A. 凭证配置是管理账号密码等,例如Git使用;
B. 入口截图
C. 添加、修改和删除凭证
5. 全局工具配置(Global Tool Configuration)
A. 主要配置一些使用到的构建工具,如:JDK、Maven和Git;
B. 入口截图
C. JDK配置
D. Maven配置
E. Git
6. Managed Files高级操作:可参考:jenkins进阶操作Managed Files
7. 项目配置
A. 入口截图
B. General配置
A. Discard old builds:该选项可以配置保持构建的天数或者保持构建的最大个数,默认值为不勾选365天,常用在删除旧的构建记录来释放磁盘空间;
B. Do not allow concurrent builds:勾选表示不能并发构建,然后并发后者的任务处于pending状态;
C. This project is parameterized:项目构建中运用参数,名称是变量名,使用方式为${名称};
Boolean Parameter:单选框
Choice Parameter:下拉框,只能选择一个;
Git Parameter:自动获取当前所有远程分支并提供选择,默认不安装,需要自行安装插件;
String Parameter:字符串参数
Extended Choice Parmeter:
D. Git代码
E. 选择指定的目录
F. 指定pom.xml
G. 若构建git项目报 error:index-pack died of signal 15,可以更改clone项目时默认时间10min
H. SpringBoot项目构建后执行启动脚本
web-admin.sh启动脚本
#!/bin/bash PROJECT_PACKAGE=web-admin-0.0.1-SNAPSHOT.jar PATH_NAME=test/web-admin/web-admin # 删除文件 rm -rf /project/web/jar/$PROJECT_PACKAGE # 拷贝文件 cp /var/lib/jenkins/workspace/$PATH_NAME/target/$PROJECT_PACKAGE /project/web/jar/ # 切换路径 cd /project/web/jar/ pid=`ps -ef | grep $PROJECT_PACKAGE | grep -v grep | awk '{print $2}'` if [ -n "$pid" ] then # 杀死存在进程 kill -9 $pid fi # 避免项目启动之后被Jenkins杀掉 BUILD_ID=dontKillMe # 执行 nohup java -jar $PROJECT_PACKAGE --spring.profiles.active=$1 >> /project/web/log/web-admin.log 2>&1 & # echo 命令用于向窗口输出文本 echo "web-admin项目启动成功!"
https://www.cnblogs.com/keeptesting/p/10992104.html
安装yarn:yum install -y yarn;
6. 问题
问题1:jenkins跳过shell执行错误;
解决办法:添加#!/bin/sh打破默认的执行;
问题2:包上传服务器未成功,报ERROR: Exception when publishing, exception message [Exec exit status not zero. Status [1]];
解决办法:路径不对引起的,我这边对于相同脚本,有些服务器能上传,有些不行,所以推测是SSH Server问题,果然Remote Directory缺少目录/。
问题3:前端包构建时报error An unexpected error occurred: "https://registry.yarnpkg.com/vue3-puzzle-vcode: ETIMEDOUT;
解决办法:把资源地址设置为npm淘宝源:npm config set registry https://registry.npm.taobao.org、npm config set disturl https://npm.taobao.org/dist。
问题4:构建Gradle项目时报Expiring Daemon because JVM heap space is exhausted;
解决办法:jvm 默认可分配的堆内存不够,在gradle文件里修改DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'参数。
问题5:布尔类型的取值报错java.lang.NoSuchMethodError: No such DSL method '$' found among steps;
解决办法:if (${IS_FTP})变为if ("${IS_FTP}" == "true")。
问题5:前端包构建时报error An unexpected error occurred: "https://registry.npm.taobao.org/vue3-puzzle-vcode: certificate has expired
解决办法:取消ssl验证:yarn|npm config set strict-ssl false,执行yarn|npm cache clean --force。
可参考:Linux上搭建Jenkins
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗