Jenkins Powershell写入控制台

时间:2019-02-01 09:36:07

标签: powershell jenkins jenkins-pipeline

我有一个詹金斯(Jenkins)工作,它会调用Powershell文件。当我从自由样式项目中使用它时,它将在控制台输出中显示powershell执行。将其切换到管道作业后,我不再看到输出。

当前我的管道如下所示:

 pipeline 
 {
    stages
    {
        stage ('Deploy To Dev')
         {
            steps
             {
                powershell '"%WORKSPACE%\\SpearsLoad\\Scripts\\CIDeployToDev.Ps1"'
             }
        }
    }
}

但是我没有记录Powershell步骤。

按照文档的说明,我尝试将阶段更改为:

pipeline 
{
    stages
    {
        stage ('Deploy To Dev')
            {
            steps
            {
                node('Deploy the SSIS load')
                {
                    //Deploy the SSIS load
                    def msg = powershell(returnStdout: true, script: '"%WORKSPACE%\\SpearsLoad\\Scripts\\CIDeployToDev.Ps1"')
                    println msg
                }
            }
        }
    }
}

但这给出了:

  

在第123行的第6列中预期有一个步骤。def msg =   powershell(returnStdout:true,脚本:   '“%WORKSPACE%\ SpearsLoad \ Scripts \ CIDeployToDev.Ps1”')

我觉得我缺少一些非常基本的东西。我在做什么错了?

3 个答案:

答案 0 :(得分:1)

您需要将流水线执行包装到script部分,因为您正在尝试在declarative pipeline中使用脚本化语法:

script {
    //Deploy the SSIS load
    def msg = powershell(returnStdout: true, script: '"%WORKSPACE%\\SpearsLoad\\Scripts\\CIDeployToDev.Ps1"')
    println msg
}

答案 1 :(得分:1)

对于任何来这里寻找答案的人,我需要指出,代码实际上存在3个独立的问题:

  1. 缺少已接受答案的脚本部分。
  2. 由于未正确调用Powershell,它实际上并未运行
  3. 由于%WORKSPACE%变量中的空格,PowerShell无法运行

最后我去了:

script {
    def msg = powershell(returnStdout: true, script: " & './SpearsLoad\\Scripts\\CIDeployToDev.Ps1'")
    println msg
        }  

实际上有效!

答案 2 :(得分:1)

我用   写主机“我的消息” 在PowerShell中。这将显示在日志中。