jenkins读取另外一个pipeline的archiveArtifacts

后来我找到了一个插件实现了以下功能: Copy Artifact
下面这种方法不建议使用了

使用jenkins的过程中遇到了一个需求:
我的其中一个流水线构建出了 docker 镜像 , 在另外一个流水线中不想再反复构建一次了, 可能是因为这次构建是多余的, 也可能为了保证版本一致。

先说一下 pipeline 中的写法:

stage('test') {
    steps {
        sh 'echo aaa > aaa.txt'
        archiveArtifacts artifacts: 'aaa.txt', followSymlinks: false
        // 这里也可以不使用 script
        script {
            println(Jenkins.instance.getItem("self-pipeline").lastSuccessfulBuild.artifacts[0].file.text)
        }
    }
}

pipeline中运行groovy中会遇到权限问题, 建议安装插件 Permissive Script Security, 并且添加jenkins启动参数-Dpermissive-script-security.enabled=true
相关资料搜索: jenkins in-process script approval
执行groovy代码后, Manage Jenkins -> in-process script approval 中会有一些规则等待允许, 点击approval即可

另外: 上面代码的文档地址: https://javadoc.jenkins-ci.org/index-core.html
不过这么调试是非常麻烦的, 建议新建一个maven项目, 再pom中引入以下依赖, 新建一个 groovy 脚本, 可以使用代码提示

<dependency>
    <groupId>org.jenkins-ci.main</groupId>
    <artifactId>jenkins-core</artifactId>
    <version>2.85</version>
</dependency>
posted @ 2021-07-20 14:42  rabbix  阅读(662)  评论(0编辑  收藏  举报