有没有大佬来帮我看一看,是关于github actions的,我在实现一个推送代码到指定分支上时,会自动触发在远程目标服务器上面部署运行springboot项目,但是每一次运行到以下代码的时候:
....
# 进入部署路径并启动新进程
cd ${{ env.DEPLOY_PATH }}/jar && \
setsid ${{ env.JDK_HOME }}/java -jar ${{ env.JAR_FILE }}.jar -Xmx256M -Xms256M > app.log 2>&1 < /dev/null &
# 输出日志以确认进程已启动
echo 'Spring Boot application started and running in the background.'
"
它就会一直卡在这里。但是事实上,这一个项目是被正确运行了,监听端口也有信息,但是工作流中会报错:
Spring Boot application started and running in the background.
client_loop: send disconnect: Broken pipe
Error: Process completed with exit code 255.
我有一点不明白,部署成功之后,不就是应该断开ssh连接吗?有没有大佬解决一下?
因为这个地方报错,所以它工作流就一直显示是错误的,即使产生效果是正确的,我试图用exit命令来直接结束与目标服务器的ssh连接,但还是报这个错误,我又把目标服务器上面的连接时长设置长了一点,还是报错
这个问题通常是由于在GitHub Actions中通过SSH连接到远程服务器并执行命令时,SSH会话的关闭方式不正确导致的。在你的情况中,虽然Spring Boot应用已经成功启动并在后台运行,但SSH会话可能因为某些原因(如输出重定向)被异常中断,导致GitHub Actions认为命令执行失败。
这里有几个可能的解决方案:
使用nohup
和&
确保进程在后台运行:
在你的命令中,你已经使用了&
来将进程放入后台,但可以使用nohup
来确保即使SSH会话断开,进程也会继续运行。修改后的命令如下:
cd ${{ env.DEPLOY_PATH }}/jar && \
nohup ${{ env.JDK_HOME }}/java -jar ${{ env.JAR_FILE }}.jar -Xmx256M -Xms256M > app.log 2>&1 &
echo 'Spring Boot application started and running in the background.'
这里nohup
会忽略所有挂断(SIGHUP)信号,使得进程在SSH会话断开后继续运行。
ssh
命令来连接服务器)正确设置了退出状态。如果SSH命令因为某些原因(如网络问题)失败,它可能会返回非零退出状态,导致GitHub Actions认为整个步骤失败。wait
命令等待后台进程:wait
命令等待后台进程结束(尽管在这个案例中,由于Spring Boot应用是设计为长期运行的,你可能不需要这样做)。但请注意,wait
会阻塞当前shell直到所有后台作业完成,这在你希望SSH会话立即断开的情况下不适用。curl
来检查应用是否响应。应用上述建议之一或几个,应该能帮助你解决GitHub Actions中遇到的问题。
webpack5 打包时候会报几个这种问题,怎么解决
vue3、vite项目本地运行正常,打包报一堆错,应该是type-check的报错,应该怎么解决? 无
vue3+vite打包的时候,报错Access is denied,请问怎么解决啊?重新装了node_modules包,用nvm试了npm的几个版本都不行
循环调用一组函数,动态引入script,在检查元素中的head中script显示已经被引入,但是onload函数没有被执行,并且报错如下:
v-for里面,有一段代码是这样的 结果出现一下报错 如果我是写死这个路径,又是正常的,用变量就不行,用函数return也不行,请问怎么解决呢?