Azure devops 更改Azure管道YAML中所有步骤的工作目录

Azure devops 更改Azure管道YAML中所有步骤的工作目录,azure-devops,yaml,azure-pipelines,azure-pipelines-yaml,Azure Devops,Yaml,Azure Pipelines,Azure Pipelines Yaml,可以为单独的脚本设置工作目录: -脚本:foo 工作目录:bar 但是,如果所有步骤都要在特定目录中运行,那么为每个步骤定义它就会变得重复 使用cd不会影响其他步骤: - script: cd foo - script: pwd # returns default working dir instead of foo 这一问题的两个具体例子是: 将多个repo签出为资源时,默认工作目录比签出的repo高一级 为位于子目录(如monorepo)中的项目运行管道时 我想这会把ADO中的只读操作

可以为单独的脚本设置工作目录:

-脚本:foo
工作目录:bar
但是,如果所有步骤都要在特定目录中运行,那么为每个步骤定义它就会变得重复

使用
cd
不会影响其他步骤:

- script: cd foo
- script: pwd # returns default working dir instead of foo
这一问题的两个具体例子是:

  • 将多个repo签出为资源时,默认工作目录比签出的repo高一级
  • 为位于子目录(如monorepo)中的项目运行管道时

我想这会把ADO中的只读操作搞得一团糟,所以我认为这是不可能的


您最好在管道开始时立即将源代码检查到默认工作目录或将内容复制到默认工作目录。

解决方法是将文件移动到默认工作目录,而不是更改任务的工作目录,一种方便的方法是使用
git sparse checkout
如下:

git sparse-checkout set example && mv example/{*,.*} . || true
{*,.*}
部分也用于移动点文件,需要
|true
,因为这也会尝试移动