Доски статуса предназначены для «менеджеров проектов»! Ответьте на сломанную конструкцию градом пенопластовых ракет.
Retaliation — это монитор сборки Jenkins CI, который автоматически координирует контратаку ракетами из пенопласта против разработчика, который «ломает сборку». Он делает это, воспроизводя заранее запрограммированную последовательность управления на USB-пусковой установке для пенных ракет, чтобы нацелиться на нарушившую кодовую обезьяну.
На более глубоком уровне Retaliation — это больше, чем просто «простой скрипт Python». Это радикальное переосмысление того, как управлять командами разработчиков программного обеспечения и жизненным циклом разработки программного обеспечения. Он работает на глубоком психологическом уровне, предлагая улучшения производительности, невидимые во всех других «экстремальных программах», о которых говорят внешние консультанты. Первобытная угроза гарантированного взаимного уничтожения, таящаяся в душе каждого программиста, гарантирует, что даже самые неряшливые разработчики никогда не забудут снова «вернуть недостающий файл»!
Возмездие принесло нам обещанное парное программирование повышения производительности, но так и не осуществившееся! С момента его внедрения мы наблюдали снижение количества поломок сборок на 13,37%.
Уилл, главный хакер кода
Честно говоря, вы бы работали в команде разработчиков с уведомлением о сборке лавовой лампы? Что дальше? Коврики для мыши Nyan Cat? Настоящие программисты работают под угрозой возмездия!
Мэтт, Кодировочная машина
Делает то, что написано на коробке. Я заметил улучшения в своей команде, а мы еще даже не установили их! Сама угроза привела к тому, что кодирование моей команды вышло из строя.
Том, главный капитан кода
Увидеть Возмездие в действии можно в этом видео.
Установите USB-ракетную установку Dream Cheeky Thunder в центральном и фиксированном месте.
Загрузите сценарий retaliation.py в систему, подключенную к вашей ракетной установке.
Измените COMMAND_SETS
в сценарии retaliation.py
, чтобы определить команды таргетинга для каждого из ваших кодеров, тормозящих сборку (их идентификатор пользователя, указанный в Jenkins). Набор команд представляет собой массив команд движения и огня. Рекомендуется начинать каждый набор команд с «нулевой» команды. При этом пусковая установка будет зафиксирована в известном положении (слева внизу). Затем вы можете использовать «вверх» и «вправо», а затем указать время (в миллисекундах), чтобы определить позицию огня.
Вы можете протестировать набор, вызвав retaliation.py с целевым именем. например:
python retaliation.py "[developer's user name]"
Метод проб и ошибок – лучший подход. Для достижения наилучших результатов подумайте о том, чтобы делать это тайно в нерабочее время!
Настройте плагин уведомлений Jenkins. Определите конечную точку UDP
на порту 22222
указывающую на систему, на которой размещен retaliation.py
. Совет: Убедитесь, что ваш брандмауэр не блокирует UDP на этом порту.
Начните прослушивать события неудачной сборки, выполнив команду:
python retaliation.py stalk
(Рассмотрите возможность настройки этого сценария загрузки/запуска. В Windows начните с pythonw.exe
, чтобы он работал скрыто в фоновом режиме.)
Ждите DEFCON 1 – Да начнутся военные игры!
Спасибо команде разработчиков PaperCut (работающей над программным обеспечением для управления печатью) за то, что они «справились с некоторыми проблемами в голове» во время тестирования!
Тщательно выбирайте место крепления. Выберите центральное место в вашем офисе. Постарайтесь максимально увеличить угловое расстояние между целями. Это снизит вероятность возникновения дружественного огня... но, опять же, это связано с территорией и является частью веселья!
Рассмотрите возможность приклеить пусковую установку двусторонним скотчем, чтобы зафиксировать ее положение. Это снижает вероятность того, что кто-то воспользуется «физическим взломом» для нарушения системы координатного наведения.
Если злоумышленник, нарушивший сборку, находится в упор, из соображений здоровья и безопасности мы предлагаем нацеливаться на его клавиатуру или монитор, а не на голову.
Если вам предстоит покрыть большую территорию, рассмотрите возможность многократного запуска ракет (например, кластерную поддержку!). Настройте сценарий на нескольких компьютерах и настройте уведомления нескольких конечных точек в Jenkins.
Чтобы это работало в Windows, вам необходимо установить PyUSB и libusb-win32. Это может быть немного сложно, но если вы освоили сценарии сборки CI, это должно быть легко!
Если ваша команда разработчиков находится в Нижнем Подземелье и вы обнаружили, что Возмездие теряет свой эффект, попробуйте окунуть каждую ракету в Веджимайт, чтобы получить дополнительный эффект :-)
retaliation.py
также служит API сценариев командной строки для Dream Cheeky USB Missile Launcher . Вы можете вызвать его для управления устройством из сценария или командной строки следующим образом:
retaliation.py reset
retaliation.py right 3000
retaliation.py up 700
retaliation.py fire 1
Если у вас появятся другие интересные варианты использования или идеи возмездия, поделитесь своей историей!