Как запланировать развертывание на этапе, не создавая новый выпуск каждый день? - PullRequest
0 голосов
/ 06 марта 2020

У меня есть конвейер развертывания в azure -devops для репозитория, и он работает нормально с расписаниями релизов. Но проблема в том, что он создает новую версию для каждого запланированного времени, даже если артефакт не меняется на следующий день. то есть, если хранилище не обновляется в течение месяца, у меня есть около 30 новых выпусков для того же артефакта.

Причина, по которой нам необходимо такое развертывание по расписанию, заключается в том, что мы каждую ночь выводим все развернутые проекты из нашей целевой группы ресурсов, и кому-то / что-то необходимо каждый раз снова развертывать последний выпуск на целевых этапах. утро.

Я включил расписание этапа в условиях перед развертыванием и установил для него время (08:00), оно назначается на 08:00 на следующий день (и развертывается). Но похоже, что это не вызывает другого развертывания на следующий день. (если нет более новой версии).

Я что-то здесь упускаю?

enter image description here

Ответы [ 2 ]

0 голосов
/ 09 марта 2020

Релиз, инициируемый триггерами запланированного выпуска, создаст новый выпуск. Это по замыслу и не может быть изменено. Проверьте документ Выпуски в Azure Конвейеры для получения дополнительной информации.

Если вы хотите повторно выполнить развертывание на этапе по расписанию без создания нового выпуска. В качестве обходного пути вы можете написать скрипт для вызова выпуска обновления среды rest api . И установите расписание задач на вашем компьютере для запуска этого сценария.

1, Ниже приведен пример повторного развертывания этапа выпуска в сценарии powershell.

Вы можете обратиться к шагам здесь , чтобы получить токен доступа человека (PAT).

вы можете использовать Release get api , чтобы получить Идентификатор среды.

$url ="https://vsrm.dev.azure.com/{organization}/{project}/_apis/Release/releases/{releaseId}/environments/{environmentId}?api-version=5.1-preview.6"

$pat ="{PAT}"

$base64AuthInfo= [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($pat)"))

$body='{"status": "inProgress"}'

Invoke-RestMethod -Uri $url -Headers @{authorization = "Basic $base64AuthInfo"} -ContentType "application/json" -Method patch -Body $body

Существует другой пример для повторного развертывания этапа с помощью rest api в этом потоке. Пожалуйста, проверьте его.

2, После того, как вы выполнили вышеуказанный скрипт, вам нужно настроить расписание задач для запуска над скриптом. Пожалуйста, проверьте подробные шаги здесь, чтобы Настроить запуск скрипта PowerShell в планировщике задач на Windows машине

0 голосов
/ 06 марта 2020

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

Может потребоваться реорганизация вашего потока CI / CD или создание нового определения выпуска.

enter image description here

...