Jenkins 詹金斯:“这是我的工作。”;“执行系统groovy脚本”;在管道步骤中(SCM已提交)

Jenkins 詹金斯:“这是我的工作。”;“执行系统groovy脚本”;在管道步骤中(SCM已提交),jenkins,groovy,Jenkins,Groovy,有没有办法从SCM提交的管道文件中使用Jenkins“执行系统groovy脚本”步骤 如果是,我将如何访问其中的预定义变量(如build) 如果没有,我是否能够复制其他功能,例如使用共享库插件 谢谢 您可以将groovy代码放入(始终受源代码控制的)Jenkins文件中的管道中,如下所示: pipeline { agent { label 'docker' } stages { stage ('build') { steps { script {

有没有办法从SCM提交的管道文件中使用Jenkins“执行系统groovy脚本”步骤

如果是,我将如何访问其中的预定义变量(如build)

如果没有,我是否能够复制其他功能,例如使用共享库插件


谢谢

您可以将groovy代码放入(始终受源代码控制的)Jenkins文件中的管道中,如下所示:

pipeline {
  agent { label 'docker' }
  stages {
    stage ('build') {
      steps {
        script {

          // i used a script block because you can jam arbitrary groovy in here
          // without being constrained by the declarative Jenkinsfile DSL
          def awesomeVar = 'so_true'
          print "look at this: ${awesomeVar}"

          // accessing a predefined variable:
          echo "currentBuild.number: ${currentBuild.number}"
        }
      }
    }
  }
}
生成控制台日志:

[Pipeline] echo
look at this: so_true
[Pipeline] echo
currentBuild.number: 84

单击任何管道作业左侧导航中的“管道语法”链接,以获得一系列可以在“全局变量引用”中访问的示例。

我认为这种方式放置的脚本不会在主机上执行,而是受到jenkins的沙箱模式的约束?我对“Execute system groovy script”(执行系统groovy脚本)的系统部分非常感兴趣,-Dit在主机上执行,它受到jenkins的沙盒模式的约束,这种模式可以按照中描述的方法在case-by-case basic上重写。好吧,我的坏,太好了:)@burnettk,如果我在groovy代码中有导入,它会工作吗?