我无法在Jenkins管道中使用@Grab。在这里需要帮助。以下是错误。
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
WorkflowScript: 1: unable to resolve class org.yaml.snakeyaml.Yaml
@ line 1, column 1.
@Grab('org.yaml:snakeyaml:1.17')
^
1 error
以下是管道代码 test.groovy
@Grab('org.yaml:snakeyaml:1.17')
import org.yaml.snakeyaml.Yaml
node{
stage('test'){
Yaml parser = new Yaml()
def a = """
---
environment: production
classes:
nfs::server:
exports:
- /srv/share1
- /srv/share3
parameters:"""
parser.load(a)
print(parser.load(a))
}
}
错误在定义为“ SCM的管道脚本”的管道中发生,并且在定义“管道脚本”和脚本控制台中正常工作
以下代码可用于脚本控制台(管理Jenkins->脚本控制台)
@Grab('org.yaml:snakeyaml:1.17')
import org.yaml.snakeyaml.Yaml
Yaml parser = new Yaml()
def a = """
---
environment: production
classes:
nfs::server:
exports:
- /srv/share1
- /srv/share3
parameters:"""
parser.load(a)
print(parser.load(a))
输出
[environment:production, classes:[nfs::server:[exports:[/srv/share1, /srv/share3]]], parameters:null]
答案 0 :(得分:0)
Groovy Grab使用Ivy管理jar的恢复。您需要添加Shared Groovy Libraries Plugin。默认情况下,它从maven central获取jar,但是您可以使用注释@GrabResolver指定其他存储库。 来自here
此外,您可以将jar文件添加到Jenkins主目录中的./.groovy/grapes/org.yaml/snakeyaml/jars/snakeyaml-1.17.jar
。
第二种情况不使用此库,而使用standard中的Pipeline Utility Steps readYaml
writeYaml
函数