仅为一个管道更改Jenkins shell

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

我如何让Jenkins只使用一个Jenkins管道/ Jenkins文件而不是它的本机shell? “代理人”是否帮助我这样做?

我编写了一个用于部署的shell脚本,但是一些参数包含空格,这会破坏我通过丢失一些args生成的结果命令。我已经找到了如何通过将Jenkins shell类型全局配置为Bash来避免此问题。但是当我更改全局shell类型时,使用Jenkins docker插件语法的其他Jenkins管道在docker容器中使用'sh'命令时会被破坏。我的解决方法是ping pong shell类型的全局设置,具体取决于我想要运行的Jenkins构建。它是皇家PITA。

bash docker jenkins jenkins-pipeline
1个回答
0
投票

我很尴尬地说我需要的只是一个shebang

我的Jenkinsfile使用Jenkin的sh command运行自定义(bash)shell脚本,如下所示:

sh "./deploy.sh \"arg1\" \"arg 2\" \"arg3\""

为了迫使deploy.sh在Bash中运行,deploy.sh的内容需要在第一行包含#!/bin/bash,如:

#!/bin/bash
echo "deploy args: $@"

无论如何,我认为应该有一种方法告诉Jenkins管道它应该运行特定的设置,比如sh = bash。

© www.soinside.com 2019 - 2024. All rights reserved.