Octopus что это за программа
Перейти к содержимому

Octopus что это за программа

  • автор:

Учебная инструкция по дистанционной работе с программой «Octopus»

Инструкция по пользованию программой ProjectMate 10

1. Учебная инструкция по дистанционной работе с программой «Octopus»

Начальное письмо
Установка
Ввод данных
Статистика

2. Начальное письмо

В начальном письме, которое придет на Вашу электронную почту, ту
которую вы указали при регистрации на сайте rabotaydoma.ru, будет
все самое необходимое для начала работы.
1. Логин и пароль созданные лично для вас.
2. Ссылки для скачивания и установки программ (Octopus.Palpus;
Octopus.Palpus-OPN-1)
3. Ссылка на сайт rabotaydoma.ru
4. Ссылки на сайты статистики: для проекта
КР 223-Р8 https://opn- 1.elar.ru/Stat/ и сайт по всем остальным
проектам https://octopus.elar.ru/Stat/
Во все выше указанные сайты и программы нужно
заходить с логином и паролем указанным
в самом начале письма.

3. Установка программы

Перейдя по ссылке (из начального письма) вы скачиваете к себе на
компьютер установочный файл программы.
Если у вас возникли затруднения, то можно обратиться к «памятке
для надомного оператора» на сайте rabotaydoma.ru
Для начала установки программы требуется 3 основных условия:
1. Диск С
2. Microsoft Office Access
3. Отключить на время установки ВСЕ антивирусы
Если программа пишет, что нужно доустановить некоторые
компоненты, то их нужно установить (например, MDAK с
версией Jet4.0). Как правило, на современных операционных
системах этого не требуется. Найти список этих программ
можно на сайте rabotaydoma.ru в инструкции по установке
программы OCTOPUS. Найти сами программы Вы можете в
интернете.

4. Путь к программе

Устанавливать программу вы
можете на любой
компьютер. Но заходить в
нее под своим логином и
паролем, в данный момент
времени, можно только на
одном компьютере.
После установки программу
можно найти через меню
«Пуск»-«Все программы»«ЭЛАР» -«Octopus.Palpus»
(либо Octopus.Palpus-OPN1)

5. Вход в программу

1. Введите в поля ваши
логин и пароль.
2. Поле «Домен»
обязательно должно
быть пустым.
3. Все галочки, если
они проставлены,
необходимо убрать.
4. Нажать ОК

6. Обратная связь В программе Octopus реализована новая функция получения сообщений

Вместе с Octopus
загружается значок
сообщений. При
нажатии на него
открывается окно
«Octopus . Сообщения».
В нем оператор может
увидеть те сообщения,
Удалить одно или все
которые ему пришли
сообщения можно с
помощью кнопки
«Удалить сообщение»
Значок сообщений при
получении сообщения выводит
напоминание, что у оператора
есть непрочитанные сообщения
Обновить список своих
сообщений можно нажав
на значок на панели
«Новые сообщения»
Что бы сообщение открылось в новом окне,
надо выделить нужное сообщение и нажать
на значок на панели «Просмотреть
сообщение»

7. Обратная связь

После нажатия на
значок «Посмотреть
сообщение»
открывается окно
сообщения
Открыть окно сообщений
Octopus можно также, нажав
на соответствующий значок в
окне «Начало работы»

8. Инструкции

При открытии формы прежде чем начать
работу (если Вы открываете форму
впервые, либо инструкция по форме
была обновлена) у вас будет открываться
инструкция и появится значок, как
показано на рисунке (рис. 1),
сообщающий, что необходимо
ознакомится с инструкцией прежде, чем
начать работу.
Перед началом
работы
ознакомьтесь с
инструкцией
Рис. 2
Рис. 1
Инструкция к форме не будет
открываться, если в инструкции
не было обновления со времени
предыдущего сеанса работы
оператора в этой форме.
Также инструкцию можно загрузить
самостоятельно, для этого нужно
нажать на значок на форме
программы в левом нижнем углу,
как показано на рисунке (рис. 2)

9. Инструкции

На сайте rabotaydoma.ru в разделе
«Инструкции» так можно открыть нужную
инструкцию. Обращаем внимание, что
инструкции обновляются и дополняются, все
дополнения к ним будут идти отдельными
файлами в рубрике соответствующего проекта.
Об обновлении инструкции можно прочитать в
новостях на этом же сайте.
После изучения инструкции, значок
сменится на синий треугольник в
квадрате. По которому нужно
кликнуть дважды и произойдет
загрузка пачки в выбранной форме.

