Jenkins的流水线启动jar后未执行问题处理

文章讨论了在Jenkins流水线中配置启动脚本时遇到的问题,即服务未启动且nohup日志缺失。解决办法是在执行jar命令前设置环境变量BUILD_ID或JENKINS_NODE_COOKIE为dontkillme,以防止jenkins在执行完毕后立即退出进程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

现象

在流水线里配置了启动脚本例如,nohup java -jar xxx.jar >nohup.out 2>&1 &
但是在服务器发现服务并未启动,且nohup日志里没输出日志,这样的原因是jenkins在执行完脚本后,就退出了这个进程。

在启动脚本执行jar命令的上一步加入以下变量
export BUILD_ID=dontkillme
如果jenkins是流水线,使用以下这个即可
export JENKINS_NODE_COOKIE=dontkillme 
### 推送 JAR 文件至存储库或服务器 在 Jenkins 流水线中,可以通过配置特定阶段来实现将构建生成的 JAR 文件推送到目标存储库或远程服务器。以下是详细的说明以及相关代码示例。 #### 配置 Maven 构建 为了成功构建 Maven 项目并生成 JAR 文件,需确保已安装 `Maven Integration plugin` 和其他必要的插件[^4]。可以在流水线中使用以下命令完成项目的编译和打包: ```groovy stage('Build') { steps { sh 'mvn clean package -DskipTests' } } ``` 此步骤会清理旧版本的构建产物并通过 `-DskipTests` 参数跳过单元测试以加快构建速度。 #### 将 JAR 文件上传到远程服务器 如果目标是将 JAR 文件复制到远程服务器,则可以利用 `Publish Over SSH Plugin` 插件的功能。该插件支持通过 SSH 协议安全地传输文件。下面是一个完整的流水线片段展示如何操作: ```groovy pipeline { agent any stages { stage('Checkout') { steps { git branch: 'main', url: 'https://github.com/example/repo.git' // 替换为实际仓库地址 } } stage('Build') { steps { sh 'mvn clean package -DskipTests' } } stage('Deploy') { steps { sshPublisher( publishers: [ sshPublisherDesc( configName: 'RemoteServerConfig', transfers: [ sshTransfer( sourceFiles: '**/target/*.jar', removePrefix: 'target/', remoteDirectory: '/path/to/deploy/' ) ], usePromotionTimestamp: false, verbose: true ) ] ) } } } } ``` 上述脚本中的关键部分解释如下: - **git**: 定义源码管理工具及其参数。 - **sh 'mvn ...'**: 执行 Maven 命令进行项目构建。 - **sshPublisher**: 使用 Publish Over SSH 插件发送文件到指定位置。 注意替换模板内的占位符(如 URL、分支名、路径等),使其适配具体场景需求。 #### Docker 环境下的注意事项 当采用基于容器的方式运行 Jenkins 实例时,应特别留意其权限设置与挂载卷的内容。例如,在 `docker-compose.yml` 中加入 `/var/run/docker.sock:/var/run/docker.sock` 映射可赋予内部进程访问宿主机上的 Docker Daemon 的能力[^3]。这对于某些依赖本地服务的任务至关重要。 另外,初始化过程中避免禁用 setup wizard 或者错误调整 JAVA_OPTS 变量可能导致 API 调用失败等问题发生。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值