groovy Jenkins Pipeline:从slave agent获取构建输出

emeijp43  于 6个月前  发布在  Jenkins
关注(0)|答案(2)|浏览(65)

背景

假设我有两个作业,一个是“Pipeline Job”,另一个是“Build Job”。"Pipeline Job“在master上运行,当然是一个管道(使用groovy)。然后,对于管道中的构建部分,我使用在Windows上运行的slave,即“构建作业”,它负责构建一些我在主机上做不到的东西。主机也在Windows上运行,但缺少一些特定build.

问题

我有一个很棒的脚本,看起来像这样:

#!groovy
node {
    stage('Environment Preparation') {
        // fetches stuff and sets up the environment on master
    }
    stage('Unit Testing') {
        // some testing
    }
    stage('Build on Slave') {
        def slaveJob = build job: 'BuildJob'
    }
}

字符串
它工作得很好,其中“BuildJob”是“限制此项目可以运行的位置”,即在从服务器上。
我的问题是,我想从'BuildJob'的输出打印在管道日志中。你有一些聪明的方法如何可以做到这一点?我是开放的一切,所以如果你知道更多的聪明的方法来启动'BuildJob'等。我渴望在这里。

pwuypxnk

pwuypxnk1#

你必须在脚本批准下批准你想要访问的东西。不确定你是否真的需要getRawBuild,但它工作了。
Search through console output of a Jenkins job

#!groovy
node {
    stage('Environment Preparation') {
        // fetches stuff and sets up the environment on master
    }
    stage('Unit Testing') {
        // some testing
    }
    stage('Build on Slave') {
        def slaveJob = build job: 'BuildJob'
        println slaveJob.rawBuild.log
    }
}

字符串
jenkinsurl/scriptApproval/您批准以下内容:

method hudson.model.Run getLog
method org.jenkinsci.plugins.workflow.support.steps.build.RunWrapper getRawBuild

tv6aics1

tv6aics12#

嗯,有时候提出一个问题会让你从另一个Angular 思考。
希望有人能从中受益。我偶然发现了一个Pipeline-Plugin tutorial,他们展示了如何使用node来标记脚本代码应该在哪里运行。生成的groovy文件看起来像这样:

#!groovy
stage('Environment Preparation') {
    node('master') {
        // fetches stuff and sets up the environment on master
    }
}
stage('Unit Testing') {
    node('master') {
        // some testing
    }
}
stage('Build on Slave') {
    node('remote') {
        def out = bat script: 'C:\\Build\\build.bat', returnStdout: true
    }
}

字符串
正如你所看到的,教程让我对脚本进行了一点重构。**node('remote')**部分定义了即将到来的东西应该在从机上运行。
我必须在批处理脚本中进行一些自定义,以便将所有重要内容打印到标准输出。
你必须让Jenkins知道哪个节点是“远程”的,方法是进入 * 管理Jenkins >管理节点 ,选择脑海中的从属代理, 配置节点 * 并将“远程”或任何适合你的东西添加到 * 标签 * 字段。

相关问题