stiry improvements
This commit is contained in:
@ -1,10 +1,45 @@
|
||||
Автоматизация сборки и тестирование
|
||||
===
|
||||
|
||||
- Почему это важно: мелочи сжирают кучу времени. Не позволяйте им это делать!
|
||||
- настройка под Linux: все внешние либы собраны и включены в монорепо (дело вкуса)
|
||||
- Go-специфичные вещи: glide, go mod
|
||||
Мелочи сжирают кучу времени. Не позволяйте им это делать!
|
||||
|
||||
Почему это важно
|
||||
---
|
||||
Про сборку под разные ОС я даже уюеждать не буду - аудитория рогаликов мало того что крохотная, так еще и сильно
|
||||
сегментирована по осям. Go почти бесплатно дает вам возможность сборки под все мажорные оси, пользуйтесь этим - и
|
||||
потенциально в разы больше народа ознакомится с вашим творением.
|
||||
|
||||
Почему это очень важно
|
||||
---
|
||||
Запуск тестов и сборки руками отнимает вроде бы немного времени. Но это настолько частая операция (вы же собираете новые
|
||||
версии после багфиксов, да?!), что даже жалкие 5 минут после 12 сборок в день превращаются в ЧАС потерянного времени. А
|
||||
время вам никто, никогда, ни при каких обстоятельствах не вернет.
|
||||
|
||||
Подготовка
|
||||
---
|
||||
Дальше я буду рассказывать про настройку под Linux, поскольку это моя основаня рабочая ось. Но на самом деле настройка
|
||||
под Windows/MinGW и Мак не так уж и сильно отличаются.
|
||||
|
||||
###### соберите внешние библиотеки под каждую целевую для сборки ось, одной версии, и положите их в репозиторий.
|
||||
|
||||
Каждый раз выкачивать скажем BLT от разработчика - ненадежно, менять версию библиотеки на новую и несовместимую вы точно не
|
||||
будете, а готовая версия, уже собранная вас наверняка устраивает по фичам, правда ведь?
|
||||
|
||||
Вот и заморозьте версию и оставьте эталон там, где он не потеряется. Можно прям в системе контроля версий (Git).
|
||||
|
||||
###### Потратьте день на изучение вендоринга в Go
|
||||
|
||||
Прежде всего речь про go mod. Glide, godep и прочие - официально уже более не поддерживаются.
|
||||
Только не просто пролистайте мануал, а прям создайте пакет с hello world, опубликуйте на гитхабе, попробуйте его в
|
||||
другой проект импортировать, поймите зачем нужны теги и что такое семантическое версионирование.
|
||||
|
||||
Если вы профессионально программируете (или планируете это делать) на Go - этот потраченный день вернется вам отсуствием
|
||||
в вашей жизни недель головной боли из-за того, что "сборка внезапно сломалась и не работает".
|
||||
|
||||
Как выжить при кросс-компиляции, краткий курс
|
||||
---
|
||||
- Кросскомпиляция, CGO для Mac и Linux. CGO_ENABLED=1, mingw, локальная видимость библиотек
|
||||
|
||||
- Makefile и нафига он нужен
|
||||
- Таргеты: Убираем бардак за собой - distclean, build
|
||||
- Автоматическое тестирование, testify. Не ленитесь писать тесты!
|
||||
|
Reference in New Issue
Block a user