Развертывание Octopus: переменная увеличения

#octopus-deploy

#octopus-развертывание

Вопрос:

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

Мне нужна возможность убедиться, что номера портов для моих служб не совпадают при каждом развертывании. т. Е. Две службы не могут прослушивать порт 1122, и мне нужно развернуть две службы. Мое текущее решение — сделать что-то вроде этого:

 int deployCounter = #{DeployCounter};
int port = #{DeployPort}   deployCounter;

Octopus.SetVariable("DeployPort", port.ToString());
  

Заранее спасибо!

Комментарии:

1. Хотя есть потенциальные решения, есть и потенциальные проблемы (как вы будете управлять черным списком портов, поскольку они используются другими приложениями). Можете ли вы объяснить, почему каждое новое развертывание должно быть на новом порту? Находятся ли эти службы Windows в рабочем состоянии, и вам нужно поддерживать несколько версий? Вам нужно иметь дело только с проблемой двух служб на двух разных портах?

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

3. Я бы сказал, что это не проблема конфигурации, а дополнительный шаг в процессе развертывания, который «выбирает порт» на основе проверки доступности порта (например, с помощью PowerShell) из некоторого диапазона или начиная с настроенного значения, что угодно. Затем этот шаг помещает переменную «SelectedPort» в контекст Octopus, и следующие шаги будут использовать это значение.

4. Это именно то, на что я приземлился, за исключением того, что я просто назначаю порт major minor patch . Таким образом, 1.1.22 будет портом 1122. Это не 100%, но пока у меня это работает. Мне просто было интересно, каким будет наилучший способ сделать это.

5. Прочтите это: octopus.com/blog/changing-website-port-on-each-deployment