Основываясь на моем тесте, причиной этой проблемы является то, что два этапа выполняются на разных машинах с агентом.
Например: Этап A -> Имя машины агента: 'fv-az146', этап B -> Имя машины агента: 'fv-az151'
Вы можете проверить информацию об агенте в Журнале сборки -> Инициализировать задание .
Есть ли способ сохранить изменения на всех этапах вместо их сброса?
Поскольку вы не хотите публиковать sh артефакты, вы можете попробовать использовать Самостоятельные агенты для запуска двух этапов.
Вам необходимо добавить требования к агенту, чтобы гарантировать, что этапы выполняются на одном и том же самом размещенном агенте.
Согласно this do c:
Ключевое слово requires поддерживается частными пулами.
Мы не смогли указать Speci c «Возможности агента» в агентах, размещенных на сервере Microsoft. Таким образом, мы не могли гарантировать, что два этапа могут выполняться на одном и том же агенте
Обновление:
Поскольку два этапа выполняются на одном и том же агенте, "check out" "шаг на этапе B может переопределить файлы на этапе A.
Таким образом, вам также необходимо добавить - checkout: none
на этапе B.
Вот обновленный шаблон Yaml:
stages:
- stage: A
pool:
name: Pool name
demands:
- Agent.Name -equals agentname1
jobs:
- job: a
steps:
- task: PowerShell@2
...
- stage: B
dependsOn: A
pool:
name: Pool name
demands:
- Agent.Name -equals agentname1
jobs:
- job: b
steps:
- checkout: none
- task: PowerShell@2
...
Общий рабочий процесс : Этап A редактирует файлы и сохраняет их в $ (System.DefaultWorkingDirectory).
Тогда этап B может напрямую использовать файлы в $ (System.DefaultWorkingDirectory).
Файлы в $ (System.DefaultWorkingDirectory) сохранят изменения в этапах A и B.