azure-devops - Azure 构建管道 - 获取源 - 清理 - `Sources` 和 `Sources directory` 之间有什么区别?
问题描述
在 azure build pipeline 中,Get Sources
假设 clean 设置为true
,那么您需要选择以下选项之一:
Sources
Sources and output directory
Sources directory
All build directories
Sources
以下是和之间的区别Sources directory
。你能用实际的例子向我解释一下吗?
Sources:构建管道执行 $(Build.SourcesDirectory) 中的任何更改的撤消。更具体地说,在获取源之前执行以下 Git 命令。
git clean -ffdx
git reset --hard HEAD
源目录:删除并重新创建 $(Build.SourcesDirectory)。这导致为每个构建初始化一个新的本地 Git 存储库。
解决方案
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。
这是最简单最直接的例子。当然,这个选项不仅对文件有用,对任何文件修改也有用。
推荐阅读
- angularjs - 如何使用 $resource POST 操作设置自定义标题?
- javascript - 看来我的 ajax 有效,但没有发布任何内容
- android - 如何在 Firebase 数据库子参考中使用字符串?
- c# - 需要 WCF 安全说明
- javascript - 如何在 JS 淡入淡出幻灯片中插入 CSS 转换旋转动画?
- corda - 在 corda 项目中创建 build.gradle 文件要遵循的步骤
- javascript - 如何计算同一类的两个平均值,并得到两个输出?
- android - 如何解决 ViewModel RunTimeException
- prolog - Prolog 游戏给出错误答案且只有一个答案
- android - 如何去除顶部状态栏黑色背景