【发布时间】:2021-09-09 16:51:24
【问题描述】:
我正在尝试将存储库的根目录挂载到 Azure Pipeline 作业中的 docker 容器。在我的 Windows 本地上,我可以成功地将源设置为 $(pwd),但在我的 Ubuntu 托管代理上,使用 $(Build.SourcesDirectory) 时出现以下错误:
docker:来自守护进程的错误响应:类型的挂载配置无效 “bind”:绑定挂载源路径不存在:/var/vsts/28/s。
/var/vsts/28/s 的路径是正确的,请问有什么问题?
Yaml 定义:
jobs:
- job: Run
pool:
name: 'Docker'
steps:
- task: Docker@2
displayName: Login to ACR
inputs:
command: login
containerRegistry: acrServiceConnection
- task: PowerShell@2
inputs:
displayName: Run pulumi go
targetType: inline
script: |
docker run --rm --mount type=bind,source=$(Build.SourcesDirectory),target=/project myimage:latest
编辑:
当使用 MS 托管代理时,上述工作正常。这让我相信这是结帐地点的许可问题。对此有何建议?
在运行 ls -l 时,我在自托管和 MS 代理上得到相同的结果:
drwxr-xr-x 8 root root 4096 Sep 9 16:09 folder
-rw-r--r-- 1 root root 1347 Sep 9 16:09 file
-rw-r--r-- 1 root root 178 Sep 9 16:09 ..
-rw-r--r-- 1 root root 5457 Sep 9 16:09 ..
【问题讨论】:
-
也许不是一个真正的答案,但你不能把项目克隆到容器中吗?因为这基本上就是您要挂载的目录中的内容。
-
1.检查相同的管道是否适用于共享代理 - 我试过了,它工作得很好。 2. 搜索检出代码的实际目录的检出任务日志(会说:
Initialized empty Git repository in /home/vsts/work/1/s/。 3. 可能是 FS 权限的问题?尝试添加一个脚本步骤,列出@987654329 中的所有文件@ 并且可能修改/删除一个文件来验证? -
@TheFool 不幸的是,这对于我们的用例来说是不可能的。
-
@qbik 也没有迹象表明 repo 的初始化位置。详情见帖子。
-
this question 提到将
--mount更改为-v(如果路径不存在,则会尝试创建路径)。这至少应该给你一些线索 - 也许它会因不同的错误而失败,或者它会成功并创建一个空目录(然后路径错误)。
标签: docker azure-devops azure-pipelines azure-pipelines-yaml