这是一个“为什么要这样做”的问题并寻求解释。我有一个 Jenkins 管道维护工作,它是其他工作的委托,然后应将其结果以文本文件形式复制回委托。
委托调用的作业失败,因为 cp 命令表示目标目录不存在。我看了,是的,它不存在。
我的解决方案是回显“hello, world”> txt.txt,现在委托目录存在。所以我的问题是,为什么 Jenkins 不为这项工作创建工作空间。我在各地都使用代表,他们似乎工作得很好。我能说的唯一真正的区别是这个特定委托的代理是“内置的”而不是节点。要回答为什么我要做内置,是因为维护任务必须在主节点和节点上运行。
任何帮助将不胜感激。
Jenkins 不会自动为管道作业创建工作区目录,直到作业显式执行需要工作区的操作(例如签出代码或创建文件)。这是在“内置”代理(Jenkins 控制器)或任何代理上运行的作业的预期行为。
以下示例说明了如何在 Jenkins Pipeline 中添加执行 Shell 步骤来执行简单操作:打印工作区环境变量并列出工作区中的所有文件:
pipeline {
agent any
stages {
stage('Prepare Workspace') {
steps {
// Execute a shell command to print the workspace and list files
sh '''
echo "Workspace Directory: ${WORKSPACE}"
ls -la ${WORKSPACE}
'''
}
}
}
}