Sources
Azure 构建管道 - 获取源 - 干净 -和有什么区别Sources directory
?
对于Sources,就像文件所说的那样:
构建管道执行$(Build.SourcesDirectory)中的任何更改的撤消
重要提示:an undo of any changes
此处提到的更改是指不受源代码控制的更改。
我们可以从 git 命令中得到这个git clean -ffdx
:
混帐清洁:
选项
-d
除了未跟踪的文件之外,删除未跟踪的目录。如果未跟踪的目录由不同的 Git 存储库管理,则默认情况下不会将其删除。如果您真的想删除这样的目录,请使用两次 -f 选项。
因此,它将清除源代码中的源代码控制未跟踪的任何更改。
例如,我$(Build.SourcesDirectory)
直接在我的构建服务器机器中进行了一些更改(不是 repo)。该clean:source
选项将还原此更改。
构建管道后,我在源目录中修改了一个测试 txt 文件,例如c:\agent_work\1\s
:

我直接在目录中更改1122
为112233
。接下来,我设置了clean:source
,当我们执行管道时,azure devops 将删除上述修改,将恢复为1122
.
对于Sources 目录,就像文档解释的那样,azure devops 将删除并重新创建$(Build.SourcesDirectory)
. 它将删除文件夹c:\agent_work\1\s
,然后创建一个新文件夹,并在新创建的文件夹中签出源。
更新了更详细的示例:
要说清源,我们要知道这个选项是用于自托管代理而不是微软托管的代理,用于清空$(Build.SourcesDirectory)
自托管代理中的源目录。那是因为您每次使用 Microsoft 托管代理时都会获得一个新代理。检查官方文档中的注释。
Sources
现在,让我们比较一下和之间的区别Sources directory
。
当我们使用自托管代理创建新管道时,Azure devops 会将源从 repo 检出到自托管代理:

因此,来自 repo 的构建源将保存到$(Build.SourcesDirectory)
我们自托管代理的文件夹中:

然后,我们打开那个文件夹,并在这个文件夹中手动添加一个新的测试文件(不要从 repo 中添加),比如Test.txt
.
如果我们选择clean:source
,azure devops 将删除Test.txt
我们手动添加的文件,但保留其他文件:

接下来,我们测试该clean:Sources directory
选项。我们还在文件夹中添加相同的测试文件$(Build.SourcesDirectory)
,然后选择选项 Sources Directory:

所以,你应该清楚的知道 和 的区别Sources
,Sources directory
一种只清除我们添加的多余文件,另一种是清除所有文件。当我们的 repo 很大时,我们不想花时间重新检查所有 repo,我们可以选择 source。
这是最简单最直接的例子。当然,这个选项不仅对文件有用,对任何文件修改也有用。