java - 使用 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”类型调用。两者都产生了相同的行为,似乎没有注意到它正在运行的代理。
解决方案
我认为脚本中的所有内容都在 master 上运行,但在这里我找到了一个解决方法: Jenkins Declarative Pipeline, run groovy script on slave agent
推荐阅读
- dependency-injection - 如何使用依赖注入在 Elixir 中注入 IO.gets 输入?
- php - 使用 PHP 的动态 JSON 数组
- javascript - 如何使 wix 数据库项目独一无二
- html - 将表格与其他表格对齐
- localization - jekyll:检查请求国家
- node.js - 如何以编程方式关闭`ssh2` sftp服务器
- c++ - 当命令失败时,gzip 会在 C++ 中返回错误代码吗?
- python - 在 Python 中查找嵌套的括号对
- scala - com.twitter.util.Await 不会引发 com.twitter.util.TimeoutException
- haskell - 获取当前用户 ID 时出错