Автоматизация релиза
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 17.07.20 08:02
Оценка:
У кого-нибудь сделана полная автоматизация релиза — от сборки бинарников до обновления данных на сайте и у регистратора? Если да, то какими средствами, насколько геморройно было сделать и потом поддерживать? Если нет, то какие действия остались ручными?

И как решается вопрос с восстановлением, если в середине процесса что-то пошло не так?
release релиз автоматизация сайт регистратор скрипт
Re: Автоматизация релиза
От: Эйнсток Файр Мухосранск Странный реагент
Дата: 17.07.20 08:09
Оценка: -1
ЕМ> У кого-нибудь сделана полная автоматизация релиза — от сборки бинарников до обновления данных на сайте и у регистратора? Если да, то какими средствами, насколько геморройно было сделать и потом поддерживать?

А в чём проблема-то? Средство штатное — msbuild,
книжка есть, где написано, как прикручивать любой тулчейн (C++)
— 2011, Sayed Ibrahim Hashimi & William Bartholomew, Inside the Microsoft Build Engine. Using MSBuild

ЕМ> Если нет, то какие действия остались ручными?


Про регистраторов не знаю, но должно тоже автоматизироваться по-идее.

ЕМ> И как решается вопрос с восстановлением, если в середине процесса что-то пошло не так?


Полная пересборка, частичная пересборка, в книжке описано как их делать.
Re: Автоматизация релиза
От: CyberDemon Россия  
Дата: 17.07.20 08:26
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>У кого-нибудь сделана полная автоматизация релиза — от сборки бинарников до обновления данных на сайте и у регистратора? Если да, то какими средствами, насколько геморройно было сделать и потом поддерживать? Если нет, то какие действия остались ручными?


ЕМ>И как решается вопрос с восстановлением, если в середине процесса что-то пошло не так?


Сначала автоматизационный bat-ник
Потом пришлось коснуться питона, показалось интересным, теперь у меня автоматизационный py-тник
Один раз все сделать и потом ничего не трогать, ибо работает.
Re[2]: Автоматизация релиза
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 17.07.20 08:38
Оценка:
Здравствуйте, Эйнсток Файр, Вы писали:

ЭФ>А в чём проблема-то? Средство штатное — msbuild,

ЭФ>книжка есть, где написано, как прикручивать любой тулчейн (C++)

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

ЭФ>Про регистраторов не знаю


Так в этом и заключается бОльшая часть задачи. Сборка бинарников — процесс полностью локальный, это можно делать разными способами, и ни один не чреват рассинхронизацией глобальных состояний (сайт, регистратор и все остальное в интернете).
Re: Автоматизация релиза
От: Crimson  
Дата: 17.07.20 08:38
Оценка:
cmd + Скрипты на питоне

сборка, подписи, выкладывание на сайт, создание сообщения о релизе.
Re[2]: Автоматизация релиза
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 17.07.20 08:41
Оценка:
Здравствуйте, CyberDemon, Вы писали:

CD>Сначала автоматизационный bat-ник

CD>Потом пришлось коснуться питона, показалось интересным, теперь у меня автоматизационный py-тник
CD>Один раз все сделать и потом ничего не трогать, ибо работает.

А если в очередной раз не сработает? Например, при обновлении сайта отвалился интернет, и часть файлов/ссылок осталась необновленной. Или у регистратора файл с продуктом обновили, а ключи обновить не получилось.
Re[3]: Автоматизация релиза
От: Crimson  
Дата: 17.07.20 08:46
Оценка:
ЕМ>А если в очередной раз не сработает? Например, при обновлении сайта отвалился интернет, и часть файлов/ссылок осталась необновленной. Или у регистратора файл с продуктом обновили, а ключи обновить не получилось.

после обновления, все проверяется, автоматизировано скачиваются файлы, проверяются хэши, загружаются страницы (в моем случае запрашиваются сервисы) проверяется на соответсвие версий, текста и т.п.
Отредактировано 17.07.2020 8:47 Crimson . Предыдущая версия .
Re[3]: Автоматизация релиза
От: Эйнсток Файр Мухосранск Странный реагент
Дата: 17.07.20 08:48
Оценка:
ЕМ> чтобы при сбое посреди процесса не получилось неразберихи.

В случае сбоя процесс завершится с кодом ошибки и о наличии ошибки станет известно.

ЕМ> рассинхронизацией глобальных состояний (сайт, регистратор и все остальное в интернете)


