Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jenkinsfile语法-是否有共享python构建步骤的简单示例?_Python_Jenkins_Jenkins Pipeline_Jenkinsfile - Fatal编程技术网

Jenkinsfile语法-是否有共享python构建步骤的简单示例?

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上设置“管道库”,但由于

我有一个带有共享python构建脚本的repo“a”,我今天在Jenkins中的各种“executeshell”构建步骤中运行这些脚本。我从作业dsl groovy代码中植入这些步骤/脚本

在repo“B”(我的应用程序源代码所在的地方)中使用较新的Jenkins 2管道概念,我的Jenkins文件在这个repo中必须是什么样子才能保持干燥并重用现有的python构建脚本

我研究了插件“workflow cps global lib”,并尝试在Jenkins master上设置“管道库”,但由于这种面向groovy的设置,我觉得这不是正确的方法,或者我没有掌握正确的语法。我找不到任何关于这个特定用例的例子

基本上,我只想在我的Jenkins文件中:

  • 克隆我的应用程序的源repo('B')
  • 使我的repo“A”中的共享python构建脚本可用
  • 从各种“执行shell”步骤执行python构建脚本
  • 等等
  • 这是一条路要走。安装它并在“管理Jenkins->配置系统->全局管道库”中进行设置,以使用您的存储库

    如果您决定使用python脚本而不是groovy,请将所有python脚本放在(root)/resources目录中

    在Jenkins文件中-使用
    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留下任何空间?