상태 게시판은 '프로젝트 관리자'를 위한 것입니다! 발포 미사일을 발사하여 부서진 건물에 보복하세요.
Retaliation은 "빌드를 중단"한 개발자에 대한 폼 미사일 반격을 자동으로 조정하는 Jenkins CI 빌드 모니터입니다. 문제가 되는 코드 몽키를 표적으로 삼기 위해 USB 폼 미사일 발사기 에 사전 프로그래밍된 제어 시퀀스를 재생함으로써 이를 수행합니다.
더 깊은 수준에서 보복은 단순한 "간단한 Python 스크립트" 그 이상입니다. 이는 소프트웨어 개발 팀과 소프트웨어 개발 수명주기를 관리하는 방법에 대한 근본적인 재검토입니다. 이는 외부 컨설턴트가 말하는 다른 모든 "극단적 프로그래밍"에서는 볼 수 없는 생산성 향상을 제공하기 위해 깊은 심리적 수준에서 작동합니다. 모든 코더의 정신 속에 숨어 있는 상호 보장 파괴라는 원초적인 위협으로 인해 가장 엉성한 개발자라도 다시는 "누락된 파일을 체크인"하는 것을 결코 잊지 않을 것입니다!
보복으로 인해 페어 프로그래밍이 약속했지만 결코 제공할 수 없었던 생산성 향상이 이루어졌습니다! 구현 이후 빌드 손상이 13.37% 감소했습니다.
윌, 수석 코드 해커
솔직히 Lava Lamp 빌드 알리미가 있는 개발팀에서 일하시겠습니까? 다음은 무엇입니까? Nyan Cat 마우스 매트? 실제 코더는 보복의 위협 속에서 일합니다!
매트, 코딩 머신
상자에 적힌대로 작동합니다. 우리 팀의 개선 사항을 확인했지만 아직 설치하지도 않았습니다! 순전히 위협으로 인해 우리 팀의 코딩이 제대로 이루어지지 않았습니다.
톰, 수석 코드 캡틴
이 비디오에서 보복이 실제로 이루어지는 것을 볼 수 있습니다.
Dream Cheeky Thunder USB 미사일 발사기를 중앙 고정 위치에 장착하세요.
미사일 발사기에 연결된 시스템에 retaliation.py 스크립트를 다운로드합니다.
retaliation.py
스크립트에서 COMMAND_SETS
수정하여 각 빌드 제동 코더(Jenkins에 나열된 사용자 ID)에 대한 대상 명령을 정의합니다. 명령 세트는 이동 및 발사 명령의 배열입니다. 각 명령 세트를 "0" 명령으로 시작하는 것이 좋습니다. 이렇게 하면 발사대가 알려진 위치(왼쪽 하단)에 고정됩니다. 그런 다음 "위쪽" 및 "오른쪽"을 사용하고 그 뒤에 불의 위치를 지정하는 시간(밀리초 단위)을 사용할 수 있습니다.
대상 이름으로 retaliation.py를 호출하여 세트를 테스트할 수 있습니다. 예:
python retaliation.py "[developer's user name]"
시행착오가 최선의 접근 방식입니다. 최상의 결과를 얻으려면 몇 시간 후에 비밀리에 이 작업을 수행하는 것이 좋습니다!
Jenkins 알림 플러그인을 설정합니다. retaliation.py
호스팅하는 시스템을 가리키는 포트 22222
에서 UDP
끝점을 정의합니다. 팁: 방화벽이 이 포트에서 UDP를 차단하고 있지 않은지 확인하세요.
다음 명령을 실행하여 실패한 빌드 이벤트 수신을 시작합니다.
python retaliation.py stalk
(이것을 부팅/시작 스크립트로 설정하는 것을 고려해보세요. Windows에서는 pythonw.exe
로 시작하여 백그라운드에서 숨겨진 상태로 계속 실행됩니다.)
DEFCON 1을 기다리세요. 전쟁 게임을 시작하세요!
테스트 중 "몇 가지 문제를 해결"한 PaperCut(인쇄 관리 소프트웨어 작업) 개발팀에게 감사드립니다!
장착 위치를 신중하게 선택하십시오. 사무실 공간의 중심 위치를 선택하세요. 타겟 간의 각도 분리를 최대화하도록 노력하십시오. 이렇게 하면 아군 화재 사고의 가능성이 줄어들 것입니다... 하지만 이것은 다시 한번 영역에 포함되며 모두 재미의 일부입니다!
양면 테이프를 사용하여 발사대를 아래로 붙여서 위치를 고정해 보세요. 이렇게 하면 누군가가 "물리적 해킹"을 사용하여 좌표 타겟팅 시스템을 방해할 가능성이 줄어듭니다.
빌드 파괴 가해자가 빈 공간에 있는 경우 건강 및 안전상의 이유로 머리보다는 키보드나 모니터를 대상으로 하는 것이 좋습니다.
커버할 영역이 넓다면 다중 미사일 발사를 고려하십시오(예: 클러스터 지원!). 여러 컴퓨터에 스크립트를 설정하고 Jenkins에서 여러 끝점 알림을 구성합니다.
Windows에서 이 작업을 수행하려면 PyUSB 및 libusb-win32를 설치해야 합니다. 조금 까다로울 수 있지만 CI 빌드 스크립트를 마스터했다면 쉬울 것입니다!
귀하의 개발팀이 다운 언더 상태이고 보복이 효과를 잃어가고 있는 경우, 추가 펀치를 위해 각 미사일을 Vegemite에 담그십시오. :-)
retaliation.py
Dream Cheeky USB Missile Launcher 용 명령줄 스크립팅 API로도 사용됩니다. 이를 호출하여 다음과 같이 스크립트나 명령줄에서 장치를 제어할 수 있습니다.
retaliation.py reset
retaliation.py right 3000
retaliation.py up 700
retaliation.py fire 1
보복을 위한 다른 멋진 용도나 아이디어가 떠오르면 이야기를 공유해 주세요!