小编use*_*557的帖子

如何在沙盒管道脚本中将 Jenkins 配置为从 Artifactory @Grab 依赖项

我可以在沙盒和非沙盒模式下在 Jenkins 管道脚本中使用 @Grab 注释。我的问题是,默认情况下,依赖项是针对 Maven 中央存储库解决的,但我需要针对我们公司的 Artifactory 解决它们。为了演示这个问题,这里有一个简单的管道脚本:

//@Grab(group = 'my.compay', module='my-module-name', version='1.0.0-SNAPSHOT')
//import my.company.MyFancyClass
@Grab('com.google.guava:guava:23.0')
import com.google.common.base.Joiner

pipeline {
    agent any
    stages {
        stage('Grape Test') {
            steps {
                echo "Joiner: ${Joiner.class}"
                // echo "MyFancyClass: ${MyFancyClass.class}"
            }
        }
    }
}

Run Code Online (Sandbox Code Playgroud)

当我按原样运行脚本时,我将在输出中看到类的完全限定名称。但是,当我取消注释与公司工件脚本中公开的依赖项一起使用的注释行时,会失败并显示以下内容:

org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
WorkflowScript: 2: unable to resolve class my.company.MyFancyClass
 @ line 1, column 1.
   @Grab(group = 'my.company', module='my-module-name', version='1.0.0-SNAPSHOT')

1 error
Run Code Online (Sandbox Code Playgroud)

经过调查,我发现 @Grab 使用 Groovy 特定的东西,称为 Grape,如下所述。提到的文档描述了如何使用文件 ~/.groovy/grapeConfig.xml 中的 ivy 设置将 Grape 配置为使用您自己的存储库。我找到了解决方案,并使其适用于常规 Groovy 代码,内容如下: …

jenkins-groovy jenkins-pipeline

5
推荐指数
1
解决办法
2001
查看次数

标签 统计

jenkins-groovy ×1

jenkins-pipeline ×1