10. Визуальное представление формы программы

Окошко с формами ввода должно быть обязательно заполненным, если
оно пустое это значит, что проект не доступен для работы
Ввод первого
или второго
оператора
Количество
пачек в форме
Если форме
нет пачек, то
работать в ней
невозможно
Найти нужный проект
для работы можно в
выпадающем списке
используя для этого
курсор вашей мыши
Что бы
загрузить пачку
для работы
выбираем
форму и
нажимаем на
ОК

11. Работа с карточкой

Загруженная
карточка.
Нормативная запись
разделенная на поля
для ввода
Поле «Комментарий» заполняется в том
случаи, если карточка имеет нестандартный,
для этого проекта вид или возникли трудности
при вводе информации
Обращаем внимание на
значок в виде
перевернутой зеленой
буквы «Т». Он обозначает
процесс загрузки данных
и стабильность
соединения с сервером.

12. Интерфейс программы

Название
программы
Название
проекта
Форма
Учетная запись
вашего
компьютера
№ пачки
Записывать
обязательно!
Добавить/удалить
/открыть закладку

карточки
Кол-во
карточек
в пачке
Загрузка инструкции
к проекту
Переход на
следующую
либо на
подледную
карточку
Поменять
местами лицо
и оборот
документа
Увеличение/
уменьшение
масштабов
документа
Проверить
соблюдение
правил
заполнения
полей
Увеличить/умень
шить шрифт
текста поля ввода
Изменение
положения/поворот
документа

13. Контакты

У каждого оператора есть
руководитель группы. Для
каждого проекта существует
свой координатор. Что бы
знать, к кому обращаться,
если у вас возникли
технические трудности или
вопросы по проекту в
программе есть функция для
вызова информации по
контактам.
На панели есть значок в виде
«человечка в наушниках».
При нажатии на который
появляется табличка, где
указаны контакты РГ и
координатора проекта (почта
и телефон).
«Человечек в
наушника»
Табличка с
контактами РГ и
Координатора
проекта

14. Дополнительные значки

В программе есть периодически всплывающий
значок в виде чашки с кофе в правом верхнем углу.
Этот значок появляется, если оператор некоторое
время не вводил никакой информации в поля.
Если вы видите на экране чашку, то вы не сможете
продолжить работу с карточкой пока не завершите
короткий перерыв. Для этого необходимо кликнуть
один раз левой клавишей мыши по чашке. Если вы
кликните несколько раз по чашке (т.е. сделаете это
некорректно), то можете сбить разметку, если
работаете на вводе списков.
В программе Octopus, в окне пачки справа
вверху автоматически отражается процент
ваших ошибок, в виде колобка с цветной
шкалой. При наведении мышки на это окно
появляется подсказка. При двойном щелчке по
этой картинке –открывается сайт статистики.
Количество ошибок подсчитывается так же,
как и на сайте статистики.

15. Дополнительный документ

Дополнительный
документ располагается с
правой стороны от
основного документа и
необходим для уточнения
какой либо информации
по инструкции к проекту.
Дополнительным
документом может быть
как оборотная сторона
листа, как любой другой
лист на котором есть
необходимая для
уточнения информация.

16. Закладки

Если дополнительного документа для уточнения информации недостаточно, то можно воспользоваться
карточкой Закладкой, которая располагается рядом с «Текущей записью». В этой закладке в правом
нижнем углу есть синие значки пролистывания страниц, все как показано на рисунке.

17. Границы выделения

Границы окон меняются вертикально и горизонтально. Увеличить фрагмент
документа, выделите его, удерживая левую кнопку мыши, он автоматически
увеличится. Чтобы убрать увеличение, щелкните по нему мышкой.

18. Создание закладки

Закладки вы можете создавать
для себя, чтобы вернуться к
карточке и внести изменения
во время работы в пачке.
Закладки вы можете делать
для верификатора. Например,
если на карточке информация в
нестандартном виде (двойные
фамилии и т. д.).
В закладке необходимо
написать номер строки в
карточке, в которой возникла
проблема, и суть проблемы.
Закладки верификатору не
следует делать в случае: 1)если
вам не понятен почерк
(верификатор в нем
разбирается не лучше вас)
2)если вопрос нужно решить
немедленно (например, если
карточка не отображается и
т.п.). В этой ситуации
необходимо связаться с
координатором.

