📱

Get Our Mobile App

Take your business learning on the go!

Download on the App StoreGet it on Google Play

I replaced Docker with THIS.

DevOps Toolbox10:38

Transcription

Вы знаете, почему вы здесь? Потому что воспроизводимые среды заставляют вас трепетать, но слишком много трений вызывает у вас тошноту. Что, если бы вы могли отказаться от npm, RVM, Nixen и даже контейнеров Docker, которые все хороши для некоторых случаев использования. Но когда дело доходит до локальной среды, вы хотите быть дзен. Спустя 12 лет я наконец нашел то, что отвечает всем требованиям. Devox — это все вышеперечисленное, но больше. CLI, который позволяет легко создавать воспроизводимые, надежные среды разработки, которые также поставляются с кучей плагинов, что делает управление различными средами легкой задачей. Это все солнечно и радужно? Почти, но не совсем. Давайте поговорим об этом. Devox, не путать с Devox от Windows, честно говоря, не является соперником Nyx, а скорее работает на базе Nyx и менеджера пакетов Nyx, крупнейшего в своем роде в мире. На канале есть видео о NYX, если вам интересно, но оно не для слабонервных. Devox находится на GitHub с более чем 10 000 звезд, написан на Go и имеет множество контрибьюторов. Если это было неясно, Nyx — это сила, стоящая за DevBox, который красиво его оборачивает. Я сделал несколько видео о Nyx в прошлом, некоторые углублялись, некоторые возвращались тем же путем, которым я вошел, потому что это не совсем соответствовало моему рабочему процессу. Я всегда хотел вернуться к свободе молниеносно быстрого менеджера пакетов и настраиваемых по запросу оболочек. Говоря прямо, Nyx — это слишком большая хлопота, чтобы достичь этого, по крайней мере, для меня. Помимо Devbox, Jedify, его первоначальные создатели также являются создателями Nyx Hub, что кое-что говорит об их привязанности к Nyx. Nixhub — это, по сути, репозиторий пакетов Nix, созданный для Devbox. Прежде чем приступить, я настоятельно рекомендую документацию Devox. Она проста и понятна. Хотя, если быть честным, все это довольно легко использовать и освоить. Итак, давайте сделаем это. Как всегда, все начинается с curl. Запустите команду say yes approval для pseudo, поскольку мы, в конце концов, устанавливаем систему, связанную с Nyx, с доступом к локальным pin. Затем вам предложат перейти в документацию или их Discord, который я еще не пробовал, но приятно знать, что есть живое сообщество. Настоящая сила Devbox — это его конфигурации, специфичные для проекта. Давайте создадим такой проект. Carbase автозаполняет здесь, как всегда, помогая нам начать. Итак, первый шаг — devbox init. Теперь у нас есть файл devbox.json, и именно здесь все начинается. В нем есть несколько вещей. Во-первых, схема со стандартной конфигурацией, пустой список пакетов, который мы собираемся заполнить, некоторые хуки оболочки и скрипты. Давайте отложим эти два и вернемся к ним позже. Простая оболочка devbox запускает, ну, оболочку devbox, гарантируя наличие пакетов, но на данный момент нет ничего, о чем действительно нужно заботиться. Однако, используя starship, мы можем увидеть запущенную в данный момент нечистую оболочку Nyx. Так что да, Nyx — это больше, чем просто движок здесь, и это не только означает, что вы пользуетесь его возможностями. Это также означает, что вам нужно правильно его установить. Если у вас старая, сломанная установка Nyx, и вы ожидаете, что DevOps будет вести себя должным образом, вас ждет неприятный сюрприз в виде пары часов разочарования. Не спрашивайте меня, откуда я знаю. Большие PR убивают вашу скорость. Раздутые диффы, медленные обзоры, драма слияния. Так быть не должно. Graphite — это современная платформа для обзора кода, построенная вокруг стековых диффов. Маленькие последовательные pull-запросы, которые чисто приземляются в порядке. Вы разбиваете функцию на сфокусированные изменения. Рецензенты видят точно, что изменилось на каждом шаге, и вы сливаетесь непрерывно без хаоса конца ветки. Вот как это выглядит на практике. Установите CLI, инициализируйте его один раз и начните работать со стеками. GT off. Создайте свое первое изменение. Затем GT submit. Далее, нужно синхронизировать. GT app поддерживает весь стек перебазированным и чистым. Graphite отслеживает ваш стек. Открывает PR в порядке и показывает чистый диф для каждого слоя. Рецензенты фокусируются на намерении, а не на шуме. Меньшие диффы выпускаются быстрее. Уровень конфликтов падает, а качество растет, потому что каждый шаг можно просмотреть и отменить. Если ваша команда строит в ветках, но хочет выпускать стеками, попробуйте graphite. Ссылка в описании с кратким руководством и примером стека, который вы можете скопировать в свой рабочий процесс. Теперь вернемся к видео. Devbox вас устанавливает, а простой выход возвращает вас обратно. Теперь давайте использовать его. Но сначала нам нужно настроить контроль версий. И поскольку я особенный снежинка, я запущу jj getit init. Если вы хотите узнать больше о JJ, видео есть здесь. Если вы хотите задать вопросы, комментарии находятся там. Теперь давайте добавим devbox JSON в наш контроль версий. Затем начнем добавлять пакеты. Первая важная команда — search, которая использует Nyx hub, который мы видели ранее, и возвращает кучу вариантов. Rip Grip, например, имеет много сохраненных версий. Последняя из которых — 15. Давайте добавим версию 13 для справки. Devbox говорит, что она добавлена, но что это вообще значит? Мой локальный RIP rep говорит 1411. Devbox JSON говорит 13, которую мы только что добавили. Итак, Devbox shell, RG version, и вуаля, 13. RG version буквально возвращает две разные версии. Те же машины, никаких контейнеров, та же настроенная оболочка. И все же эта функциональность была достижима с помощью virtual M и тому подобного, контейнеров Docker или, ну, оболочек Nyx. Не так легко, организованно и структурировано, как devox. Но подождите, это еще не все. Devbox list возвращает текущие пакеты в проекте. Или вы можете изменить его самостоятельно прямо в файле. Поиск пути на двух разных разделениях также возвращает разные настройки. Homebrew для локального хоста ниже и devbox nicks path выше. Бомба здесь в том, что это dot-файл, содержащийся в проекте и уникальный для него. Круто. Любой пакет любой версии, установленный специально для проекта, над которым я работаю. Мечтательная установка. Но что мне придется делать, чтобы запустить оболочку, затем убить ее, вспоминая, сделал я это или нет, в каждом проекте? Звучит как кошмар. Однако есть одна утилита, которую некоторые из вас, возможно, уже знают, которая полностью создана для этого. Установка среды, пока вы находитесь в проекте, и ее отмена, когда вы не находитесь. Dire. Я сделал видео об этом более года назад, и извините за мой больной вид. Было 4 часа утра. Но в любом случае, Darren полностью интегрируется с Devox. Посмотрите на это. Drev, следуя 12-факторному приложению, которое является еще одним видео, которое вы можете найти на канале, настраивает вас при входе в путь. Его предпосылка — очистить ваш профиль, не имея необходимости устанавливать все эти переменные среды и другие настройки глобально, когда они специфичны для проекта. И, как упоминалось, devbox имеет интеграцию dur для автоматической активации оболочки и пакетов при навигации туда в вашем проекте. Запустите devbox generate dur, и вуаля, загрузка. Envirrc с использованием devbox и даже приветственное сообщение devbox из нашего хука. Теперь, если вы нейтральный пользователь и смотрите это, не расстраивайтесь, если у вас не получится. >> Так она сказала. >> В вашем config.nf есть короткий фрагмент, необходимый для того, чтобы dear end работал нормально. Он находится в моем репозитории файлов. После этого вы готовы. Вот оно в действии. Вы находите свой deer, и это, по сути, все. Rip Grep использует специфичную для проекта старую версию в качестве доказательства. Что, если вы хотите глобальный пакет, такой как npm install-g или go install для гоферов? По сути, наслаждаться пакетами mix на вашей глобальной машине. Devbox не только для, ну, dev boxes, но также может помочь здесь. У меня нет ranger, двухпроводного обозревателя, установленного локально, но devbox global ad ranger делает свое дело. Одно предостережение, и это снова специфично для оболочки, что devbox global shellen ожидается запускать каждый раз, когда вы запускаете оболочку для подключения debox global. Как только это будет установлено, для пользователей bash все в порядке. Ranger установлен в общем пути devox global, доступном по всей системе. Запуск Ranger открывает его. Открытие файлов, распознавание цветового кода синтаксиса с помощью bat, и в целом удовольствие от использования. О, и нейтральные пользователи, не сдавайтесь. Я вас прикрыл. Спросил open code с cloud, чтобы спланировать и выполнить нейтральное расширение для той же цели, чтобы хипстеры оболочки также могли наслаждаться пакетами nyx. Я имею в виду, это должно быть очевидно. Больше об open code в отдельном видео на канале. Я форкнул версию здесь на GitHub, которая также расширяет PR команде dev books, но я не могу ничего гарантировать. Вы можете форкнуть мою на данный момент. Затем перейдите к build hyphen o devbox cmd devbox, и тогда вы найдете новый локальный бинарник, который имеет флаг format, принимает neutral в качестве значения и выводит новый скрипт. Осталось два шага. Скопируйте этот бинарник в ваш локальный путь bin или любой другой глобальный путь, который вам нравится. Затем используйте его напрямую, сохранив его в devbox new, который затем можно будет проанализировать. И вот оно. Ranger известен через глобальный путь devox на new. Чрезвычайно нервно, но я счастлив. Все, что осталось, это взять фрагмент, который добавляет preserve stack как есть. Добавьте его в ваш config new. Сохраните, запустите новую оболочку. Готово. Теперь для тех из вас, кто видел раздел скриптов и не мог понять, для чего он нужен, если вы привыкли к npm run в проекте или tune run, например, в глобальной системе, Devbox предоставляет ту же функциональность, но специфичную для проекта, не будучи зависимым от фреймворка или языка. Итак, если я сделаю что-то вроде эха строки, Devbox run do something отправит это. Более практичный пример — сборка бинарника go без необходимости запоминать флаги и так далее. The box run build, и бинарник был только что создан и успешно запущен. Думаете о makefile? Да, именно. Только интегрировано в вашу настройку, без дополнительного файла. И кто вообще любит синтаксис makefile? Но вот, вероятно, моя любимая функция Devbox — плагины. Когда-нибудь приходилось менять версии Postgress или менять файлы конфигурации Nix или настраивать redis по-разному для разных репозиториев? Я делал это слишком часто. Devbox поставляется со списком распространенных плагинов, и если вы не найдете то, что ищете, вы можете легко создать свой собственный. Добавление engineix, например, делается как любой другой пакет. Но особенность в том, что все его файлы конфигурации, полученные из шаблона, включая index-файл, будут жить в dot-файле внутри проекта. Devox addictix, затем devbox services start engineix, и у вас есть пользовательский engineix, запущенный из локального пути. Devbox и devox.de добавлены. Каталог dot содержит ваши bin и nix virtual end facilitators. Не критично, если вам все равно. Но devbox.d содержит ваш enginex conf и ваш index для обслуживания. Критически важно добавить, что если вы хотите внести какие-либо изменения, измените шаблон, а не сам файл conf, если вы не хотите менять порт 10 раз и биться головой, пытаясь понять, почему он сбрасывается. В любом случае, веб-порт engineix — это envir, отвечающий за это, что является отличным моментом, чтобы показать блок env для установки переменных среды для наших процессов, как и so engineix port set to82 start engineix get the html, который показывает индекс, который мы обновили локально. Обратите внимание, что, как и в случае с docker, devbox services ls показывает запущенные службы, в то время как devbox services app запускает их и запускает process compose, который выглядит как ребенок k9s и docker compose, показывая процессы, метрики и логи. Я снова призываю вас тщательно изучить документацию, включая справочник по JSON, как потому, что они отличные и легко читаемые, так и потому, что они предотвращают петли, как у меня, когда я думал, что я гений engineix, теряя час своей жизни, гоняясь за портом. С Devbox на вашем поясе вы неудержимы. И если вы все еще задаетесь вопросом, как я использую Nyx, но, что более важно, когда я перестал его использовать и почему, вы, возможно, захотите посмотреть это следующее видео, чтобы не совершить ту же ошибку. Спасибо за просмотр, и увидимся в следующем.