Похоже, что большинство организаций, которые стремятся к непрерывному чему-то, в конечном итоге получают сервер CI и непрерывное развертывание до некоторой среды ручной авторизации, а затем требуют непрерывной доставки в производственную среду. Обычно это приводит к стратегии ветвления, чтобы изолировать кандидата на выпуск, чтобы разрешить оперативное исправление.
Я думаю, что такой вопрос вызывает больше вопросов для обсуждения, прежде чем пытаться дать единый ответ ИМХО.
На ум приходят следующие вещи:
- Есть ли у вас зависимости «исходного кода» или бинарные для каких-либо общих компонентов.
- Какой у вас уровень интеграции / автоматического регрессионного тестирования.
- Ваше развертывание организовано TFS или управляется пользователем в Octopus.
- Есть ли в приложении база данных, требующая рассмотрения.
- Как контролируется нумерация версий вашего приложения.
- Какой у вас цикл выпуска.
Раньше, когда я сталкивался с этим сценарием, я бы обратился к стратегии ветвления продвижения кода, которая предоставляет вам одну ветку для поддержки в производственной среде - это хорошо сработало там, где непрерывное развертывание в производственной среде невозможно. Вы можете найти другие стратегии ветвления, обсуждаемые на странице ALM Rangers на CodePlex
Разработчики / тестировщики могут постоянно продвигать код / функции / исправления ошибок через staging / uat. В момент выпуска ветка Dev объединяется с ветвью Release, что вызывает сборку выпуска и создает пакет nuget. Это должно быть выпущено в Octopus точно таким же образом, только это совершенно новый выпуск, а не продвижение предыдущего выпуска. Это должно гарантировать отсутствие конфликтов в нумерации версий, поэтому стратегия может заключаться в изменении основного номера - это будет зависеть от вашей текущей настройки. Однако при этом высказывается мнение, что развертывание управляется сервером сборки, а не Octopus Deploy. В первую очередь TeamCity / TFS обращается к Ocotpus API, а не к пользователю, выбирающему номер сборки в Octopus (известно, что мы допускаем ошибки).
ocoto.exe create-release --version GENERATED_BY_BUILD_SERVER
Для меня самый большой вопрос, который я задаю клиентам, - это «Какое ограничение означает, что вы не можете непрерывно развертывать в производственной среде». Устраните это ограничение (см. Теорию ограничений), и вы избавитесь от необходимости работать над проблемой, которой вообще не должно быть (не всегда так просто, как я знаю)
Я настоятельно рекомендую вам не клонировать проекты в Octopus для разных сред, так как это противоречит интуиции. В конце концов, вы просто говорите Octopus, что нужно получить эту версию пакета nuget для этого приложения и, пожалуйста, развернуть ее в этой среде. Если вы хотите получить пакет из другого канала NuGet для выпуска, вы всегда можете использовать настраиваемую привязку в поле NuGet в Octopus и управлять этим с помощью переменной с областью действия в зависимости от среды, в которой вы развертываете.
Шаг 1. Настройте два фида
![Настройка двух каналов](https://i.stack.imgur.com/saRne.png)
Шаг 2. Определите некоторые переменные для этих фидов
![Область действия некоторых переменных](https://i.stack.imgur.com/mZjSf.png)
Шаг 3. Используйте фид, используя собственное выражение
![Использовать собственное выражение для канала](https://i.stack.imgur.com/0kk7p.png)
надеюсь, это поможет
person
Evolve Software Ltd
schedule
01.05.2015