首页 > 解决方案 > Jenkins 不会隐藏控制台上正在打印的 shell 脚本命令

问题描述

我已经设置了一个管道脚本,它将使用 maven 构建一个 JAR,并且参数来自 Jenkins 的 JAR。其中之一是密码。

stages {
    stage('Maven Build') {
        steps {
            script {
                echo "Maven Build"
                withMaven(jdk: javaVersion, maven: mavenVersion) {
                    sh 'mvn clean install'
                }
            }
        }
    }
    stage('Branch Creation') {
        steps {
            script {
            sh """
            set +x 
            "java -jar target/github-branch-creator-1.0-SNAPSHOT-jar-with-dependencies.jar ${params.Username} ${params.Password} ${params.value1} ${params.value2} ${params.value3}"
            """
            }
        }
    }
} 

我确实提到了"""三重双引号来接受来自詹金斯的参数,并且确实提到了set +x,但它仍然会在控制台中打印命令。

+java -jar target/github-branch-creator-1.0-SNAPSHOT-jar-with-dependencies.jar abc sensitive_password v1 v2 v2

我尝试在我的脚本#!/bin/bash +x之上。groovy我仍然发现它正在打印。如果有人可以帮忙?

标签: shelljenkinsjenkins-pipelineshjenkins-groovy

解决方案


我认为如果您不以纯文本形式传递密码会更好。

  • 您可以尝试的方法:

    要么加密密码,然后将参数传递给命令行,你可以在你的java代码中使用它来解密它。

    将命令写入文件,然后执行文件。


推荐阅读