Les tableaux d'état sont destinés aux « chefs de projet » ! Ripostez à une construction cassée avec un barrage de missiles en mousse.
Retaliation est un moniteur de build Jenkins CI qui coordonne automatiquement une contre-attaque de missile en mousse contre le développeur qui « brise la construction ». Pour ce faire, il diffuse une séquence de contrôle préprogrammée sur un lanceur de missiles en mousse USB pour cibler le singe code incriminé.
À un niveau plus profond, Retaliation est plus qu'un simple « simple script Python ». Il s'agit de repenser radicalement la façon de gérer les équipes de développement logiciel et le cycle de vie du développement logiciel. Il fonctionne à un niveau psychologique profond pour offrir des améliorations de productivité inédites dans toutes ces autres choses de « programmation extrême » dont parlent les consultants externes. La menace primordiale d'une destruction mutuelle assurée qui se cache dans la psyché de chaque codeur garantit que même vos développeurs les plus négligents n'oublieront plus jamais de "vérifier ce fichier manquant" !
Les représailles nous ont apporté l'amélioration de la productivité promise par la programmation en binôme, mais qui n'a jamais pu être tenue ! Nous avons constaté une diminution de 13,37 % des casses de construction depuis sa mise en œuvre.
Will, pirate informatique en chef
Honnêtement, travailleriez-vous dans une équipe de développement avec un notificateur de build Lava Lamp ? Et ensuite ? Des tapis de souris Nyan Cat ? Les vrais codeurs travaillent sous la menace de représailles !
Mat, Machine à coder
Fait ce qui est écrit sur la boîte. J'ai vu des améliorations dans mon équipe et nous ne l'avons même pas encore installé ! La simple menace a mis le codage de mon équipe en conformité.
Tom, capitaine de code en chef
Vous pouvez voir Retaliation en action dans cette vidéo.
Montez votre lanceur de missiles USB Dream Cheeky Thunder dans un emplacement central et fixe.
Téléchargez le script représailles.py sur le système connecté à votre lanceur de missiles.
Modifiez votre COMMAND_SETS
dans le script retaliation.py
pour définir vos commandes de ciblage pour chacun de vos codeurs de freinage de construction (leur ID utilisateur tel que répertorié dans Jenkins). Un ensemble de commandes est un ensemble de commandes de déplacement et de tir. Il est recommandé de démarrer chaque jeu de commandes avec une commande "zéro". Cela gare le lanceur dans une position connue (en bas à gauche). Vous pouvez ensuite utiliser « haut » et « droite » suivis d'un temps (en millisecondes) pour positionner votre feu.
Vous pouvez tester un ensemble en appelant retaliation.py avec le nom de la cible. par exemple :
python retaliation.py "[developer's user name]"
Les essais et erreurs sont la meilleure approche. Pensez à le faire secrètement après les heures d'ouverture pour de meilleurs résultats !
Configurez le plugin de notification Jenkins. Définissez un point de terminaison UDP
sur le port 22222
pointant vers le système hébergeant retaliation.py
. Astuce : assurez-vous que votre pare-feu ne bloque pas UDP sur ce port.
Commencez à écouter les événements de build ayant échoué en exécutant la commande :
python retaliation.py stalk
(Envisagez de le configurer en tant que script de démarrage/démarrage. Sous Windows, démarrez avec pythonw.exe
pour qu'il reste caché en arrière-plan.)
Attendez DEFCON 1 – Que les jeux de guerre commencent !
Merci à l'équipe de développement de PaperCut (travaillant sur un logiciel de gestion d'impression) pour en avoir "copié quelques-uns dans la tête" lors des tests !
Sélectionnez soigneusement l'emplacement de montage. Choisissez un emplacement central dans votre espace de bureau. S'efforcer de maximiser la séparation angulaire entre les cibles. Cela réduira la probabilité d'incidents de tirs amis... mais là encore, cela fait partie du territoire et fait partie du plaisir !
Pensez à coller le lanceur à l'aide de ruban adhésif double face pour verrouiller sa position. Cela réduit le risque que quelqu'un utilise un « hack physique » pour perturber le système de ciblage par coordonnées.
Si l'auteur du bris de build est à bout portant, pour des raisons de santé et de sécurité, nous vous suggérons de cibler son clavier ou son moniteur plutôt que sa tête.
Si vous avez une vaste zone à couvrir, envisagez plusieurs lancements de missiles (par exemple, prise en charge de cluster !). Configurez le script sur plusieurs machines et configurez plusieurs notifications de point de terminaison dans Jenkins.
Pour que cela fonctionne sous Windows, vous devrez installer PyUSB et libusb-win32. Cela peut être un peu délicat, mais si vous maîtrisez les scripts de build CI, cela devrait être facile !
Si votre équipe de développement est aux antipodes et que vous constatez que les représailles perdent leur effet, essayez de tremper chaque missile dans du Vegemite pour plus de punch :-)
retaliation.py
sert également d'API de script de ligne de commande pour le lanceur de missiles USB Dream Cheeky . Vous pouvez l'invoquer pour contrôler l'appareil à partir d'un script ou d'une ligne de commande comme suit :
retaliation.py reset
retaliation.py right 3000
retaliation.py up 700
retaliation.py fire 1
Si vous proposez d’autres utilisations intéressantes ou des idées de représailles, partagez votre histoire !