如何创建一个在Jenkins中执行python脚本的通用函数

时间:2017-06-23 12:50:44

标签: python jenkins jenkins-pipeline

我有一个常见的python脚本需要在多个管道作业中使用。 我所做的是使用常用方法创建一个qroovy文件,如下所示。

def create_slaves()
{
    def cmd = 'python "-u my_script.py'
    def proc = cmd.execute()
    proc.waitfor()
}
return this

执行引发了这个例外。

Scripts not permitted to use staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods execute java.lang.String

所以我觉得这不是正确的做法。有人知道在管道中执行常见python脚本的合适方法吗?

2 个答案:

答案 0 :(得分:1)

burnettk's answer在正确的轨道上但不完整。我不知道直接运行python脚本的官方方法,所以请尝试以下解决方法

将您的python脚本专门存储在shared library资源文件夹中。 (resources / yourscript.py)

然后将该文件作为字符串导入并将其写入文件。例如:

script{
    def yourScriptAsaString = libraryResource '../resources/yourscript.py' 
    writeFile file: 'yourscript.py', text: yourScriptAsaString
    sh "python yourscript.py"
}

答案 1 :(得分:0)

使用jenkins shared library并使用其中的sh步骤。

顺便说一句,也许你的实际用例比你分享的内容更加微妙(在这种情况下,肯定会使用共享库),但我想我只是使用sh像这样进入每个Jenkins文件,并保持简单:

pipeline {
  agent { label 'docker' }
  stages {
    stage('build') {
      steps {
        sh 'python -u my_script.py'
      }
    }
  }
}