19. Перейти к закладке

Чтобы перейти к закладке, нужно
нажать на соответствующий значок
на панели. Выбрать нужную
закладку и нажать кнопку «Перейти
к»
После работы с пачкой все закладки,
которые не предназначаются
верификатору, должны быть
удалены.

20. Кнопка «Bad Image»

необходима для пометки образов с браком: расплывчатых, темных, не до
конца отсканированных, и т. п. Если встречается такой образ, его надо пометить, нажав кнопку , и
в открывшемся окне «Подтверждение» написать причину, по которой помечен образ:
«Образ черный, невозможно разобрать данные»; «Образ расплывчатый»; и т.д.

21. Горячие клавиши

Увеличить карточку Ctrl+ «+» с цифровой клавиатуры
Уменьшить карточкуCtrl+ «-» с цифровой клавиатуры
Снять увеличение -двойной щелчок мышью
Листать постранично Ctrl+ Page Up(к предыдущей карточке)
Ctrl+ Page Down(к следующей карточке)
К началу карточки Ctrl+ Home
К концу карточки Ctrl+ End
Двигать изображение (При большом увеличении карточки) Ctrl+ стрелки в лево -в
право, вверх-вниз
Переходить по полям Enter от первого к последнему
Переходить по полям Tab от последнего поля к первому
Удалить Delete
Восстановить удаленную информацию(при условии того, что курсор после удаления не
перемещался в другие поля) Ctrl+ Z
Добавление/удаление строк (используется только в проекта где необходимо сделать
разметку) Ctrl + «+» и соответственно Ctrl + «-»
К некоторым проектам подключена клавиша «*» — повторение (копирование) данных из
определенной строки с предыдущей карточки

22. Ввод данных

Ввод данных производится
исключительно с
клавиатуры с использование
горячих клавиш.
Ввод данных осуществляется в
соответствующие поля
нормативной записи сторого
по инструкции. Если
инструкция требует
использование словаря, то
данные выбираются из
словаря с помощью клавиши
Enter

23. Словари. Простой словарь

К полям «Имя» и «Отчество» привязаны простые словари. При введении в поле первых букв
имени либо отчества словарь выдает всплывающий список с возможными вариантами
написания. Выбирая с помощью стрелочек с клавиатуры (вверх/вниз) нужный нам для ввода
вариант нажимаем клавишу Enter и значение вставляется в поле полностью. Чтобы выйти из
словаря нажмите Esc.

24. Словари. Простой словарь

К полю «Звание» тоже привязан
словарь. Для получения значения
нужно ввести первые буквы звания,
если оно сложное (например гвардии
младший сержант), то вводим по
инструкции.
Данный словарь состоит из двух
колонок. В первой мы видим то
значение, которое может быть на
образе, а во второй то значение,
которое будет введено в поле.
Выбор и ввод осуществляется по
правилам простого словаря.

25. Словари. Сложный словарь

В некоторых проектах действует сложный
словарь, который позволяет заполнить
сразу
несколько
полей
(например
Военкомат и адрес военкомата). Правила
вызова и использования сложного словаря
изложены в инструкции к проекту.

26. Разметка карточки

Если карточка представлена в виде списка нескольких объектов, то вместе с вводом данных необходимо сделать
разметку (т.е. разметить информацию на карточке разделив ее на области горизонтальными линиями с помощью
мышки). Технологии и способы разметки описаны в инструкции. Размеченая область подсвечивается зеленым
цветом. Необходимо соблюдать правило – прикрепить размеченную область к соответствующей нормативной
стороке и ввести в нее информацию именно из подсвеченной области.

27. Условия работы

Работать вы можете круглосуточно.
Время работы в одной пачке –6 часов единовременно (с момента ее открытия
с учетом всех коротких перерывов). Если вы превышаете это время, то
пачка отправляется другому оператору!
Расторжение договора в случае:
1) Если вы заходите в программу реже 1 раза в 10 дней.
2) Если допускаете более 5% ошибок в течение календарного месяца.
3) Если оператор более 3-х раз в месяц уличен в том, что берет одновременно
для обработки более 1 пачки.
Работать необходимо в соответствии с нормативом. Рассчитывается норматив
соответствующим образом- каждый расчетный период
определяется выработкой в 100%, т.е. данные по двум
периодам складываем и делим на 2, получаем среднее
арифметическое, которое и есть выработка за весь
месяц.

28. Как закончить работу

