Jenkinsfile语法-是否有共享python构建步骤的简单示例?
我有一个带有共享python构建脚本的repo“a”,我今天在Jenkins中的各种“executeshell”构建步骤中运行这些脚本。我从作业dsl groovy代码中植入这些步骤/脚本 在repo“B”(我的应用程序源代码所在的地方)中使用较新的Jenkins 2管道概念,我的Jenkins文件在这个repo中必须是什么样子才能保持干燥并重用现有的python构建脚本 我研究了插件“workflow cps global lib”,并尝试在Jenkins master上设置“管道库”,但由于这种面向groovy的设置,我觉得这不是正确的方法,或者我没有掌握正确的语法。我找不到任何关于这个特定用例的例子 基本上,我只想在我的Jenkins文件中:Jenkinsfile语法-是否有共享python构建步骤的简单示例?,python,jenkins,jenkins-pipeline,jenkinsfile,Python,Jenkins,Jenkins Pipeline,Jenkinsfile,我有一个带有共享python构建脚本的repo“a”,我今天在Jenkins中的各种“executeshell”构建步骤中运行这些脚本。我从作业dsl groovy代码中植入这些步骤/脚本 在repo“B”(我的应用程序源代码所在的地方)中使用较新的Jenkins 2管道概念,我的Jenkins文件在这个repo中必须是什么样子才能保持干燥并重用现有的python构建脚本 我研究了插件“workflow cps global lib”,并尝试在Jenkins master上设置“管道库”,但由于
libraryResource
script = libraryResource 'my_script.py'
并使用它
sh script
这是一条路要走。安装它并在“管理Jenkins->配置系统->全局管道库”中进行设置,以使用您的存储库
如果您决定使用python脚本而不是groovy,请将所有python脚本放在(root)/resources目录中
在Jenkins文件中-使用libraryResource
script = libraryResource 'my_script.py'
并使用它
sh script
(声誉不足,无法对上述已接受答案添加评论)
给定/resources/myscript.py
中的python脚本,如下所示:
#!/usr/bin/env python3
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--echo")
args = parser.parse_args()
print(args.echo)
def runPy(String scriptPath, def args) {
String script = libraryResource(scriptPath)
String argsString = args.join(' ')
sh "python3 -c '${script}' ${argsString}"
}
runPy('myscript.py', ['--echo', 'foo'])
使用Jenkins函数,如下所示:
#!/usr/bin/env python3
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--echo")
args = parser.parse_args()
print(args.echo)
def runPy(String scriptPath, def args) {
String script = libraryResource(scriptPath)
String argsString = args.join(' ')
sh "python3 -c '${script}' ${argsString}"
}
runPy('myscript.py', ['--echo', 'foo'])
(声誉不足,无法对上述已接受答案添加评论)
给定/resources/myscript.py
中的python脚本,如下所示:
#!/usr/bin/env python3
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--echo")
args = parser.parse_args()
print(args.echo)
def runPy(String scriptPath, def args) {
String script = libraryResource(scriptPath)
String argsString = args.join(' ')
sh "python3 -c '${script}' ${argsString}"
}
runPy('myscript.py', ['--echo', 'foo'])
使用Jenkins函数,如下所示:
#!/usr/bin/env python3
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--echo")
args = parser.parse_args()
print(args.echo)
def runPy(String scriptPath, def args) {
String script = libraryResource(scriptPath)
String argsString = args.join(' ')
sh "python3 -c '${script}' ${argsString}"
}
runPy('myscript.py', ['--echo', 'foo'])
如何传递参数?@red888我的解决方案是这样做:
script=script.replaceAll('sys\\.argv\\[1\\]','argument goes here')
感觉很粗糙,但它可以工作。看来这是唯一的选择。亲爱的上帝,那太可怕了。它真的支持args吗?我用ps1做这件事,并用类似于您的“powershell”来称呼它。“sh”和“powershell”似乎没有为args留下任何空间?如何传递参数?@red888我的解决方案是这样做:script=script.replaceAll('sys\\.argv\\\[1\\\]','argument goes here')
感觉非常粗糙,但它可以工作。看来这是唯一的选择。亲爱的上帝,那太可怕了。它真的支持args吗?我用ps1做这件事,并用类似于您的“powershell”来称呼它。“sh”和“powershell”似乎没有给args留下任何空间?