在Jenkinsfile

时间:2016-09-23 21:52:12

标签: jenkins groovy jenkins-plugins jenkins-pipeline

我有一个运行shell命令的Jenkins文件,我希望将sh方法的输出作为message:方法的slackSend发送。

到目前为止,我有以下内容,但是对松弛通道的消息是空的。我不确定如何以我在消息部分中引用它的方式捕获输出:

node {

        checkout scm

        stage 'run shell command'

        def shell_command =  sh "ls -l"
        def shell_output = apply_cluster

        stage 'notify slack-notification'
        slackSend channel: '#slack-notifications', color: 'good', message:     shell_output, teamDomain: 'company', token: env.SLACK_TOKEN
}

1 个答案:

答案 0 :(得分:1)

经过一番研究,我发现了一些我最初没有理解的事情:第一个是即使在Jenkins文件中定义一个函数,如果它是一个像sh这样的DSL方法,它仍然会得到执行,所以我定义的第二个函数是没有必要的。其次,如果要返回stdout,则必须将其指定为命令的一部分。新代码如下所示:

node {

        checkout scm

        stage 'run shell command'

        def shell_command =  sh script: "ls -l", returnStdout: true

        stage 'notify slack-notification'
        slackSend channel: '#slack-notifications', color: 'good', message: shell_command, teamDomain: 'company', token: env.SLACK_TOKEN
}