Для того чтобы завершить работу с пачкой, в которой введены все персоналии на
всех страницах, и приступить к работе со следующей пачкой, необходимо
нажать на клавиши CTRL + Page Down (или значок на панели управления
«Перейти к следующей записи»), затем подтвердить сообщение «Закончить
работу с текущей пачкой и перейти к следующей?»
Если вы не закончили пачку до конца и хотите выйти из программы, вы
заполняете текущую карточку, перелистываете на следующую и закрываете
программу. Все введенные Вами данные сохраняются и отсылаются на сервер.
Программа может не давать вам закрыть пачку, если на текущей карточке введены
не все данные. В такой ситуации необходимо заполнить текущую карточку
полностью, перейти на следующую, в пустые поля ввести информацию и
закрыть пачку НЕ переворачивая на следующую карточку. Эти данные не
сохранятся. Если Вам приходит карточка, на которой в поля для ввода уже
введена информация, ее необходимо проверить, исправить по необходимости,
и только после этого переходить к вводу следующей карточки.

29. Если работа завершена некорректно

Наработанные сохраненные данные можно найти на диске С:/octopus/palpus/
В папке palpus будут находит неотправленные данные (так называемая
«упавшая пачка»). Правила по дальнейшей работе с этими данными
находятся на сайте rabotaydoma.ru в разделе Документация — Действия
оператора при упавшей пачке (обновлено 21.09.2011).

Введение в Octopus Deploy

Continuous Integration и Continuous Delivery де-факто являются неотъемлемой частью современной разработки проектов. Для автоматизации CI существует множество программ от различных вендоров, а вот с автоматизированием развертывания приложений дела обстоят скромнее. Одним из помощников развертывания является Octopus Deploy.

Введение

Давайте рассмотрим распространенный подход в процессе разработки. Разработчики пишут код, прогоняют unit-тесты по затронутому коду, делают commit. И делают это как можно чаще, согласно идеологии CI. Далее CI приложение (TeamCity, TFS, Jenkins, Bamboo, или другое любимое в вашей команде) собирает приложение и прогоняет автоматические тесты.
Наступает момент, когда пора отдать приложение на ручное тестирование и член команды (DevOps) развертывает приложение для тестеров.

А вот и следующий момент, пора отдавать на тестирование заказчику (User Acceptance Test или Staging).
Ну и после зеленого сигнала от заказчика наступает главный по значимости момент, публикация приложение в production. Причем часто заказчик ожидает, что если что-то пойдет не так в production’e, то ваша команда сможет откатить все изменения щелчком пальца, максимум в течение получаса.

На помощь в развертывании .NET приложений приходит Octopus Deploy. Octopus забирает пакет с приложением и развертывает его на сервере. Обычно первым идет Dev Environment сервер. Далее можно легко продвинуть приложение на Test, UAT/Staging, а затем и Production environment сервера. Но обо всем по порядку.

Устройство Octopus

Осьминожка использует Octopus Server, который забирает NuGet пакеты с приложениями. Забирать их может автоматически из NuGet репозитория, подписавшись на NuGet Feed CI сервера по http/https, или из обычной папки на сервере. Как правило NuGet пакет должен содержать полное приложение, например ваш полный ASP.NET Web сайт, или все файлы необходимые для установки Windows Service’a.

Дотягивается Octopus до серверов публикации с помощью щупалец. Tentacle Agent представляет собой легковесную программу, которая запускается в виде Windows Service’a, забирает Nuget пакет с Octopus Server’a и разворачивает приложение. Есть режим общения pull и push, т.е. Tentacle периодически опрашивает сервер на новые пакеты, или Tentacle ждет сигнала от сервера и сервер push’ит. Octopus Server также запускается в виде Windows сервиса, и общается со своими щупальцами через защищенной HTTPS (TLS и X.509 сертификат). Для большей безопасности при установке Octopus необходимо настроить каким Tentacle агентам доверяет сервер и наоборот.

В текущей версии 2.0 для хранения всех данных используется встроенная база данных RavenDB, но по ряду причин в новой версии 3.0 перейдут на MS SQL Server. Кстати новая версия выйдет в ближайшие месяцы, хотя согласно политике компании у вас будет возможность обновиться до новой версии в ближайший год после покупки, после года вас не бросает на полный произвол и дают скачать критические обновления бесплатно, но уже, конечно, без новых фитч.

Среда, роли и приложения

Остановимся немного подробнее на структуре, которая может получится.