Если процесс закончится успешно — рассинхронизаций не будет.

А ошибки автоматически исправить нельзя, надо разбираться, в чём их суть.
Re: Автоматизация релиза
От: Черный Властелин Австралия https://www.softperfect.com
Дата: 17.07.20 08:51
Оценка: 12 (1)
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>И как решается вопрос с восстановлением, если в середине процесса что-то пошло не так?

Как я уже упоминал, у мну FinalBuilder. Обработка ошибок в общемто автоматическая, скрипт останавливается если возникла ошибка.

Есть try..except, try..finally блоки — это такой визуальной скрипт, я очень быстро освоил его фичи.


  Выглядит примерно так
Re[4]: Автоматизация релиза
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 17.07.20 08:55
Оценка:
Здравствуйте, Crimson, Вы писали:

C>после обновления, все проверяется, автоматизировано скачиваются файлы, проверяются хэши, загружаются страницы (в моем случае запрашиваются сервисы) проверяется на соответсвие версий, текста и т.п.


А если что-то пойдет не так, оно в автоматическом режиме сумеет все исправить, или уже нужно будет руками?
Re[4]: Автоматизация релиза
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 17.07.20 08:57
Оценка:
Здравствуйте, Эйнсток Файр, Вы писали:

ЭФ>В случае сбоя процесс завершится с кодом ошибки и о наличии ошибки станет известно.


Я правильно понимаю, что конкретно у Вас автоматизация заключается только в сборке через MSBuild, но Вам нравится давать абстрактные и универсальные советы?
Re[2]: Автоматизация релиза
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 17.07.20 09:00
Оценка:
Здравствуйте, Черный Властелин, Вы писали:

ЧВ>Выглядит примерно так


Из этого все, кроме заливки, у меня уже сделано на скриптах. Основной геморрой возникает при ручном обновлении продуктов у регистраторов (PayPro и Avangate). Так что прежде всего интересует, насколько удобно/надежно обновлять через их API.
Отредактировано 17.07.2020 16:35 Евгений Музыченко . Предыдущая версия .
Re[3]: Автоматизация релиза
От: Черный Властелин Австралия https://www.softperfect.com
Дата: 17.07.20 09:54
Оценка: +1
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Из этого все, кроме заливки, у меня уже сделано на скриптах. Основной геморрой возникает при ручном обновлении продуктов у регистраторов (PayPro и Avangate). Так что прежде всего интересует, насколько удобно/надежно обновлять через их API.

Хм, а что там нужно обновлять у регистратора? Я как завел продукты, туда больше не лазил.
Re: Автоматизация релиза
От: drVanо Россия https://vmpsoft.com
Дата: 17.07.20 09:54
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>У кого-нибудь сделана полная автоматизация релиза — от сборки бинарников до обновления данных на сайте и у регистратора? Если да, то какими средствами, насколько геморройно было сделать и потом поддерживать? Если нет, то какие действия остались ручными?


ЕМ>И как решается вопрос с восстановлением, если в середине процесса что-то пошло не так?


Пользуемся Bamboo: сборка, тестирование, выкладывание на FTP.
Re: Автоматизация релиза
От: шароварный желудь Интернет  
Дата: 17.07.20 10:06
Оценка: 12 (1) +1
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>У кого-нибудь сделана полная автоматизация релиза — от сборки бинарников до обновления данных на сайте и у регистратора? Если да, то какими средствами, насколько геморройно было сделать и потом поддерживать? Если нет, то какие действия остались ручными?


похопэ скрипт, написал 15 лет назад, все работает, ну и не трогаю
ребилд, защита, инсталлеры, подписи, новости, сайт, и т.д.

релиз выглядит как:
— написание списка "что нового" по мотивам лога SVN
— указание нового номера версии
— запустить скрипт
— коммит в SVN
— апдейт из SVN на сервере

5 минут на всё, не понимаю смысла всех этих систем сборки

ЕМ>И как решается вопрос с восстановлением, если в середине процесса что-то пошло не так?


если что-то пошло не так (билд не сбыдлился или подписью не подписалось),
то все упадет с ошибкой — ну исправил, перезапустил, какое там восстановление и зачем
Re[5]: Автоматизация релиза
От: Crimson  
Дата: 17.07.20 11:35
Оценка:
ЕМ>А если что-то пойдет не так, оно в автоматическом режиме сумеет все исправить, или уже нужно будет руками?

