每周一坑-jenkins发布拷贝不了文件到远程
![](https://img2022.cnblogs.com/blog/520218/202207/520218-20220704215552235-1818649695.png)
今天主要是讲jenkins配置里面的构建后操作:Send build artifacts over SSH
一、项目前端配置
1、【构建】——》 【执行shell】配置
前端npm编译,没啥问题,直接进去frontend目录,运行关键两条命令:
cd xxx-frontend
npm install
npm run build:test
##最终会生成一个dist目录,拷贝到远程发布
tar -zcf dist.tar.gz dist
2、【构建后操作】
其中shell 脚本主要做的工作是把dist.tar.gz解压,然后把里面的文件拷贝到nginx默认网站根目录 html 路径。最后nginx虚拟主机配置文件指向该目录,浏览器即能访问。
二、项目后端配置
后端,这个有点坑~~~
看架构图,很多个pom.xml文件,然后开发说直接用最外层的 pom.xml 去编译就行(就是backend后面的第一个pom.xml)
1、【Pre Steps】和 【Build】 配置
2、【构建后操作】
![](https://img2022.cnblogs.com/blog/520218/202207/520218-20220704153656651-570700922.png)
![](https://img2022.cnblogs.com/blog/520218/202207/520218-20220704222024277-1376910803.png)
当时跟开发确认过,app下的war包才是需要的,不要拿 xxx-party下的。
在我贡献了10个jenkins发布报错后,发现这样的配置才是正确的:
首先即使在上面,已经进去到 backend 目录下了(Pre Steps 图),我们理所当然地会以为直接从 backend 算起的相对目录来数这个war包位置(Source files),其实是不对的,要从backend 算起!!!!
如下图:
![](https://img2022.cnblogs.com/blog/520218/202207/520218-20220704222428739-193623002.png)
简单说下为啥会这样(如果我理解不对,欢迎读者指出 ^___^ )
经过简单搜集资料(有点困,速战速决~~~),默认情况下,会将Jenkins运行的工程文件目录下的文件夹作为源文件路径来传输文件,啥意思,也就是从/var/lib/jenkins/workspace/{你在jenkins新建的工程名} 开始算起。假设我在jenkins建的工程名叫:ljy,backend在我ljy后一个位置,源文件路径(Source files)从ljy开始算起,所以上面要写全 backend/xxxxx 了
由于我这里从来没有设置相对路径,所以配相对路径肯定就错了,更专业的名词叫:自定义工作区间【参考:【https://blog.csdn.net/fan_haha/article/details/110224311】】,我公司jenkins没有这个配置,那就按默认的算,从工程文件目录文件夹开始算起!
其实想想,我前端配置就是按这个规则来的,后端竟然随心所欲乱搞,所以就报错咯~~~