我可以用 Groovy 以外的其他语言在 Jenkins Pipeline 中创建“共享库”吗?

问题描述 投票:0回答:1

我有一个 python 脚本,它执行 REST 命令并处理结果。我希望这个脚本能够被不同的 Jenkins Pipelines 使用,我通过 Jenkins 官方文档找到的一种方法是使用“共享库”,并且这些示例(还有我在网上找到的其他示例)使用 Groovy。

我的问题是,是否可以使用 Groovy 之外的其他语言创建共享库?对于前。蟒蛇?

shared-libraries jenkins-pipeline
1个回答
26
投票

简短的回答是否定的。所有 Jenkins Pipeline 执行(现在)都是专门的 Groovy,通过 Pipeline:Groovy 插件执行,该插件使用 Groovy CPS 库来执行编译和运行时转换。 Jenkins Pipeline 生态系统与 Groovy 紧密相关。未来可能会改变,但现在不值得付出努力。

如果您确实想在共享库中使用Python代码,您可以做的就是将其放入库的

resources/
文件夹中,然后使用管道步骤加载并执行它。没有说明为什么要使用 Python 的用例(或您试图解决什么问题),因此下面是一个人为的示例:

  • 在您的共享库中:

    resources/com/mkobit/sharedlib/my_file.py

      #!/usr/bin/env python
      print("Hello")
    
  • 共享库Groovy 全局变量:

    vars/mkobitVar.groovy

      def runMyPython() {
        final pythonContent = libraryResource('com/mkobit/sharedlib/my_file.py')
        // There are definitely better ways to do this without having to write to the consumer's workspace
        writeFile(file: 'my_file.py', text: pythonContent)
        sh('python ./my_file.py')
      }
    
  • 在消费者中

      @Library('mkobitLib') _
    
      node('python') {
         mkobitVar.runMyPython()
      }
    
© www.soinside.com 2019 - 2024. All rights reserved.