周大胖子 发表于 2022-10-19 11:48:46

Jenkins 部署过程全部爬坑文档,问题与解决办法

安装的坑太多了 ,我已经单独开了一个文章记录;【先把这些坑踩完 再踩别的】

下面说运作的坑:

我是搭配 gitee 使用 ,大致几个步骤:

1. 打包本地文件上传到gitee ; (人工命令行打包上传)

2.gitee 同步到 jenkins 【也就是服务器】 (自动)

3.jenkins 打包、发布并且 替换当前版本 【这里面有一个ssh配置的步骤 】


基础文档:

首先感谢各位前辈大神提供的各种参考:

https://juejin.cn/post/6844903591417757710                     Jenkins打造强大的前端自动化工作流
                                          
【大步骤 是参考这个文章来了,但是该文章发布时间是18年 过于老旧,一些插件没了 ,jenkins也更新了,所以得不断的跟度娘唠嗑】


https://www.runoob.com/git/git-basic-operations.html      菜鸟教学git命令【咱就说 至少得会把文件传到gitee 上】

https://blog.51cto.com/u_15469167/4850543#_6                  码云 Gitee + Jenkins 配置教程

https://blog.csdn.net/Sprouting_new8/article/details/124702423关于 如何配置jenkins 的插件 Publish over SSH




步骤填坑开始 : (明确 插件安装完 必须重启jenkins才能生效,否则可能不生效或者部分生效)

搭配gitee 使用需要安装插件 :

===================

gitee配置的坑:

我选用了安装Generic Webhook Trigger 插件(系统管理-插件管理-搜索Generic Webhook Trigger);

其实我后来装了 Gitee我就觉得这个更好用,用法参考我上面的链接

坑点: 在gitee 里 需要填一个值和一个路径

      路径在: 构建触发器时候 选择Gitee -----后面有 那个路径

   gitee 需要填写的 Gitee WebHook 密码:在 下面 有一个生成按钮 点一下,生成的密码填过去[当前构建保存且应用后才能 ,在gitee 的测试链接 连接上]


一步步来 这个坑填完之后,gitee 基本就没啥坑了。

   
坑点修复后的测试方法:gitee测试链接成功 ,再测一下本地提交 看服务器上的 工作区文件 变不变化 就行。


=============

npm 安装的坑:[前端才用到 后端请自己爬别的坑] 插件选择:nvm wrapper这个插件

前端会遇到这个坑: 咱就说 按照步骤 可能会用 nvm /node /npm   我直接在服务器上装了一套 pm2集成,控制台 node -v 输出一下 填写一下到指定的插件中


关于执行npm 清缓存语句报错:
npm cache clean --force   
报错:npm WARN using --force Recommended protections disabled.
上述 就是npm 更新了 这个语句受保护不能用了,网上伪神们特别神奇,啥 你把npm 版本降一下就能用了,咱就说这思路是不是有点毛病,

新的命令是
npm cache verify


关于执行 npm install 的坑:

在执行shell 命令的时候我填写了npm install。 但是语句执行的时候报错,

jenkins 输出到控制台后 发现报错:
npm ERR! code ETARGET
npm ERR! notarget No matching version found for tsx@3.10.3.

这个问题吧,其实把项目克隆下来,直接跑 npm install 也出现了这个问题 ;
后来使用 npm view 报错的东西我这里是 tsx@3.10.3.
发现 就找不到这个版本 即使我切换了很多的npm源
解决方法:
直接npm install tsx (报错的东西)不加版本号,然后 再 npm install 就可以。 在jenkins 的shell 命令中 也加入这个,则完美解决,后期没用,修改配置时可以删掉。
全部命令:
cd /var/lib/jenkins/workspace/项目名称&&
npm config set registry=http://registry.npm.taobao.org/&&
npm install tsx&&
npm install&&
rm -rf dist&&
npm run build

注意 后面结尾不能有 && 否则会报错


===================

我的一些想法实践后发现没用的,这里也说出来,避免再次入坑:

1. 我认为可以把网站目录直接解析到 jenkins 的工作区,这样就避免配置ssh了 多好。 但是实际上不能这样做 。貌似是网站目录必须选择在 www的那个文件夹下;

1. 我认为 shell 命令 里直接 执行 对网站根目录进行操作, 实际上 在用 jenkins 没配置ssh的情况下没有权限对 位于www目录下的文件进行操作;


=============================
ssh 通道配置的坑:

配置的地址 就是网站根目录而且最外层的根目录 不是public 也是dist例如:我的网站所在目录:/www/wwwroot/www.a.com

问题表述:不论我在ssh的 Exec command 写什么都没执行,
问题解决: 加了句命令 cd 到指定的文件夹

来来来 上全部配置截图,在下面

如何查看我的文件跟新了:去网站目录 查看 文件的创建时间
======================


umi 浏览器缓存过大的坑:

.umirc.ts文件 加一个配置 : hash:true   




页: [1]
查看完整版本: Jenkins 部署过程全部爬坑文档,问题与解决办法