У нас три environment’a (Test, Staging и Production). Шесть серверов, на которые установлены Tentacles и куда будет устанавливаться приложение. И две роли: octo-web и octo-app. Создание ролей очень удобно, например можно указать: установить сайт только на машины, у которых есть роль octo-web, а приложение только на машины с ролью octo-app. Заметьте, что для тестирования отведен один сервер, на котором будет находится и сайт, и приложение. А на production целых три сервера, один под приложение, и два под сайт. Это очень реалистичный сценарий с развертыванием двух копий сайта (без базы данных) и последующим запуском балансировщика.

Приложение OctoFX, с ролью octo-app, будет выглядеть следующим образом:

Жизненный цикл приложения будет заключаться в прохождении Test среды, далее Staging, а затем запуска на Production.
Настройки очень широкие и можно выбирать доступные среды для разных приложений.

Шаги и переменные

Шаги
  • Скачать и разместить содержимое NuGet пакета в папке, FTP или MS Azure сервере
  • Запустить Power Shell скрипт, передать в скрипт переменные
  • Обновить config файлы с помощью специальных переменных
  • Трансформировать config файлы. Как правило при сборке будет запускаться config.Release, но вы можете добавить еще одну XML трансформацию поверх, например config.Staging
  • Отправлять сообщения по электронной почте
  • Останавливать процесс развертывания и запросить действия пользователя.
  • Запускать специальный шаг для удобного разворачивания Windows сервиса
  • Запускать специальный шаг для разворачивания сайта, включая обновление binding’ов и портов

Переменные

Переменные вынесены в отдельный блок и позволяют модифицировать значение в зависимости от среды, роли или имени сервера.
Рассмотрим пример с Хабром, если нам необходимы разные значения для адреса нашего сайта и мы хотим поменять переменную в web config’e, то достаточно ее добавить в блок

Тогда config файл

может быть автоматически трансформирован в Dev среде в

Удобнее всего хранить в переменных пароли, так как Octopus их шифрует и не позволяет скопировать или увидеть в дальнейшем в панели Variables. Существует возможность создать пользователей и ограничить доступ в средам. Таким образом с помощью блока переменных и ограничения доступа пользователям можно сделать так, что только администратор или Release менеджер может развернуть приложение в Production и соответсвенно увидеть пароли в конечном варианте config файла.

Имеются и специальные системные переменные. Их можно использовать также, как и пользовательские переменные, т.е. в PowerShell скриптах или Config файлах. Например, один из наших клиентов использует Umbraco сайт. Конечно в NuGet пакет имеет смысл складывать только исполняемую часть сайта, а не Гигабайты медиа контента. При обновлении сайта Octopus создает новую папку, т.е. на самом деле новый сайт, например, кладет его в папку \Octopus\Applications\UmracoSite\1.20.0\. И мы копируем с помощью PowerShell скрипта и переменной Octopus.Deployment.PreviousSuccessful.Id весь media контент из старой версии сайта в новую.

Заключение

До сих пор я встречаю ручной бэкап базы данных перед развертыванием приложения, ручное изменение config файлов, множество вариантов самописных скриптов, которые хранятся локально и отличаются у программистов и системных администраторов, и даже ручное копирование папки приложения в production и test environment.
Попробуйте минимизировать человеческий фактор и рутину в этом процессе. И удачного вам deployment’a!

Полезные ссылки:

  • octopus deploy
  • continuous delivery

Octopus Deploy. Улучшаем мир в кровавом энтерпрайзе

Сегодня я хочу рассказать о системе деплоя Octopus Deploy. На данный момент на Хабре есть всего одна вводная статья на эту тему, поэтому в своем материале я хочу расширить описание системы, подробнее рассказать о таких важных понятиях как «жизненные циклы» (lifecycles) и «каналы» (channels), а также о том, как мы внедрили и используем Octopus в своей работе.

Кто мы

Мы — отдел собственной разработки Tinkoff.ru. Команда, в которой я работаю, занимается разработкой облачной платформы виртуальных рабочих мест WebOffice. В настоящий момент на бэке у нас Asp.Net MVC-приложение и REST API на базе ServiceStack, на фронте — SPA на Angular. Помимо этого имеются SOAP-сервисы для интеграции с другими банковскими системами, джобы для выполнения периодических задач и некоторое количество микросервисов на .Net Core 2.0.

Проблемы старого процесса деплоя

