如何在jenkins管道步骤中运行perl脚本

时间:2018-02-25 06:15:16

标签: jenkins jenkins-pipeline

我在jenkins中配置了一个管道脚本。在一个阶段,我需要运行带有参数的perl脚本,例如:

pipeline{

 agent any

    stages {

     stage('First Stage')
        {
            steps
            {
                 dir ("path_to_script")

                 sh "#!/usr/bin/perl -w test.pl --arg ar1 --arg ar2 --arg ar3"
            }

        }

此代码对我没有帮助。如何执行脚本test.pl?

2 个答案:

答案 0 :(得分:1)

我向shebang提供所有内容感觉有点奇怪。从本质上讲,你说的是文件其余部分的解释器是带有完整参数集的perl(然后它不会获得执行所提供的代码)。为什么我可以想象这仍然有效,我建议只拨打perl:

sh "/usr/bin/perl -w test.pl --arg ar1 --arg ar2 --arg ar3"

并没有引入shebang定义。

这只对我有意义,如果你提供一个perl脚本(然后_Michael J_s'由于多行引用而对我有意义:

sh """#!/usr/bin/perl
use strict;
use warnings;

print "Hello, World!\n";"""

答案 1 :(得分:0)

我知道这个线程已经有几年历史了,但是只是为了记录...

steps
{
    dir ("path_to_script")

    sh "#!/usr/bin/perl -w test.pl --arg ar1 --arg ar2 --arg ar3"
}

与cd不同,dir不是有效且持久的命令。而是,与声明性管道保持一致,这是一个块,例如:

dir ("path_to_script") {
    sh "/usr/bin/perl -w ./test.pl --arg ar1"
}

我相信文档中的shebang是用于脚本是否内联的。为此,如果test.pl将shebang作为其第一行(#!/ usr / bin / perl -w),则将其减少为:

dir ("path_to_script") {
    sh "./test.pl --arg ar1"
}
相关问题