Windows azure管道';命令行';代理作业是否从上一个作业继承工作目录?
我对azure管道代理作业的理解是:Windows azure管道';命令行';代理作业是否从上一个作业继承工作目录?,windows,azure-pipelines,Windows,Azure Pipelines,我对azure管道代理作业的理解是: 每项工作都是独立的 每个“命令行”作业都在其各自的上下文中运行,并具有独立的作用域 但是,如果未设置azure管道“命令行”的工作目录,则默认为以前“命令行”代理作业中的工作目录。在回答问题之前,我希望确保术语清楚: 管道是ci cd流程的总体定义,它们可以包含多个阶段 阶段是管道的各个阶段,如构建、测试、部署。。。它们可以包含多个作业 作业是实现流程所需的任务/步骤的集合。它们包含一个或多个任务/步骤 任务或步骤是正在执行的实际操作,如“执行此命令”“构
但是,如果未设置azure管道“命令行”的工作目录,则默认为以前“命令行”代理作业中的工作目录。在回答问题之前,我希望确保术语清楚:
- 管道是ci cd流程的总体定义,它们可以包含多个阶段
- 阶段是管道的各个阶段,如构建、测试、部署。。。它们可以包含多个作业
- 作业是实现流程所需的任务/步骤的集合。它们包含一个或多个任务/步骤
- 任务或步骤是正在执行的实际操作,如“执行此命令”“构建该dotnet项目”
就工作目录而言,它们都默认为build.workingDirectory(请参阅azure devops默认变量)。
如果将一个任务的工作目录设置为其他任务,则不会影响其他任务。如果使用Microsoft hosted agent,则每次运行管道时,都会得到一个新的虚拟机。虚拟机在使用一次后被丢弃。每个作业可能使用不同的代理,您不应假设在后续作业期间,先前作业的状态可用。 下面是一个简单的测试。 我在管道中创建了两个代理作业,添加命令任务并逐个运行代理作业。在第一个命令任务中,我在$(Agent.BuildDirectory)文件夹中创建一个.txt文件,然后读取它。 在第二个命令任务中,我只是切换到文件夹并尝试读取.txt文件。 最后,第二个任务失败,并向我显示错误消息。 若我在第一个任务中设置了工作目录,而并没有在第二个任务中设置它。这两个任务的工作目录不同。