Когда я пришел в Тинькофф, деплой системы проводился с помощью TeamCity: использовался MSDeploy и n-ное количество powershell-скриптов различной сложности. Билд конфигурации, отвечающий за сборку проекта, и деплой были сгруппированы по имевшимся на тот момент контурам: QA и Prod.

Старый процесс сборки и деплоя на каждый контур можно условно представить следующим образом: собираем проект для заданного окружения (применяем соответствующие трансформации xml конфигов) → собираем полученные артефакты в несколько zip-файлов (по одному на каждое отдельно развертываемое приложение + скрипты миграции БД + скрипты деплоя) → деплоим на заданные для данного окружения сервера.

Так как в работе мы используем по несколько серверов для отказоустойчивости и распределения нагрузки, то процесс деплоя занимал приличное количество времени, потому что шёл последовательно по приложениям и серверам (писать на PowerShell параллельные асинхронные задачи довольно болезненно). С добавлением дополнительных контуров QA2 и Preprod количество билд-конфигураций росло, управление настройками деплоев через разрозненные параметры усложнялось.

Цель

Мы хотели унифицировать процесс деплоя на различные контуры, по возможности ускорить его, а также стандартизировать процесс доставки релизов в зависимости от их типа в принятой у нас системе версионирования: мажорные релизы должны проходить контуры QA → Pre → Prod, минорные — QA2 → Pre → Prod, хотфиксы — Pre → Prod.

Во всех этих хотелках нам помог Octopus Deploy. Вот основные плюсы, которые мы получили, внедрив его в наш процесс доставки релизов:

  • единый процесс деплоя всего приложения для всех контуров;
  • единое место хранения переменных для инфраструктурных настроек приложения;
  • параллельный деплой на несколько серверов;
  • сведение большого разнообразия билд-конфигураций в TeamCity до одной;
  • нормальный (правильный) жизненный цикл сборки (когда одни и те же бинарники деплоятся сперва на QA, потом на Preprod и потом на Prod; в варианте с TeamCity для каждого окружения была настроена отдельная билд-конфигурация);
  • упрощение кастомных PowerShell-скриптов за счёт выкидывания remoting-обвязок;
  • наглядность состояния окружений, процесса деплоя, возможность гибкой настройки конретных деплоев;
  • гибкое разграничение прав доступа на управление релизами.

Установка и настройка

Установка самой системы проста и прямолинейна: из внешних зависимостей необходим только MS SQL Server для хранения базы данных. Плюс к этому на каждый сервер, на который вы собираетесь деплоить, необходимо установить агент Octopus Tentacle.

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

configure_tentacle.ps1

$tentacle = 'C:\Program Files\Octopus Deploy\Tentacle\Tentacle.exe' & $tentacle create-instance --instance "Tentacle" --config "C:\Octopus\Tentacle.config" --console & $tentacle import-certificate --instance "Tentacle" -f "C:\ansible_temp\tentacle_cert.txt" --console & $tentacle configure --instance "Tentacle" --reset-trust --console & $tentacle configure --instance "Tentacle" --home "C:\Octopus" --app "C:\Octopus\Applications" --port "10933" --console & $tentacle configure --instance "Tentacle" --trust ">" --console & netsh advfirewall firewall add rule "name=Octopus Deploy Tentacle" dir=in action=allow protocol=TCP localport=10933 & $tentacle register-with --instance "Tentacle" --server ">" --apiKey=">" --role ">" --environment ">" --comms-style TentaclePassive --console & $tentacle service --instance "Tentacle" --install --start --console 

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

Жизненные циклы

Одной из ключевых сущностей в Octopus Deploy являются жизненные циклы (lifecycles). Они используются как для автоматического промотирования релиза между окружениями, так и для ограничения окружений, на которые может быть развернуто приложение до прохождения соответствующего тестирования.

Например, для мажорных версий жизненный цикл системы у нас определен как QA → Pre → Prod. Это означает, что мы не сможем задеплоить версию в продакшен до того, как она побывает на тестовом и препрод контурах. С другой стороны, жизненный цикл патч-версий короче: Pre → Prod, т.к. они тестируются сразу на препроде.

Каналы

С помощью каналов (channels) в Octopus можно независимо развертывать несколько версий одного проекта. Помимо правил, ограничивающих версии пакетов, для каждого канала можно указать используемый для промотирования релизов жизненный цикл, настроить процесс развертывания (т.к. у каждого шага имеется настройка, для каких каналов он должен быть выполнен), а также определить значения переменных. Каждый создаваемый в Octopus Deploy релиз обязательно относится к какому-либо каналу.

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

