首页 > 解决方案 > 使用 java.io.file 的詹金斯管道总是引用主

问题描述

我有一个 Jenkins 管道;

@Library('sharedLib@master') 
import org.foo.point

pipeline {
    agent { label 'slaveone' }
//  agent { label 'master' }
    stages {
        stage('Data Build'){
            steps{
                script{
                    def Point = new point()
                    Point.hello("mememe")
                }
            }
        }
    }
}

它在名为“jenkins-shared-library/src/sharedLib”的库中运行一小段代码;

package org.foo

import java.io.File
class point{
    def hello(name){
        File saveFile = new File("c:/temp/jenkins_log.txt")
        saveFile.write "hello"
    }
}

它在“master”和“slaveone”上都运行良好,但在这两种情况下,“jenkins_log.txt”文件都会出现在 master 上。日志文件包含这个;

Running on slaveone in d:\Jenkins_WorkDir\workspace\mypipeline

这段代码如何在 slaveone 上运行并将文件写入 master?

编辑:我还应该提到这是我第三次尝试这样做。第一个是在管道中直接使用 Groovy 代码,第二个是在 vars 目录中使用“def”类型调用。两者都产生了相同的行为,似乎没有注意到它正在运行的代理。

标签: javafilejenkinsshared-libraries

解决方案


我认为脚本中的所有内容都在 master 上运行,但在这里我找到了一个解决方法: Jenkins Declarative Pipeline, run groovy script on slave agent


推荐阅读