我可以创建共享库'在Jenkins管道中用除Groovy之外的其他语言?

时间:2017-11-20 22:33:27

标签: shared-libraries jenkins-pipeline

我有python脚本,它执行REST命令并处理结果。我希望这个脚本可以被不同的Jenkins管道使用,我通过Jenkins官方文档找到的一种方法是使用共享库'这些例子(也是我在网上找到的其他例子)他们使用Groovy。

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

1 个答案:

答案 0 :(得分:5)

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

如果你真的想在共享库中使用Python代码,你可以做的是将它放在库的resources/文件夹中,然后加载并执行它管道步骤。您没有说明使用Python的原因(或what problem you are trying to solve),所以下面是一个人为的例子:

  • 在您的共享资源库中: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('chmod +x my_file.py && ./my_file.py')
    }
    
  • 在消费者中

    @Library('mkobitLib') _
    
    node('python') {
       mkobitVar.runMyPython()
    }