我正在开始使用Jenkins Pipeline。我的Pipeline有一个简单的步骤,应该在不同的代理上运行-比如“限制此项目可以运行的位置”选项。
我的问题是它在master上运行。
它们都是Windows计算机。
下面是我的Jenkinsfile
:
pipeline {
agent {label 'myLabel'}
stages {
stage('Stage 1') {
steps {
echo pwd()
writeFile(file: 'test.txt', text: 'Hello, World!')
}
}
}
}
pwd()
打印C:\Jenkins\workspace\<pipeline-name>_<branch-name>-Q762JIVOIJUFQ7LFSVKZOY5LVEW5D3TLHZX3UDJU5FWYJSNVGV4Q
。
此文件夹位于主控文件夹上。test.txt
文件的存在证实了这一点。
我期望在从属代理上创建test.txt
。
注1
我可以确认管道找到了代理,因为日志包含:
[Pipeline] node
Running on MyAgent in C:\Jenkins\workspace\<pipeline-name>_<branch-name>-Q762JIVOIJUFQ7LFSVKZOY5LVEW5D3TLHZX3UDJU5FWYJSNVGV4Q
但是MyAgent上不存在此文件夹,这似乎与问题有关。
注2
这个问题类似于Jenkins pipeline not honoring agent specification,只是我没有使用build
指令,所以我认为答案不适用。
注解3
pipeline {
agent any
stages {
stage('Stage 1') {
steps {
echo "${env.NODE_NAME}"
}
}
stage('Stage 2') {
agent {label 'MyLabel'}
steps {
echo "${env.NODE_NAME}"
}
}
}
}
这将打印预期输出-master
和MyAgent
。如果这是正确的,那么为什么工作区位于master上的不同文件夹中,而不是MyAgent上的文件夹中?
3条答案
按热度按时间hujrc8aj1#
下面是一个示例
brtdzjyr2#
我遇到了类似的问题,以下管道代码对我很有效(iidoEe.文件在Windows从机而不是Windows主机上创建),
cnjp1d6j3#
我正在调试一个完全不相关的问题,这个事实就摆在我面前,显然管道是在内置节点(以前称为主节点)中处理的,步骤被转发到代理。
因此,即使
echo
运行在代理上,但pwd()
将运行在内置节点上。您可以执行sh 'pwd'
以获取代理上的路径。