场景描述下当时的场景我在项目根目录创建了一个deploy.sh脚本脚本中完成给脚本赋执行权限、拷贝公共配置文件application-common.yml到各服务目录、停止服务、启动新服务这一系列操作但 Jenkins 构建完总是有两三个任务起不来奇怪的是我手动执行deploy.sh脚本就没问题。排查分析后面排查起来那些没有启起来的服务是因为没有公共配置文件application-common.yml巧合的是那些能起起来的服务在项目构建时就把公共配置文件application-common.yml打到它们服务目录里了当时为了快速解决这个问题我统一了 pom.xml 中的打包配置将公共配置文件application-common.yml都打包到各服务目录里这个问题就解决了。复现当时的场景我创建了下面这个 Jenkins 任务这个任务会创建一个文件夹并执行拷贝配置文件的脚本。拷贝配置文件的脚本的内容如下#!/bin/bashifcp./config/config_stop.sh ./system/;thenecho配置拷贝成功elseecho配置拷贝失败exit0fi构建一下成功了看下system文件夹呢文件并没有被拷贝进来这是因为执行脚本所在的位置是当前用户所在的目录root 用户是在 /root不会因为下面这两个地方的设置而更改Jenkins 任务页服务器配置页如下在脚本中做个测试验证一下当前执行脚本所在的路径可见执行目录是/root解决解决办法很简单要么脚本中使用绝对路径要么在脚本执行的第一行加 cd 命令切换到指定目录#!/bin/bash# 切换到项目所在目录cd/home/projectsifcp./config/config_stop.sh ./system/;thenecho配置拷贝成功elseecho配置拷贝失败exit0fi点构建这回 OK 了文件能拷贝到system目录里了