docker - Jenkins Pipeline 和 Docker - 如何从容器归档文件
问题描述
根据Jenkins Pipeline Docs,我应该能够在使用 Docker 时使用管道步骤。但是,“ archiveArtifacts ”似乎不起作用:
def container = docker.image("some_image")
container.inside {
sh 'date > /tmp/test.txt'
sh 'cat /tmp/test.txt' //works, shows file
def fileContents = readFile '/tmp/test.txt' //works
echo "Contents: ${fileContents}" //works, shows file
archiveArtifacts '/tmp/*.txt' //FAILS
}
“错误:未找到与文件模式“/tmp/*.txt”匹配的工件。配置错误?”。
我尝试过的事情:
- 在存档步骤之前添加同步和睡眠(5),以防这是文件同步问题。
- 尝试归档 '/*' 和 '*' 以防它在主机上运行(同样的错误)。
关于归档 Docker 容器中生成的文件有什么建议吗?
PS:我打开了一个错误报告......看起来archiveArtifacts只能处理docker容器中$WORKSPACE中的文件。
解决方案
您似乎已经找到了同一张 Jira 票证中报告的解决方案,所以我将在这里为大家发布:
这工作正常:
def image = docker.image("alpine") image.inside { sh 'date > /tmp/test.txt' sh "cp /tmp/test.txt ${WORKSPACE}" archiveArtifacts 'test.txt' }
推荐阅读
- logging - 如何在 Fluentd 配置中定义哈希(JSON 或对象)?
- sql - 在 SQL Server 中动态转换更新语句值
- reactjs - 无法将类型分配给 React 高阶组件
- python - 根据Python中的第二个列表调整列表中的元素
- linux - 使用 rsync 自动同步
- python - 如何使用 APScheduler 管理任务队列?
- xaml - 根据参数调整ListView中的文本大小
- java - 如何通过收集器分组以从数据中创建新字段?
- c++ - c++ std::vector: sum in a vector position its previous value
- nginx - Kubernetes - 入口控制器与入口