Java 如何使用GitLab runner运行spring启动应用程序?
我有一个spring boot maven应用程序,我在本地运行的身份是:Java 如何使用GitLab runner运行spring启动应用程序?,java,spring-boot,gitlab,gitlab-ci,gitlab-ci-runner,Java,Spring Boot,Gitlab,Gitlab Ci,Gitlab Ci Runner,我有一个spring boot maven应用程序,我在本地运行的身份是: mvn spring-boot:run 我希望能够在GitLab runner中运行此程序,这样当我将代码推送到master时,它会自动将最新的代码复制到那里并运行应用程序 我的GitLab runner现在是在shell模式下配置的,我在.GitLab ci.yml文件中有一个部署任务,它只运行以下任务: mvn spring-boot:run 我遇到的问题是在应用程序启动后,我可以看到它正在运行。。。但它从未显示
mvn spring-boot:run
我希望能够在GitLab runner中运行此程序,这样当我将代码推送到master时,它会自动将最新的代码复制到那里并运行应用程序
我的GitLab runner现在是在shell模式下配置的,我在.GitLab ci.yml
文件中有一个部署任务,它只运行以下任务:
mvn spring-boot:run
我遇到的问题是在应用程序启动后,我可以看到它正在运行。。。但它从未显示为成功或完成。它只是挂在那里(因为执行该命令时终端仍在运行?)
问题是,我是否应该运行另一组命令,以使我的spring boot应用程序在每次推到master时更新并运行?我应该在我的gitlab ci.yml
(或其他文件)中放入什么内容。请注意,我没有使用docker或kubernetes。。。只是贝壳
gitlab CI示例:
run-deploy:
stage: deploy
script:
- mvn $MAVEN_CLI_OPTS spring-boot:run
用这个来尝试nohup也失败了。
-nohup mvn$MAVEN\u CLI\u选择spring引导:运行&
我相信您可以使用运行
阶段来实现这一点。看起来像
run:
stage: run
script:
- mvn $MAVEN_CLI_OPTS spring-boot:run
你可以看到一个例子
确保还定义了阶段
,将运行
作为文档状态
如果.gitlab ci.yml
中未定义任何阶段
,则默认情况下允许将构建
、测试
和部署
用作作业的阶段。(见附件)
您提供的示例文件是在整个配置文件之上,还是只是其中的一部分?如果是这样,我可以根据您的需要调整我的答案。谢谢 很抱歉这么晚了。我最近也有同样的问题。Gitlab runner阻止子进程以及子树中的任何进程。这使得
disown
命令无法执行,因为您无法访问它。分叉和nohup也不起作用
我能想出的唯一解决办法是使用at
命令
基本上,我将命令放在脚本中,然后执行:
现在
成功完成跑步者并在后台启动了我的程序。您能澄清一下这个问题吗?预期的结果是什么?因为当您运行spring boot应用程序时,它会持续运行,您会看到)是的,我想知道如何使其运行,以便在我将代码推入fit repo时,它将自动部署和启动应用程序,而不是GitLab runner被卡住。也许更好的办法是通过spring boot plugin重新打包jar,然后运行jar?但即使这样做,作业仍然不会结束,应用程序将启动并停留在runner中。我做错什么了吗?