Создает ли конвейер сборки / выпуска новую базовую папку с путем, содержащим номер агента или номер сборки / выпуска? - PullRequest
0 голосов
/ 01 мая 2020
  1. Создает ли каждое выполнение конвейера сборки новую базовую папку, в которую загружается весь код, создаются артефакты?
  2. Создает ли каждое выполнение конвейера выпуска новую базовую папку, в которую загружаются все артефакты?
  3. В приведенном ниже примере конвейера сборки, что означает 1 в пути ниже? Это номер сборки или номер агента?
  4. В приведенном ниже примере конвейера выпуска, что такое r1 в пути ниже? Это номер выпуска или номер агента?

Конвейер сборки - Build.SourcesDirectory / System.DefaultWorkingDirectory / Build.Repository.LocalPath: локальный путь к агенту, на котором находятся файлы исходного кода. скачал. Например: c: \ agent_work \ 1 \ s

Конвейер выпуска - System.ArtifactsDirectory / System.DefaultWorkingDirectory / Agent.ReleaseDirectory: каталог, в который загружаются артефакты во время развертывания выпуска. Пример: C: \ agent_work \ r1 \ a

Ответы [ 2 ]

0 голосов
/ 08 мая 2020

1.При каждом выполнении конвейера сборки создается новая базовая папка, в которую загружается весь код, создаются артефакты?

2. Каждое выполнение конвейера выпуска создает новую базовую папку, в которой все артефакты загружаются?

3. В приведенном ниже примере конвейера сборки, что такое 1 в пути ниже? Это номер сборки или номер агента?

4. В приведенном ниже примере конвейера выпуска, что такое r1 в пути ниже? Это номер выпуска или номер агента?

Для #1 и #2: какую базовую папку вы имеете в виду, папку c:\agent_work или папку c:\agent_work\number?

В нормальных ситуациях: каждый раз, когда мы используем agentA для запуска конвейера сборки, он создает новую подпапку (c:\agent_work\{number}) в рабочей папке (c:\agent_work\). И число там не имеет ничего общего с номером сборки.

Например:

Когда я впервые использую этот agentA для запуска сборки, я ' получу c:\agent_work\1. Второй раз я использую этот агент => c:\agent_work\2. В третий раз я использую этот агент A для запуска другого build pipe => c:\agent_work\3. Таким образом, число имеет отношение только к тому, сколько раз мы используем этот агент для запуска конвейеров.

Выполнить сборку конвейера => c:\agent_work\{number}+1, запустить выпуск конвейера => c:\agent_work\r{number}+1. Число начинается с 1 для сборки и r1 для выпуска.

Числа - это просто числа, они не имеют важных значений. В папке agent_work вы можете найти папки SourceRootMapping (для сборки) и ReleaseRootMapping (для выпуска). Обычно в папке SourceRootMapping вы можете найти файл Mappings.json с таким содержимым:

{
  "lastBuildFolderCreatedOn": "xxxxxxxxxx",
  "lastBuildFolderNumber": 8
}

lastBuildFolderNumber равен {Number} выше, поэтому мы можем знать, что если мы запустим конвейер сборки с использованием этого Агент снова, следующая созданная папка будет c:\agent_work\9 (8+1). В папке ReleaseRootMapping такого файла нет, но он работает аналогично этому.

И причина, по которой я говорю In normal situations: Every time xxx, заключается в том, что если мы вручную удалим часть папок с номерами или SourceRootMapping / ReleaseRootMapping папок, тогда это правило изменится. Иногда {последний номер} +1, а иногда переопределяет папку с последними номерами, а не новую базовую папку.

Для #3 и #4 теперь вы знаете, что номер не является номером сборки или номером агента. Это просто число, указывающее, сколько раз мы используем агент для запуска конвейеров. (В нормальной ситуации). И если в вашей рабочей папке агента слишком много папок, просто удалите всю папку agent_work. В следующий раз, когда мы будем использовать агент, он заново создаст папку agent_work и снова начнет с 1. (agent_work \ 1 или agent_work \ r1).

Надеюсь, это поможет:)

0 голосов
/ 02 мая 2020

Создает ли каждое выполнение конвейера сборки новую базовую папку, в которую загружается весь код, создаются артефакты?

С агентами с собственным размещением нет. Первый запуск сборки создаст папку для этого конвейера сборки в {DRIVE_LETTER}:\{PATH_TO}\{BUILD_AGENT_WORK_DIR}\{BUILD_NUMBER} (в Windows). Эта папка будет использоваться повторно для последующих сборок конвейера. В Azure агентах DevOps Services может случиться, что вы никогда не создадите дважды на одном агенте / хосте, поэтому папки будут создаваться при каждой сборке. См. Документацию для System.DefaultWorkingDirectory по адресу: https://docs.microsoft.com/en-us/azure/devops/pipelines/build/variables?view=azure-devops&tabs=yaml


Создает ли каждое выполнение конвейера выпуска новую базовую папку, в которую загружаются все артефакты?

Нет. Базовая папка создается при первом запуске и повторно используется для последующих запусков, аналогично тому, как сборки создают папки. Они будут найдены в {DRIVE_LETTER}:\{PATH_TO}\{DEPLOYMENT_AGENT_WORK_DIR}\r{RELEASE_NUMBER}.


В приведенном ниже примере конвейера сборки, что такое 1 в пути ниже? Это номер сборки или номер агента?

Номер сборки.


В приведенном ниже примере конвейера выпуска, что такое r1 в пути ниже ? Это номер выпуска или номер агента?

Номер выпуска.

ПРИМЕЧАНИЕ. Повторное использование папок во время сборки / выпуска зависит от обрабатываемого задания. тем же агентом. В Azure Devops Services (в отличие от Azure DevOps Server) это может никогда не произойти, в зависимости от того, насколько недолговечны хосты агентов. Между вашими конвейерами и строительными агентами может быть или не быть никакого сходства.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...