You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何阻止Azure DevOps的PublishPipelineArtifact任务忽略.git目录

问题原因

Azure DevOps 的 PublishPipelineArtifact 任务存在内置默认忽略规则,即便你没有手动创建 .artifactignore 文件,也会默认忽略 .git、.gitignore 等版本控制相关目录,这就是你日志中出现 .git 路径被过滤提示的原因。你之前流水线正常、后续失效的情况,和Azure DevOps 2021年中对发布任务默认规则的更新有关。

解决方法

方法1:新增自定义.artifactignore文件

在你的代码仓库根目录创建 .artifactignore 文件,语法和 .gitignore 一致,使用 ! 前缀取消对应路径的忽略规则,示例内容如下:

# 明确声明不忽略.git目录及所有子内容
!.git/**

# 其他你需要忽略的文件可按常规规则补充,例如:
# **/*.log
# **/temp/

该配置会覆盖默认的.git忽略规则,发布时就会保留.git目录。

方法2:流水线临时生成忽略规则

如果你不想在仓库中新增文件,可以在发布任务前添加一步任务,临时生成符合要求的忽略规则,示例YAML如下:

- bash: |
    echo "!.git/**" > .artifactignore
  workingDirectory: $(Build.SourcesDirectory)
  displayName: 临时配置制品忽略规则

# 原有发布任务建议显式指定路径,避免歧义
- publish: $(Build.SourcesDirectory)
  artifact: repository

方法3:使用CopyFiles任务中转

你也可以先通过CopyFiles任务把所有需要的内容(包括.git目录)复制到中转目录,再发布该目录,CopyFiles任务不会触发默认的artifact忽略规则:

# 复制所有内容(含.git)到中转目录
- copy: $(Build.SourcesDirectory)
  target: $(Build.ArtifactStagingDirectory)/repository

# 发布中转目录内容
- publish: $(Build.ArtifactStagingDirectory)/repository
  artifact: repository

内容的提问来源于stack exchange,提问作者stephen newman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 04:09:03