Daniel
у вас написано перечислением
Мерль
https://goplay.space/
Anonymous
Я пока человек без вы :D
Daniel
ладно, а чем make лучше конфикурации для ci вашего?
Daniel
или нет ci?
Anonymous
Разработчиков тоже просить CI юзать?
Daniel
тогда чем он лучше sh/cmd
Anonymous
Или предлагаешь листы команд писать вручную?
Anonymous
Тем, что Make можно свободно разделять и подключать инклудом
Anonymous
sh - это просто сборник скриптов
Anonymous
Дополнение к мейку иногда хорошее
Daniel
смотрите
Daniel
есть go generate
Daniel
его запускает разработчик, редко
Daniel
есть go build
Илья
у нас раскладки rpm пакетами, есть сервер сборок, ldflags, для уверенности что за версия крутится на проде (которых дофига), generate файлы в репе не храним, тк в процессе там очень много изменений, и ревьюить это страшно, пока работает как часы
Daniel
а больше и нет ничего
Anonymous
Есть еще такая штука, как энвы
Anonymous
Не go build / go generate едины
Anonymous
И они точно не попадают под тематику мейка
Daniel
про "очень много изменений" - есть $cat .gitattributes gen/* linguist-generated vendor/* linguist-vendored
Daniel
Не go build / go generate едины
ну вот я уже давно в бизнесе, и пока никакой необходимости в make не ощущаю. даже спилил его походя в паре мест, и там тоже никто дискомфорта не joenbk/ поэтому всякий раз, когда вижу его, задаю вопросы. ответов кроме "мы так привыкли" пока не получал...
Anonymous
Я накину вопросы, попробуй решить с помощью go build / go generate без длинных команд - Каким образом мы будем решать проблему с подстановкой конфигов? На этапе билда под определенный энв мы в папочку deploy, мейков расфасовываем нужные файлы и переименовываем локальный конфиг с копированием, дабы не подставлять другой флаг конфига. - Каким образом мы будем запускать проект, если он поддерживает несколько флагов, которые в зависимости от задачи, иногда могут меняться и желательно на каждый метод иметь свою команду запуска? - Миграция, иногда они такие сякие, не поддерживают файловую конфигурацию (Что есть вполне правильно), тогда в таком случае у нас есть большааая dsn строка, которую мы автоматически воспроизводим отдельной тулзой из нашего конфига. Как можно решить проблему сокращения и подставления, на моменте запуска миграции up / down этот момент? Это все относится к моменту запуска, параметризации у go build / go generate нет и не будет. Разделяться на множество файлов они тоже не умеют, дабы настраивать в большой монорепе каждый отдельный элемент.
Anonymous
Да, для большЕго количества случаев это утверждение подходит.
Anonymous
На больших проектах - хуй там лежал :)
Anonymous
И да, скрипты не предлагать, они всегда и в любых случаях многословнее мейка
Anonymous
И под скрипты нет автокомплита для zsh/fish/etc...
Anonymous
>поэтому всякий раз, когда вижу его, задаю вопросы. ответов кроме "мы так привыкли" пока не получал... Это подходит под многие утверждения, и всегда выглядит, как троллинг.
Anonymous
Нормальным людям просто не хочется ввязываться в длинные артиклы, особенно в чатах
Anonymous
И "мы так привыкли" не плохой ответ
Anonymous
Если привычка работает быстро - почему бы и нет
Daniel
"проблема с подстановкой конфигов" - я не понял, что это. видимо, я не понял, что такое env. "каким образом мы будем запускать проект" - опять не понятно. такое впечатление, что вы зашили в один бинарник несколько приложений. это так? если да - зачем? "миграция" - при чем тут make вообще? менеджеры миграций существуют и для go. отдельно мне не понятно проблема "сокращения и подставления" - что там такое надо сокращать и подставлять?
Daniel
Нормальным людям просто не хочется ввязываться в длинные артиклы, особенно в чатах
да-да-да. обычно это я тоже слышу. и, почему-то, не удивлен.
Anonymous
No problem, как говорится в таком случае :)
Anonymous
Не требуется, значит и не нужно.
Anonymous
Я такое называю - в поисках, как себе побольше гвоздей заколотить, а не инструменты юзать. Но если это вызвано действительно без нужды и разработчиков не насилуете - то все хорошо в этой жизни.
Daniel
а разъяснения по трем проблемам - воспоследуют? или "нет времени объяснять"?
Aleksandr
а разъяснения по трем проблемам - воспоследуют? или "нет времени объяснять"?
Есть подозрение, что вы просто плохо знакомы с матчастью, коллеги... (с) тут в чате вот такое разъяснение ходит
Daniel
обиделся? зря...
Илья
ldflags - а зачем они у вас? я без подколки спрашиваю generate не надо на сервере сборки запускать, точно вам говорю test и build не стоят того, чтобы чуждую =тулзу в проект втаскивать
по ldflags я ответил выше, по generate: практика показала, что стоит, почему держать генерённое в репозитории не хочется писал выше(для ревью очень критично), по test и build - это вкусовщина, мне нравится, что у нас фейлится сборка как только кто-то сломал тесты
Daniel
я, видимо, не понял ответа. про генеренное в репозитории - положено держать его там. и, если поразмыслить, окажется, что - да, там ему и место.
Daniel
для ревью можно таки освоить фокус с .gitattributes
Daniel
вообще - это правильно, знать и уметь свои инструменты, а не подставлять костыли под свое невежество...
Aleksandr
обиделся? зря...
ты дискуссию о необходимости вендоринга, принятого в го, свел к обвинению оппонента в незнании матчасти, хотя тут вообще-то практикующие в других языках программисты сидят, которые могут матчасть об управлении зависимостей в других языках и получше тебя знать. а потому просто некрасиво свое мнение пихать как аксиому.
Илья
вообще - это правильно, знать и уметь свои инструменты, а не подставлять костыли под свое невежество...
спасибо, за gitattributes, попробую затолкать, время сборки заодно уменьшится :)
Илья
но make я всё еще не считаю лишним в воркфлоу
Daniel
спасибо, за gitattributes, попробую затолкать, время сборки заодно уменьшится :)
gitlab, вроде, надо спецом воспитыватывать. github понимает все сам
Илья
посмотрим, что stash по этому поводу думает :)
Daniel
но make я всё еще не считаю лишним в воркфлоу
вот тут у меня как раз мнение, что он лишний. и я потому и спрашиваю каждый раз, что допускаю, что я просто не в курсе. но пока ответы больше про исторические причины...
Илья
вот тут у меня как раз мнение, что он лишний. и я потому и спрашиваю каждый раз, что допускаю, что я просто не в курсе. но пока ответы больше про исторические причины...
я не вижу исторических причин, у вас есть сервер для сборки проектов? вы раскладываете сервисы пакетами? (я не мастер докера, да и наши админы не считают его продакш реди) у вас парке серверов > 100?
Илья
ldfalgs, test при сборке, позволяют не получать плохие пакеты
Daniel
я не вижу для гошечки смысла в пакетах
Илья
+ при разборе инцидентов точно знать, какая версия проекта сейчас работает на конкретной машине
Daniel
и как связаны версия и ldflags - тоже пока не понял :)
Илья
LINKFLAGS = -ldflags="-X mail/version.RepoVersion=$(GIT_REV)"
Daniel
у меня для этой цели есть мелкое приложение на go, которое извлекает из гита версию и формирует файл с константой
Илья
у нас был bash скрипт, но перешли на ldflags - это удобно :)
Daniel
вызов приложения прописан в .gitlab-ci.yml
Daniel
который, кстати, заменяет вполне Makefile, как мы понимаем
Anonymous
а разъяснения по трем проблемам - воспоследуют? или "нет времени объяснять"?
Anonymous
Нет смысла их объяснять
Anonymous
Значит не было опыта такого
Anonymous
Поэтому и не продолжил дисскуссию
Anonymous
А сейчас вон выяснилось, что вместо мейка, отлаживали билд каждый раз деплоя гитлаб файл
Anonymous
У меня WTF в голове сплошной, как и у некоторых выше отписавшихся
Daniel
если у тебя нет своего мнения (т.е. аргументов), зачем высказывать чужое и навязывать его как единственно верное?
затем, что культурно-просветительскую работу в сообществе кто-то должен же вести
Axm
культурно-просветительская, это когда ты объясняешь свою точку зрения, а не говоришь "так надо" и не предлагаешь мне самому написать, почему именно так надо ("по ходу ответа поймешь")
Daniel
Значит не было опыта такого
за 25-то лет у меня всякий опыт был. но технические аргументы - они технические аргументы. если они есть - их обычно не трудно предъявить...
Anonymous
Мне не трудно было - я расписал, не понятно - значит на это уже требуется доклад и личная встреча.
Anonymous
Дабы сразу все по полочкам разложить и урегулировать
Daniel
культурно-просветительская, это когда ты объясняешь свою точку зрения, а не говоришь "так надо" и не предлагаешь мне самому написать, почему именно так надо ("по ходу ответа поймешь")
погоди, мы разве не разобрались? вендоринг, если его не коммитить, защищает тебя не полностью. если коммитить - почти полностью. или это так и не стало очевидным?!
Daniel
Мне не трудно было - я расписал, не понятно - значит на это уже требуется доклад и личная встреча.
коллега, не преувеличивайте. ничего особенного сложного в том, что любой из нас делает, нет.
Anonymous
Конечно, есть только способы решения
Anonymous
Кто-то пишет отдельные цельные тулзы для генерации константс и дебажит билд на CI сервере
Axm
проговори, почему в других языках не коммитят зависимости, и тебе станет ясным, почему это неочевидно.
мне тоже интересно знать, почему именно в go так принято (в гугле такой договоренности не нашел)
Anonymous
А кто-то локально задебажил, написал одну переменную и доволен жизнью