Вот не понимаю таких людей, спросят на форуме - "А как сделать X?" и потом через время - "А все, разобрался, решение было простым, тему можно закрывать" или "Если будут вопросы - пишите в личку/email/icq/etc".
Если нашли решение, то почему бы сразу его не написать, чтобы через какое то время человек, который столкнется с такой же проблемой не искал ветра в поле, а мог найти ответ? ;)
> можно стать DevOps'ом вовсе не зная сетей и SQL?
нет, имхо. Как минимум без первого. Ибо на сетях строятся все сервисы. И когда вас попросят настроить VPC в том же AWS, то без хорошего знания сетей там делать нечего. То же касается и траблшутинга, ибо практически все сервисы завязаны на сеть. Почитайте того же Олифера или Таненбаума.
Как действующий DevOps крайне советую таки разобраться в сабже ;)
> dockerize everything
потому что стильно/модно/молодежно? Не стоит забивать гвозди микроскопом
Сергей Протько:
> Вы можете сделать npm install ДО того как понадобятся данные?
нет, не могу. Ибо данных на этапе сборки образа попросту нет. Она находятся на хосте и подключаются при запуске через -v
в каком смысле всегда так? Тег может указывать абсолютно на любой коммит, а поэтому мы можем "двигаться" как вверх по истории, так и вниз
> я ж и говорю, если у вас сервер сборок не тянет быструю сборку
представьте, но проекты сложнее hello world могут требовать много времени на сборку. И даже на каком нить core i7 процесс может занимать пару часов, а если у вас хотя бы 50 коммитов в день, а каждая сборка + деплой + прогон тестов занимает 1 час, вот и делайте выводы, сможете ли вы запускать билд на каждый коммит ;)
> и тем более, не представляю (а вы не открывали деталей про свой проект) где вам там надо что соптимизировать (да и гадать не буду, т.к. не телепат)
просто не надо гадать/предполагать, и уж тем более оптимизировать что то. Вы бы посмотрели на том же SO сколько подобных вопросов есть - "Как запускать билд при появлении нового тега" именно тега. а не коммита.
У меня просто частный случай, когда текущий тег может ссылаться на коммит вниз по истории. Вот и все. Так что если нечего сказать по сабжу, то предлагаю не тратить ни мое ни ваше время.
> но я убеждён в том, что проект, который собирается 10 часов, а его тесты выполняются 1 минуту - это проблемный проект
1 минута это лишь для примера, только чтобы показать, что сам билд занимает времени на порядки больше, чем тестирование ;)
> скАжете на ЧЁМ написан проект, который собирается 10 часов?
пффф, запустите компиляцию того же libreoffice на виртуалке с 512 Mb. Вот вы удивитесь. Только не надо мне рассказывать, а у меня дома/на работе на core i7/16Gb RAM и ssd оно собирается за N минут.
Как вы себе представляете быстро собрать 10 часовой проект? Может я действительно что то пропустил или не знаю, я этого и не отрицаю.
> но разве не очевидна выгода от быстрых сборок и тестов?
Если вы работали только с php/python проектами, где по сути ничего билдить и не надо, то это не значит, что ваш workflow будет подходить под другие задачи/проекты.
> CI - это build на каждое изменение репозитория.
это вам кто такое сказал? CI на то и CI, что ее можно настроить под нужды проекта и особенности workflow ;) Представьте, у вас билд+тесты занимают 10 часов. За день приходит 10 коммитов, что вы будете делать при описанной вами схеме?
"как это работает? я не знаю эту систему. что оно пытается делать с новыми коммитами?" например он может делать автоматический мердж, и если тот проходит успешно, то деплоить код на стейджинг и прогонять там тесты. Соответственно, если сам мердж фейлится, то и будет что то типа "build jenkins failure"
Ну я же писал, из-за того, что код меняется, я не могу использовать data контейнер или зашивать код в сам образ. Но entrypoint вроде будет выполняться каждый раз при запуске контейнера, т.е. придется в кауком-нибудь bash скрипте проверять, инициализировали мы контейнер или нет?
Сергей Протько: Прочитал ONBUILD, но то ли я его не до конца понял, то ли он выполняет немного другую задачу. Вы бы могли привести какой то простой пример, который позволит произвести инициализацию приложения, для упрощения пусть это будет npm install && npm run, данных которые хранятся на внешнем volume и подключаются к контейнеру только при старте через -v
ну ну