在我的 Jenkins 管道中出现 groovy 语法问题
Getting groovy syntax issue in my Jenkins pipeline
我的管道需要一个简单的脚本:-
sh '''podname=$(kubectl get pods -n my-namespace --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}' | grep my-pod)
echo "my name is $podname"'''
我需要通过我的 jenkins 声明性管道调用的是我稍后可以在我的脚本中使用的 kubectl 命令的值。如果我 运行 直接在 linux 服务器上运行,它工作得很好,但不知何故通过 groovy shell 调用总是导致未终止引号的语法错误,非法美元文字等
我该如何解决这个问题?
语法对我来说很好,除了这个,在命令中间:
"\n"
这将被解释为一个实际的换行符,这可能不是您想要的?也许试试这个,让 \n
序列传递给命令:
"\n"
如果仍然没有帮助...
根据 docs:
Runs a Bourne shell script, typically on a Unix node. Multiple lines are accepted.
An interpreter selector may be used, for example: #!/usr/bin/perl
所以另一个建议是尝试将适当的 shebang 添加到您的脚本中...因为没有理由结果应该与您在 shell.[=15] 上 运行 时的结果不同=]
我的管道需要一个简单的脚本:-
sh '''podname=$(kubectl get pods -n my-namespace --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}' | grep my-pod)
echo "my name is $podname"'''
我需要通过我的 jenkins 声明性管道调用的是我稍后可以在我的脚本中使用的 kubectl 命令的值。如果我 运行 直接在 linux 服务器上运行,它工作得很好,但不知何故通过 groovy shell 调用总是导致未终止引号的语法错误,非法美元文字等 我该如何解决这个问题?
语法对我来说很好,除了这个,在命令中间:
"\n"
这将被解释为一个实际的换行符,这可能不是您想要的?也许试试这个,让 \n
序列传递给命令:
"\n"
如果仍然没有帮助... 根据 docs:
Runs a Bourne shell script, typically on a Unix node. Multiple lines are accepted.
An interpreter selector may be used, for example: #!/usr/bin/perl
所以另一个建议是尝试将适当的 shebang 添加到您的脚本中...因为没有理由结果应该与您在 shell.[=15] 上 运行 时的结果不同=]