Можно еще раз запустить если проблемы технические, а если проблемы действительно проблемы то только руками
может быть все что угодно. на то они и проблемы
Re[2]: Автоматизация релиза
От: Crimson  
Дата: 17.07.20 11:39
Оценка:
А почему в самом инносетапе не настроишь подпись?
В твоем варианте анинсталлер остается неподписанным.
сам инно умеет подписывать как анинсталлер так и сам инсталлер.
Re: Автоматизация релиза
От: NWP Россия  
Дата: 17.07.20 11:40
Оценка: 19 (2)
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>И как решается вопрос с восстановлением, если в середине процесса что-то пошло не так?


Я как шароварщик-одиночка, однажды осознал, что сборка и публикация дистрибутива стала занимать у меня неприлично много времени. Поэтому я настроил себе так: при комите в спец.ветку в гит
— компилируется код и прогоняются все тесты
— из бинарников выдирается номер(версия) релиза
— файлы с отладочными данными копируются в спец папку
— номер версии вносится в скрипты сборки дистрибутивов
— собираются дистрибутивы в msi, в zip и в NuGet
— старые дистрибутиве на сайте копируются в папку для старых дистров
— новы дистрибутивы заменяют старые
— выкладывается пакет в нугет репозитарий
— обновляется новая версия на сайте
— в репозитории ставится метка, что данный коммит опубликован.

Ручная работа:
— Присвоить номер (версию) очередному релизу.
— смержить из рабочей ветки в Дистрибутивную
— пока там все собирается и выкладывается написать на форум release notes

У агрегатора ничего менять не надо вроде. Номера версий я там из описаний убрал.
Ключи генерятся через IPN. Что там еще у регистратора?

Когда ломается то приходится смотреть по ситуации. В большинстве случае достаточно перезапустить скрипт. Приходилось и руками править/откатывать что-то. Но это очень редко.
Файлы заливаются по фтп. Обычно только там и ломается. Файлы я вначале заливаю под временным именем и после успешной заливки всех файлов уже произвожу замену. Если сломалось именно на этапе замены, то приходится вручную исправлять и доделывать то, что не сделал скрипт — это гемор. Но бывает слава богу очень редко.
Отредактировано 17.07.2020 11:49 NWP . Предыдущая версия .
Re: Автоматизация релиза
От: bnk СССР http://unmanagedvisio.com/
Дата: 17.07.20 12:20
Оценка: 12 (1)
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>У кого-нибудь сделана полная автоматизация релиза — от сборки бинарников до обновления данных на сайте и у регистратора? Если да, то какими средствами, насколько геморройно было сделать и потом поддерживать? Если нет, то какие действия остались ручными?


Я сейчас все на Azure Pipelines перевел (yaml + powershell скрипты). Все работает, все бесплатно

Автоматически делается
— Обновление версии в исходниках из конфига,
— сборка бинарников из исходников,
— тесты,
— сборка инсталляторов,
— подписывание,
— выкладывание на сайт по FTP и на части github (через GIT, понятно)
— генерируется заготовка release notes на основе коммитов (у меня код на GH, в закрытом репозитории)
— на сайте обновляется страница скачки.

Вручную
— задается мажорный номер версии в yaml (build проставляется текущей датой + номер сборки)
— Пишется release notes на сайте.

А что именно обновлять у регистратора? У меня PP, ключ генерируется на моем сервере.

ЕМ>И как решается вопрос с восстановлением, если в середине процесса что-то пошло не так?


Можно пример, что там восстанавливать.. Просто запустить процесс еще раз да и все?
Отредактировано 17.07.2020 12:21 bnk . Предыдущая версия .
Re[3]: Автоматизация релиза
От: bnk СССР http://unmanagedvisio.com/
Дата: 17.07.20 13:35
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Хм, мне казалось, что я достаточно ясно сформулировал вопрос. То, что можно прикрутить любой тулчейн, ясно и ребенку — вопрос в том, как именно этот тулчейн должен работать, чтобы при сбое посреди процесса не получилось неразберихи.


Я думаю тут важно, что версия например должна задаваться строго вручную, тогда процесс можно перезапускать сколько угодно раз с тем же результатом.
Релиз ноты не должны автоматом аппендиться, ну и т.п. Иденпотентность важна в общем
Отредактировано 17.07.2020 13:37 bnk . Предыдущая версия .
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.