使用 Publish Over SSH 和 SSH Pipeline Steps 插件时 Jenkins 管道中出现日志问题

问题描述 投票:0回答:1

我有一个 Jenkins Pipeline,它使用 Publish Over SSH 和 SSH Pipeline Steps 插件在 Java 构建服务器上执行 shell 脚本。

整个过程工作正常,除了执行 Maven 行并生成许多日志行时。

当到达这一点时,Jenkins Pipeline 并没有结束,只有达到超时时间后才结束。

如果我将 Maven 日志行数减少到 30 行,Jenkins Pipeline 会正确运行,否则不会。

管道:

        ...
        stage('Build') {
            steps {
                script {                    
                    def remote = [
                        name: 'vm-dev',
                        host: 'dev.myhost.com',
                        user: 'user',
                        identityFile: '/var/lib/jenkins/.ssh/ssh-key',
                        allowAnyHosts: true
                    ]                    
                    sshCommand remote: remote, command: "/home/user/workspace/dev/scripts/java15/02-build.sh ${BUILD_NUMBER}"
                }
            }
        }
        ...

shell脚本:

#!/bin/bash

set -e

source "$HOME/.sdkman/bin/sdkman-init.sh"
sdk use java 15.0.2-open

mvn clean install -U -DskipTests=true -q #The log problem is here

if [ $? -ne 0 ]; then
    echo "Fail."
    exit 1
fi
echo "Success."

exit 0

感谢您的帮助。

如果减小 shell 脚本输出日志的大小,管道将正常工作。

我已经测试了 Publish Over SSH 的高级执行选项,但没有成功。

jenkins jenkins-pipeline jenkins-plugins
1个回答
0
投票
  • 您可以尝试增加 Jenkins 中的日志缓冲区大小以处理更多日志行。这可以通过配置
    log-buffer
    插件或调整 Jenkins 的日志设置来完成。
  • 您可以使用
    tee
    命令将日志写入控制台和文件
    mvn clean install -U -DskipTests=true -q | tee build.log
    ,然后在 Jenkins 管道中使用
    archiveArtifacts
    保存
    build.log
    文件。
© www.soinside.com 2019 - 2024. All rights reserved.