AWS Opsworks: как развернуть конкретный тег git для приложения?

AWS Opsworks позволяет развернуть приложение. Кажется, что развертывание всегда развертывает главную ветку.

Как я могу заставить его развернуть тег git?

Спасибо


person Mayank Jain    schedule 25.08.2015    source источник


Ответы (3)


Вы это проверяли? Вы можете проверить раздел Branch / Revision, где показано, как вы можете выполнить развертывание в соответствии с веткой http://docs.aws.amazon.com/opsworks/latest/userguide/gettingstarted-simple.-app.html

person Arvind    schedule 25.08.2015
comment
Идеально. Однако я бы хотел, чтобы раздел веток / ревизий заполнялся при фактическом развертывании, а не при редактировании приложения. - person Mayank Jain; 25.08.2015
comment
Людям, которые внедряют теги в производственную среду, всегда придется редактировать приложение, а затем развертывать его. Многоступенчатый процесс обычно болезненный. - person Mayank Jain; 25.08.2015
comment
@MayankJain У меня была такая же проблема. После некоторого исследования / тестирования кажется, что вы можете указать тег во время развертывания с помощью пользовательского JSON, документация OpsWorks не очень ясна о том, как именно это сделать, обратитесь к моему ответу stackoverflow.com/a/32965759/172758 - person teaforchris; 07.10.2015

У этого нет элегантного решения. Жаль, что OpsWorks не позволяет указать ветку / тег во время развертывания.

РЕДАКТИРОВАТЬ: немного покопавшись в OpsWorks / Chef / Ruby, вы действительно можете относительно просто развернуть определенный тег. Любой из двух приведенных ниже методов по-прежнему действителен.

Вы можете развернуть тег git одним из следующих способов:

Способ 1. Укажите в настройках приложения

  1. Перед развертыванием отредактируйте свое приложение и измените значение Branch / Revision на tags/1.2.3, где 1.2.3 - это тег, который вы хотите развернуть.
  2. Сохраните изменения, а затем разверните приложение как обычно.
  3. Не забудьте вручную изменять это каждый раз при развертывании!

Метод 2. Передача настраиваемого JSON при развертывании

Включите следующий настраиваемый JSON при развертывании приложения

{"deploy": {"myapp": {"scm": {"revision": "tags/1.2.3"}}}}

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

Дальнейшие мысли

Для приложений в сборке / тестировании вы можете указать develop в качестве ветки / версии в настройках приложения и не беспокоиться об использовании пользовательского JSON каждый раз. Это всегда развернет за вас голову develop.

Для приложений в производстве вы можете указать master в качестве ветки / версии, а затем указать настраиваемый JSON во время развертывания. Таким образом, если вы забудете включить пользовательский JSON, по крайней мере, он развернет последнюю версию от мастера, которая в большинстве случаев должна совпадать с вашим последним тегом.

Стоит отметить, что если вы добавляете новые экземпляры на свой уровень (вручную или автоматически в соответствии с вашими правилами уровня), поведение по умолчанию будет заключаться в развертывании новой версии вашего приложения в соответствии с настройками в App: Branch / Revision .. .. так что на самом деле вам нужно помнить об обоих методах в зависимости от ваших конкретных требований.

person teaforchris    schedule 06.10.2015

На самом деле я сейчас занимаюсь той же проблемой. Мы переносим наши тестовые / промежуточные среды в OpsWorks, чтобы использовать их инстансы, зависящие от времени, для экономии средств.

Я решил обойти это с помощью небольшого ruby-скрипта командной строки для опроса AWS, чтобы показать мне список стека, после чего я могу выбрать слой, приложение и экземпляры, в которых хочу развернуть. Затем сценарий запрашивает имя ветки репозитория для развертывания и отправляет развертывание через интерфейс командной строки AWS в OpsWorks для обработки.

Все это делается через интерфейс командной строки AWS. Я позабочусь о том, чтобы сделать это доступным в Интернете, и опубликую ссылку, если это будет понятно начальнику.

person Jason Brodie    schedule 18.11.2016