Jenkins Pipeline:执行shell脚本

时间:2017-06-23 08:26:00

标签: jenkins kubernetes jenkins-plugins jenkins-pipeline

我已经创建了一个如下所示的管道,请注意我有脚本文件,即#34; backup_grafana.sh"和" gitPush.sh"在存在Jenkinsfile的源代码存储库中。但由于以下错误,我无法执行脚本: -

client.StoreMessage(MyMailMessage, False, box)    

请注意,我在一个pod中运行kubernetes上的jenkins master。因此,无法按照错误的建议复制脚本文件,因为pod可能会被销毁并动态重新创建(在这种情况下使用新的pod,我的脚本将不再在jenkins master中提供)

/home/jenkins/workspace/grafana-backup@tmp/durable-52495dad/script.sh: 
line 1: backup_grafana.sh: not found

您能否建议我如何在Jenkinsfile中运行这些脚本?我还想提一下,我想在我已经创建的python slave上运行这些脚本。

1 个答案:

答案 0 :(得分:2)

如果命令' sh backup_grafana.sh'在实际应该成功执行时无法执行,这里有两种可能的解决方案。

1)也许你需要在这些可执行命令前面加一个点斜杠来告诉你shell它们在哪里。如果它们不在您的$PATH中,您需要告诉您的shell可以在当前目录中找到它们。这里添加了四个非空白字符的固定Jenkins文件:

pipeline {
  agent {
    node {
      label 'jenkins-slave-python2.7'
    }
  }
  stages {
    stage('Take the grafana backup') {
      steps {
        sh './backup_grafana.sh'
      }
    }
    stage('Push to the grafana-backup submodule repository') {
      steps {
        sh './gitPush.sh'
      }
    }
  }
}

2)通过将以下其中一项声明为脚本中的第一行,检查您是否已将文件声明为bash或sh脚本:

#!/bin/bash 

#!/bin/sh