Основная прелесть заключается в возможности автоматического создания релизов в нужных каналах. Для этого в свойствах канала мы указываем диапазон версий пакетов (а также можем использовать тэги SemVer), которые нужно использовать для создания релиза в этом канале. Octopus автоматически выберет пакеты, имеющие самую последнюю версию.

Предположим, что в данный момент ведется тестирование версий V10.1 и V11.0. После сборки проекта из ветки V10.1 TeamCity зальет собранные пакеты (версия пакетов будет 10.1.0.xxxx) в Octopus и вызовет создание релиза в канале «минорных» релизов. При этом в релиз попадут именно пакеты версии 10.1.0.xxxx, несмотря на то, что в Octopus уже есть более новые пакеты с версией 11.0.0.yyyy, т.к. в Version Range у канала «минорных» релизов указан диапазон [10.1.0.00000, 10.1.0.99999).

Таким образом, различные версии приложения отлично сосуществуют друг с другом в каналах и следуют своему собственному процессу развертывания на различные окружения.
Вот пример того, как это выглядит на панели управления проектом:

Важно! Если вы добавляете новые шаги в процесс деплоя, добавьте новые пакеты в правила каналов. Если для какого-либо пакета в канале не задано ограничение по версии, Octopus будет использовать самую последнюю версию пакета. Может случиться так, что вы задеплоите приложение версии 10.1, но один пакет будет, например, версии 11.0, если он уже есть в Octopus.

Создание NuGet пакетов

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

Octopack на основе типа проекта (консольное приложение, веб-приложение, windows service) сам выбирает файлы, которые потребуются при деплое. Если же необходима более тонкая настройка, какие файлы должны попасть в пакет, можно создать кастомный файл .nuspec.

Интеграция с TeamCity

Но самое интересное начинается при автоматизации процессов создания (и деплоя) релизов после сборки проекта на TeamCity. Вот как этот процесс выглядит у нас:

  • разработчик после ревью мерджит свою задачу в версионную ветку;
  • TeamCity собирает проект, определяет канал, в который должна попасть сборка и вызывает создание релиза в требуемом канале в Octopus Deploy;
  • тестировщик по готовности нажимает кнопку «Deploy» в панели управления Octopus и разворачивает сборку в соответствующем этому каналу тестовом окружении.

Guided Failures

Если в процессе деплоя на одном из шагов происходит ошибка, весь деплой останавливается и помечается упавшим. Такое поведение не всегда актуально: иногда мы готовы смириться с проблемами на некоторых шагах деплоя. Для этих случаев существует режим под названием Guided Failures.

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

Скрипты деплоя в пакетах

Иногда перед деплоем приложений и сервисов мы хотим выполнить дополнительные действия. Например, убедиться, что приложение сможет получить доступ к порту при запуске от имени сервисной учетной записи. Это можно сделать, используя дополнительные установочные скрипты, которые могут написаны как в веб-интерфейсе Octopus, так и быть частью пакета разворачиваемого приложения.

В скриптах можно использовать переменные октопуса, которые будут проброшены в соответствии с правилами именования переменных в PowerShell (из названий переменных будут удалены точки и другие специальные символы, таким образом переменная октопуса MyApp.ConnectionString будет доступна в скрипте как $MyAppConnectionString).

Пример пре-деплой скрипта, который удаляет и добавляет резервирование порта для одного из наших сервисов

Retention policy

Чтобы однажды не оказаться в ситуации с полностью заполненным жестким диском, в Octopus предусмотрен механизм для удаления пакетов, которые использовались в старых релизах и больше не нужны.

Политика хранения пакетов описывается на уровне жизненного цикла, но ее можно переопредить для отдельных его фаз. Так, например, для всех фаз деплоя приложения на тестовые окружения мы храним только одну последнюю версию пакета.

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

Дополнительные ништяки

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

Генерация release notes

