¡Los tableros de estado son para 'gerentes de proyectos'! Toma represalias contra una construcción rota con una andanada de misiles de espuma.
Retaliation es un monitor de construcción de Jenkins CI que coordina automáticamente un contraataque con misiles de espuma contra el desarrollador que "rompe la construcción". Para ello, reproduce una secuencia de control preprogramada en un lanzamisiles de espuma USB para apuntar al mono código infractor.
En un nivel más profundo, Retaliation es más que un simple "script de Python". Es un replanteamiento radical de cómo gestionar los equipos de desarrollo de software y el ciclo de vida del desarrollo de software. Funciona a un nivel psicológico profundo para ofrecer mejoras de productividad que no se ven en todas esas otras cosas de "programación extrema" de las que hablan los consultores externos. ¡La principal amenaza de destrucción mutua asegurada que acecha en la psique de cada programador garantiza que incluso los desarrolladores más descuidados nunca olvidarán "registrar ese archivo faltante" nuevamente!
¡Retaliation nos trajo la programación de pares de mejora de la productividad prometida pero que nunca pudo cumplir! Hemos visto una disminución del 13,37 % en las roturas de construcción desde su implementación.
Will, jefe hacker de códigos
Sinceramente, ¿trabajarías en un equipo de desarrollo con un notificador de compilación de lámpara de lava? ¿Qué sigue? ¿Alfombrillas para ratón Nyan Cat? ¡Los programadores reales trabajan bajo la amenaza de represalias!
Matt, máquina de codificación
Hace lo que dice en la caja. ¡He visto mejoras en mi equipo y ni siquiera lo hemos instalado todavía! Sólo la simple amenaza ha puesto en orden la codificación de mi equipo.
Tom, capitán principal del código
Puedes ver Retaliation en acción en este vídeo.
Monte su lanzador de misiles USB Dream Cheeky Thunder en una ubicación central y fija.
Descargue el script retaliation.py en el sistema conectado a su lanzador de misiles.
Modifique su COMMAND_SETS
en el script retaliation.py
para definir sus comandos de orientación para cada uno de sus codificadores de frenado de compilación (su ID de usuario como figura en Jenkins). Un conjunto de comandos es una serie de comandos de movimiento y disparo. Se recomienda iniciar cada conjunto de comandos con un comando "cero". Esto estaciona el lanzador en una posición conocida (abajo a la izquierda). Luego puedes usar "arriba" y "derecha" seguidos de un tiempo (en milisegundos) para posicionar tu fuego.
Puedes probar un conjunto llamando a retaliation.py con el nombre del objetivo. p.ej:
python retaliation.py "[developer's user name]"
Prueba y error es el mejor enfoque. ¡Considere hacer esto en secreto fuera del horario laboral para obtener mejores resultados!
Configure el complemento de notificación de Jenkins. Defina un punto final UDP
en el puerto 22222
que apunte al sistema que aloja retaliation.py
. Consejo: asegúrese de que su firewall no esté bloqueando UDP en este puerto.
Comience a escuchar eventos de compilación fallidos ejecutando el comando:
python retaliation.py stalk
(Considere configurar esto como un script de arranque/inicio. En Windows, comience con pythonw.exe
para mantenerlo ejecutándose oculto en segundo plano).
Espere a DEFCON 1: ¡que comiencen los juegos de guerra!
¡Gracias al equipo de desarrollo de PaperCut (que trabaja en el software de gestión de impresión) por "arreglar algunos problemas mentales" durante las pruebas!
Seleccione con cuidado la ubicación de montaje. Elija una ubicación central en su espacio de oficina. Esfuércese por maximizar la separación angular entre objetivos. Esto reducirá la probabilidad de incidentes de fuego amigo... ¡pero claro, esto viene con el territorio y es parte de la diversión!
Considere pegar el lanzador con cinta adhesiva de doble cara para fijar su posición. Esto reduce la posibilidad de que alguien utilice un "truco físico" para alterar el sistema de coordinación de objetivos.
Si el atacante está a quemarropa, por razones de salud y seguridad sugerimos apuntar a su teclado o monitor en lugar de a su cabeza.
Si tiene que cubrir un área amplia, considere realizar múltiples lanzamientos de misiles (por ejemplo, ¡apoyo de clústeres!). Configure el script en varias máquinas y configure múltiples notificaciones de puntos finales en Jenkins.
Para que esto funcione en Windows, necesitará instalar PyUSB y libusb-win32. Esto puede ser un poco complicado, pero si domina los scripts de compilación de CI, ¡debería ser fácil!
Si tu equipo de desarrollo está en Australia y descubres que Retaliation está perdiendo su efecto, intenta sumergir cada misil en un poco de Vegemite para darle más fuerza :-)
retaliation.py
también funciona como una API de secuencias de comandos de línea de comandos para Dream Cheeky USB Missile Launcher . Puede invocarlo para controlar el dispositivo desde un script o línea de comandos de la siguiente manera:
retaliation.py reset
retaliation.py right 3000
retaliation.py up 700
retaliation.py fire 1
Si se te ocurren otros usos interesantes o ideas para tomar represalias, ¡comparte tu historia!