maven - 在我的工作站上重复 Jenkins groovy yaml 读写

标签 maven jenkins groovy

我想在我的工作站上本地使用 readYamlwriteYaml

它们可以通过 Jenkinsfile 在 Jenkins 上使用,也可以在 Jenkins 构建期间运行的 groovy 脚本中使用,但在本地我想通过 Maven 插件启动我的 groovy 脚本(我使用多语言 Maven 来处理 yaml pom):

build:
    plugins:
      - artifactId: gmavenplus-plugin
        groupId: org.codehaus.gmavenplus
        version: 1.6.1
        executions:
          - goals: [ execute ]
        configuration:
            scripts: ["file:///${project.basedir}/src/main/groovy/local.groovy"]
        dependencies:
          - artifactId: groovy-all
            groupId: org.codehaus.groovy
            version: 2.5.1
            type: pom

和 Maven 对象:

[ERROR] Failed to execute goal org.codehaus.gmavenplus:gmavenplus-plugin:1.6.1:execute 
     (default-cli) on project adam-test: 
     Error occurred while calling a method on a Groovy class from classpath.
     InvocationTargetException: No signature of method: Script1.readYaml() is
     applicable for argument types: (LinkedHashMap) values:
     [[file:kube/application.yml]] -> [Help 1]

我想那里有一些我需要的导入内容,但谷歌搜索没有帮助。

这是否已从 Jenkins 中分离出来成为一个独立的库?

或者,我可以使用其他构建插件实现同样的效果吗?

最佳答案

您不能简单地导入 readYaml()writeYaml() ,因为它们不是方法或函数,而是 Jenkins Pipeline 工作流程步骤。例如,当您执行readYaml()时管道步骤,如下 ReadYamlStep 类对象通过 Jenkins 工作流 Groovy CPS 参与执行。

您可以尝试添加pipeline-utility-steps插件作为依赖项

<dependency>
    <groupId>org.jenkins-ci.plugins</groupId>
    <artifactId>pipeline-utility-steps</artifactId>
    <version>2.1.0</version>
</dependency>

然后尝试制作这个 ReadYamlStep类正在运行,但这确实是一个可怕的做事例子。看看这个依赖项 has 8 compile dependencies它将被添加到您的类路径中。

另一件事 - 如果您希望在 Jenkins Pipeline 环境之外执行 Groovy 脚本,那么您将必须准备一个完整的 Groovy CPS Workflow 环境,这实际上意味着模拟 Jenkins Workflow CPS 插件的功能。您可以查看 ReadYamlStepTest 了解 Workflow CPS 如何为单元测试环境做好准备,以运行支持 readYaml() 的管道脚本。步骤定义。


使用 SnakeYAML

Jenkins 实用步骤使用 SnakeYAML用于处理 YAML 文件。考虑在 Jenkins Pipeline 环境之外使用此库 - 该库没有编译依赖项,您可以从 ReadYamlStep 获得如何使用它的灵感。 .

<dependency>
    <groupId>org.yaml</groupId>
    <artifactId>snakeyaml</artifactId>
    <version>1.21</version>
</dependency>

结论

Jenkins 管道脚本不是普通的 Groovy 脚本,您无法在 Jenkins Workflow CPS 环境之外将它们作为常规 Groovy 脚本执行。

关于maven - 在我的工作站上重复 Jenkins groovy yaml 读写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51383423/

相关文章:

maven - 如何在 Jenkins Maven 作业中发布 Scalastyle 结果?

通过 Jenkins 实现 Python Excel 自动化

grails - 从 'deep' JSON响应中删除属性

java - 使用哪个 Maven 原型(prototype)?

java - Tomcat 找不到 H2 内存数据库

linux - Jenkins Slave 问题 - 无效的流 header : 099EACED

jenkins - LDAP 身份验证不适用于 Jenkins

grails - 构建应用程序时出现严重错误消息-BEGINNER

unit-testing - mockRequest 在 grails 2.x 中不起作用

java - 运行tomcat时Manifest主要属性的签名文件摘要无效