Как остановить Azure Pipeline Self-Hosted Agent для удаления источников - PullRequest
0 голосов
/ 02 февраля 2020

У меня есть Azure Pipeline Self-Hosted Agent (Windows), который я настроил на одном из моих ноутбуков, поэтому все работает постоянно; конвейер, который использует это, клонирует репозиторий, а затем запускает конфигурацию CMake, которая дополнительно загружает несколько подмодулей через git submodule update --init.

Хотя я думаю, что я настроил конвейер любым способом, каким мог, только для очистки выходных данных, поэтому двоичные файлы , а не исходники, при каждом новом запуске субмодули загружаются снова.
Я знаю, что он начинается с пустого репозитория, потому что в журнале шагов проверки я вижу:

git init "C:\agent\_work\3\s"
Initialized empty Git repository in C:/agent/_work/3/s/.git/

Я проверял здесь https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=azure-devops&tabs=schema#job и установите для атрибута рабочего пространства чистое значение clean: outputs.
Здесь отмечено https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=azure-devops&tabs=schema#checkout и установите для атрибута извлечения чистое значение clean: false.
У меня есть также контролировал, чтобы в конфигурации конвейера на веб-сайте не было активного атрибута clean.

Кажется, я вспоминаю где-то около 6 месяцев go или более (когда вместо этого было clean: binaries), что это работал правильно.

Вот очень упрощенная версия того, как выглядит конвейер:

jobs:
  - job: AJob
    displayName: "A job"

    pool: "Self Hosted"

    workspace:
      clean: outputs

    steps:
    - powershell: |
        git config --global core.autocrlf false
        git config --global core.symlinks true

    - checkout: self
      clean: false

    - powershell: |
        git submodule update --init <path to submodule>

РЕДАКТИРОВАТЬ: Добавить еще больше информации, включив отладочную переменную Для запуска я вижу это в журнале при инициализации задания:

##[debug]Delete existing build directory: 'C:\agent\_work\3' <---- why :\
##[debug]Deleting build directory: 'C:\agent\_work\3'
##[debug]Creating build directory: 'C:\agent\_work\3'
##[debug]Delete existing artifacts directory: 'C:\agent\_work\3\a'
##[debug]Creating artifacts directory: 'C:\agent\_work\3\a'
##[debug]Delete existing test results directory: 'C:\agent\_work\3\TestResults'
##[debug]Creating test results directory: 'C:\agent\_work\3\TestResults'
##[debug]Creating binaries directory: 'C:\agent\_work\3\b'
##[debug]Creating source directory: 'C:\agent\_work\3\s'

Кто-нибудь еще испытывает это и знает, как решить?

Ответы [ 2 ]

0 голосов
/ 02 февраля 2020

Обнаружено, что это переменная build.clean: all, установленная через пользовательский интерфейс, из другой части, на которую я не смотрел.
В частности, это было на вкладке Переменные при редактировании конвейера.
Проще, чем я думал.

0 голосов
/ 02 февраля 2020

Submodule init изначально поддерживается и не требует встроенных скриптов. Обратитесь к YAML-схеме .

steps:
- checkout: self | none | repository name # self represents the repo where the initial Pipelines YAML file was found
  clean: boolean  # if true, run `execute git clean -ffdx && git reset --hard HEAD` before fetching
  fetchDepth: number  # the depth of commits to ask Git to fetch; defaults to no limit
  lfs: boolean  # whether to download Git-LFS files; defaults to false
  submodules: true | recursive  # set to 'true' for a single level of submodules or 'recursive' to get submodules of submodules; defaults to not checking out submodules
  path: string  # path to check out source code, relative to the agent's build directory (e.g. \_work\1); defaults to a directory called `s`
  persistCredentials: boolean  # if 'true', leave the OAuth token in the Git config after the initial fetch; defaults to false

. Вы хотите установить submodules на true или recursive и удалить свой встроенный скрипт.

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