Я не собираюсь делать дальнейшую работу над Бабушкой (на самом деле я не делал этого в течение некоторого времени).
У меня была эта идея, и я начал работать над проектом в 2009 году. В то время Докер и даже бродяга еще предстоит задумать. Частично я хотел создать более простую, мелкую альтернативу таким, как шеф-повар и марионет выполнять полезную работу. У меня был мяч, работающий над ним, и я узнал много, и я горжусь тем фактом, что первоначальный дизайн оказался звуком. Я менее горжусь определенными частями реализации - Hoowee я бы написал несколько бит этого кода сегодня по -другому - но тогда мы все были молоды.
В наши дни все совсем по -другому. С современными контейнерами и неизменностью, которые они обеспечивают, наряду с такими инструментами, как Terraform, Kubernetes и так далее, Babushka и ее подход, основанный на мутациях, довольно устарели. На самом деле требуется старая старая бабушка для серьезной инфраструктурной работы сегодня можно считать своего рода предупреждающим знаком.
Что касается настройки нового ноутбука и так далее, я узнал о том, что сценарий тупой оболочки, который копирует некоторые предпочтения на место, запускает несколько команд defaults write
, и так далее, вместе с несколькими ручными шагами, это много легче поддерживать. Чем больше автоматизированный процесс достигает MacOS, тем быстрее он выпадет от совместимости, и в любом случае настройка новая машина является для меня достаточно редким явлением, что не стоит стремиться к идеальной автоматизации.
Спасибо всем, кто внес свой вклад и использовал это на протяжении многих лет. Как всегда, если вы хотите использовать это каким -либо образом, идите на свою жизнь - я просто не собираюсь вносить какие -либо больше изменений в это основное репо. Ну, может быть, один дождливый день, я рефактирую волосатые кусочки - посмотрим.
Приветствия и всего наилучшего.
Babushka - это инструмент командной линии для автоматизации вычислительной работы. Каждая отдельная часть задания выражается как зависимость (DEP), которая включает в себя тест и код для выполнения этого тестового прохода.
dep 'on git branch' , :branch do
met? {
current_branch = shell ( 'git branch' ) . split ( " n " ) . collapse ( /^ * / ) . first
log "Currently on #{ current_branch } ."
current_branch == branch
}
meet {
log_shell ( "Checking out #{ branch } " , 'git' , 'checkout' , branch )
}
end
Выше представляет собой пояснительный DEP, который может достичь скромной цели быть на правильной ветви GIT (обратите внимание на параметр, обозначенный: символом ветвления). Он построен с использованием двух met?
и meet
, которая содержит каждую логику DEP, разделяя тест (соответствует ли зависимость?) от кода (соответствует зависимости).
Запуск этого DEP, когда требуется изменение филиала, показывает, как Babushka выполняет свою работу в блоках Met/Meet/Met: провальный тест, действие слепо проведено, а затем снова в том же тесте, проходя сейчас в результате.
$ bin/babushka.rb 'on git branch' branch=stable
on git branch {
Currently on master.
meet {
Checking out stable... done.
}
Currently on stable.
} ✓ on git branch
Если мы уже находимся в правой ветви, первоначальный тест уже проходит, и поэтому работы не нужно.
$ bin/babushka.rb 'on git branch' branch=stable
on git branch {
Currently on stable.
} ✓ on git branch
Это все очень хорошо для одной изолированной задачи. Чтобы достичь чего -то большего, задачи должны вызвать другие, где requires
третье слово DSL.
dep 'on git branch' , :branch do
requires 'git'
# ...
Прежде чем Babushka обрабатывает DEP в моде Met/MEET/MET, описанной выше, все его требования обрабатываются до завершения таким же образом. Это отражает реальность: спрашивая, есть ли мы в правильной ветви GIT, даже не имеет смысла, если GIT не установлен.
$ bin/babushka.rb 'on git branch' branch=stable
on git branch {
git {
'git' runs from /usr/bin.
✓ git is 2.3.8, which is >= 1.6.
} ✓ git
Currently on stable.
} ✓ on git branch
Комплентарное DSL Word requires_when_unmet
может использоваться для указания зависимостей, требуемых только тогда, когда определяется заданный DEP, и это можно пропустить, когда DEP уже выполнен. (Инструменты сборки являются хорошим примером такого требования.)
Есть и другие вещи, о которых можно узнать, такие как DEP -шаблоны, источники DEP и несколько оставшихся слов в DSL в Бабушке, но вышеупомянутое это ореховое. Если вы нажимаете несколько десятков, подобных этой вместе, вы можете предоставить сервер с нуля или сделать что -нибудь еще.
На веб-сайте есть гораздо более подробная документация, наряду с документацией для каждого метода, которую можно просмотреть здесь.
Babushka лучше всего устанавливается с помощью babushka.me/up
, сценария оболочки, который устанавливает Babushka через GIT (и его зависимости, Ruby и Git, через диспетчер пакетов вашей системы, если это необходимо). Безопасно работать в существующих системах и предназначен для использования в качестве первой команды оболочки в новой системе. Вы можете установить Babushka таким образом, используя curl
или wget
:
sh -c "`curl https://babushka.me/up`"
Если вы предпочитаете установить вручную, все, что вам нужно сделать, это клонировать git Repo (или извлечь его архив), и если хотите, свяжите bin/babushka.rb
на ваш путь как «Бабушка».
Проверьте установленную документацию для получения подробной информации о настройке установки, включая блокировку для конкретных версий и установку из Forks с использованием babushka.me/up
.
Сама Бабушка должна бежать на любой UNIX; В ядре Бабушки нет ничего, что требует ничего, кроме Unix, Ruby и Git.
Я разрабатываю Babushka на MacOS и использую ее в основном на Ubuntu, поэтому Homebrew и Apt являются лучшими менеджерами пакетов. Существует также некоторая поддержка Yum (Redhat/Fedora/Centos) и Pacman (Arch), благодаря вкладам других. В других системах конкретные операции (например, установка пакета с использованием диспетчера пакетов этой системы) выйдут из строя с сообщением об ошибке, но в остальном Babushka должна работать нормально. В любом случае, патчи являются наиболее приветствующими.
Бабушка использует эти библиотеки Ruby:
Большое спасибо всем, кто внес свой вклад в Babushka, будь то, отправляя патчи, обсуждая со мной идеи дизайна, тестирование или просто отзыв.
Список участников здесь неизбежно выпадает на дату - страница участников содержит полный список. Кроме того, коммиты с высокой точки зрения всегда подробно описывают, что изменилось, а кто помог в их сообщениях.
Бабушка лицензирована по лицензии на BSD с тремя указаниями, за исключением lib/levenshtein/levenshtein.rb
, которая лицензирована по лицензии MIT.
Лицензия BSD может быть найдена полностью в файле лицензии, а лицензию MIT можно найти в верхней части lib/levenshtein/levenshtein.rb
.