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

she*_*eer 3 shared-libraries jenkins-pipeline

我有执行REST命令并处理结果的python脚本。我希望这个脚本可以被不同的Jenkins Pipelines使用,我通过Jenkins官方文档发现的一种方式是使用“共享库”,而这些示例(以及我在网上找到的其他示例)也使用了Groovy。

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

mko*_*bit 8

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

如果您确实想在共享库中使用Python代码,则可以做的是将其放入resources/库的文件夹中,然后使用管道步骤进行加载和执行。没有说明您为什么要使用Python的用例(或您要解决的问题),因此以下是一个人为的示例:

  • 在您的共享库中: resources/com/mkobit/sharedlib/my_file.py

    #!/usr/bin/env python
    print("Hello")
    
    Run Code Online (Sandbox Code Playgroud)
  • 共享库 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('chmod +x my_file.py && ./my_file.py')
    }
    
    Run Code Online (Sandbox Code Playgroud)
  • 在消费者中

    @Library('mkobitLib') _
    
    node('python') {
       mkobitVar.runMyPython()
    }
    
    Run Code Online (Sandbox Code Playgroud)

  • 感谢您的精彩回复,我正在使用 Python,因为使用 python 脚本执行curl 命令更容易,而且我对 Groovy 不太流利。我会尝试你提到的方法,再次感谢。 (2认同)