# Inspired by http://blogs.lessthandot.com/index.php/uncategorized/access-git-commits-during-a-teamcity-build-using-powershell/ function Get-CommitsFromGitLog([string] $StartCommit, [string] $EndCommit)< $taskRegex = "(WOF-\d+)" $Cmd = "& ""%vcsroot.agentGitPath%"" log --pretty=format:""%an: %s
"" --encoding=cp866 --no-merges $StartCommit. $EndCommit" $Result = (Invoke-Expression $Cmd) -replace $taskRegex,'$1' return $Result > function Get-TeamCityLastSuccessfulRun( [string] $TeamCityUrl, [string] $TeamCityBuildTypeId, [string] $TeamCityUsername, [string] $TeamCityPassword, [string] $TeamCityBranchName) < $Credentials = "$($TeamCityUsername):$($TeamCityPassword)" $AuthString = [System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes("$Credentials")) $Url = "$($TeamCityUrl)/app/rest/buildTypes/id:$($TeamCityBuildTypeId)/builds/branch:name:$($TeamCityBranchName),status:SUCCESS" $Content = Invoke-WebRequest "$Url" -Headers @-UseBasicParsing return $Content > $Run = Get-TeamCityLastSuccessfulRun -TeamCityUrl "%teamcity.serverUrl%" ` -TeamCityBuildTypeId "%system.teamcity.buildType.id%" ` -TeamCityUsername "%system.teamcity.auth.userId%" ` -TeamCityPassword "%system.teamcity.auth.password%" ` -TeamCityBranchName "%teamcity.build.branch%" $LatestCommitFromRun = (Select-Xml -Content "$Run" -Xpath "/build/revisions/revision/@version").Node.Value $CommitsSinceLastSuccess = Get-CommitsFromGitLog -StartCommit "$LatestCommitFromRun" ` -EndCommit "%build.vcs.number%" $CommitsSinceLastSuccess | Out-File releasenotes.txt -Force -Encoding utf8

Обновление настроек каналов (API)

function UpdateChannel ([string]$OctopusServer, [string]$ApiKey, [string]$ChannelId, [string]$MinVersion, [string]$MaxVersion) < $url = "$OctopusServer/api//" $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" $headers.Add("X-Octopus-ApiKey", $ApiKey) $channel = Invoke-RestMethod -Method Get -Uri ($url -f "channels", $ChannelId) -Headers $headers -ContentType 'application/json;charset=utf-8' $channel.Rules[0].VersionRange = "[,)" -f $MinVersion, $MaxVersion $utf8encodedString = [System.Text.Encoding]::UTF8.GetBytes(($channel | ConvertTo-Json -Depth 3)) Invoke-RestMethod -Method Put -Uri ($url -f "channels", $ChannelId) -Headers $headers -Body $utf8encodedString > $minVersion = ("%CalculatedBuildBranch%").Trim("V") + ".00000" $maxVersion = ("%CalculatedBuildBranch%").Trim("V") + ".99999" if("%TargetChannel%" -eq "%PatchChannelName%") < UpdateChannel %OctopusServer% %OctopusApiKey% %PatchChannelId% $minVersion $maxVersion >if("%TargetChannel%" -eq "%MinorChannelName%") < UpdateChannel %OctopusServer% %OctopusApiKey% %MinorChannelId% $minVersion $maxVersion >if("%TargetChannel%" -eq "%MajorChannelName%")

Заключение

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

Проект активно развивается, минорные релизы выходят чуть ли не каждую неделю. В последних версиях Octopus Deploy научился деплоить .net core и mono-приложения на linux-машины, разворачивать docker-контейнеры, а в последнем релизе 3.17 добавили первоклассную поддержку деплоя Java приложений на сервера приложений Tomcat, RedHat JBOSS и Wildfly.

В следующей статье я расскажу про multi-tenant deployments, которые мы используем для организации процесса развертывания фича бранчей на отдельные виртуалки, автоматически поднимаемые в локальном облаке OpenStack, для проведения изолированного тестирования отдельных задач.

  • Блог компании TINKOFF
  • DevOps

Octopus — геймпад, клавиатуры

Octopus - геймпад, клавиатуры

Octopus — это многофункциональное приложение, которое способствует использованию геймпада или клавиатуры на мобильных устройствах.

С помощью Octopus можно подключить внешний геймпад или клавиатуру к устройству и настроить их для удобного управления. Это особенно полезно для игр, требующих точности и быстроты реакции (шутеры, гонки).

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

К основным преимуществам приложения относятся: удобный интерфейс, минималистичный дизайн и многофункциональность. Если пользователь давно желает упростить игровой процесс посредством настройки управления, то ему рекомендуется скачать эту программу. В целом, Octopus — геймпад, клавиатура — является крутым приложением, позволяющим пользователям настраивать геймпад или клавиатуру для удобного управления.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *