가능한 한 "CM 독립적"으로 빌드 (Java)를 만드는 방법? (CM = 구성 관리자)
-
20-08-2019 - |
문제
나는 내가 처리하는 프로젝트 빌드 중 하나를 가능한 한 "독립"(CM)으로 만들려고 생각하고 있습니다. 이것으로 나는 스크립트/도구를 통한 자동화를 의미하지는 않습니다. 이것은 많은 혼란에 처한 프로젝트이므로 "총"자동화는 현실적이지 않습니다.
내가 목표로하는 것은 다음과 같습니다.
누구나 빌드 (일부 자동화 및 약간의 문서/지침 포함) (예 : 초보자 CM 또는 CM 경험이없는 개발자)를 수행 할 수 있어야합니다.
나의 첫 번째 생각은 이것을 달성하는 것입니다.
빌드 요청 프로세스를 못 박는 (빌드 양식을 통해 빌드에 필요한 모든 세부 사항을 캡처하여 누군가의 머리에 있기 때문에 아무것도 균열에 빠지지 않도록)
빌드 단계를 단순화하여 일련의 명령으로 간단한 문서로 캡처 할 수 있도록 단순화 - 훈련 된 원숭이는 빌드와 함께 실행할 수 있어야합니다 (음 .. 모욕을 던지지 말고 - 아이디어를 얻습니다 :-)).
도구의 기능을 HILT (Read Ant, SVN)에 사용하여 잠재적 인 문제가 미리 잡을 수 있도록하고 실패/문제의 경우 더 나은 경고를 제공하는 데 도움이됩니다.
프로젝트 관리자가 며칠 동안 휴가를 언급 할 때마다 공황 발작을받지 않고 병에 걸리거나 가끔 휴가를 보내지 않을 수 있습니다. :-)
이 방향으로 나를 도울 생각과 아이디어가있어서 기쁩니다. 감사합니다!
해결책
~에 urbancode, 우리는 이것을 "Bob the Builder"Anti-Pattern이라고합니다. 좋은 소식은 Bob (You)가 루프에서 벗어나기를 원한다는 것입니다. 빌드 녀석이 휴가를 갈 수 없거나 프로세스의 일부가 없으면 병에 걸리지 않으면 실제로 용납 할 수없는 문제가 있습니다. 내가 베팅 맨이라면, 당신이 프로세스를 "훈련 된 원숭이"레벨로 단순화하는 과정을 시작하면서, 당신이 똑똑하고 실제로 추가 할 수있을 때이 끔찍한 일을하는 데 시간을 보내는 이유가 궁금합니다. 어딘가에 가치.
우리 책에서 "Bob the Builder"증후군의 증상 :
- 특정 유형의 빌드 또는 빌드에 대한 모든 요청은 개인 또는 소규모 팀을 통과합니다.
- 이러한 빌드 요청에 대한 응답은 개발자에게는 성가신 느린다. 빌드 팀이 점심을 먹으면 몇 시간을 기다립니다.
- Bob 또는 Bobs 팀은 Rote 작업을 수행하는 데 상당한 시간을 소비합니다.
- 밥은 하루 종일 집에 가거나 점심을 먹거나 휴가를 보내거나 병에 걸리면 팀이 일을 끝내는 능력을 방해합니다.
우리는 우리에게 말합니다 Anthillpro 고객은 이러한 모든 종류의 물건을 자동화로 밀어 넣습니다. 다른 기계를 사용하는 두 가지 빌드 유형, 다른 빌드 숫자 등이 문제가되지 않아야합니다.
첫 번째 단계는 프로세스를 바보하는 것입니다. "훈련 된 원숭이"프로세스로 내려갈 수 있도록 가능한 한 많은 복잡성을 유지하십시오. 일단 다가오는 것이 있으면 원숭이를 컴퓨터로 교체하는 것은 매우 쉽습니다.
나는 더 구체적인 조언을 할 것입니다. 그러나 나는 당신이 혼돈 이외의 복잡성이 어디에서 왔는지 말하지 않았다고 생각합니다. 때때로이 상황에서 당신은 혼란스럽고 나쁜 관행을 공격해야합니다. "소스 코드 의이 기준선 과이 두 파일과 세 가지 파일"인 빌드를하고 있습니까? 그것은 까다로울 것이며 아마도 루프에 cmer가 필요할 것입니다. 그것을 금지하는 방법을 찾으십시오. 이를 "지점을 만들고 해당 지점을 구체적으로 변경"으로 대체하면 그 원숭이가 빌드를 만들 수 있습니다.
이러한 변화를 위험이 높은 것으로 주장 할 수 있어야합니다. 당신은 좋지만, 당신은 나쁜 날을 보내고 가능한 한 방정식에서 인간의 오류를 취하고 싶어 할 것입니다. 동시에, 개발자와 셀프 서비스 (아마도 개발 및 관리가 원하는)에 대한 더 빠른 반응을 위해 촬영하는 경우 자동화 가능 / 원숭이를 만들어야합니다.
더 나은 형태를 갖는 것은 중간에 좋을 수 있으며 도구를 잘 사용하는 것은 항상 좋지만 "훈련 된 원숭이"문제를 공격적으로 공격합니다. 훈련 된 원숭이 (또는 컴퓨터)가 할 수없는 것은 과정을 떠나기위한 후보가되어야합니다. "훈련 된 원숭이"상태로 내려 가면 빌드 자동화를 제자리에 가져와 개발자와 개발자가 원숭이가 될 필요가 없습니다. 이는 "Bob the Builder"에서 "Bob the Build System 소유자"로 귀하의 역할을 바꿉니다.
다른 팁
빌드 단계를 단순화하여 일련의 명령으로 간단한 문서로 캡처 할 수 있도록 단순화 - 훈련 된 원숭이는 빌드와 함께 실행할 수 있어야합니다 (음 .. 모욕을 던지지 말고 - 아이디어를 얻습니다 :-)).
그것이 가능하다면 스크립트를 통해 한 단계로 빌드를 실행할 수 있어야합니다 (Mayy는 개미, 배쉬, Maven 또는 모든 스크립트입니다). 그것은 목표가되어야하므로 기본적으로 누구나 빌드를 할 수 있습니다.
빌드 프로세스 개발의 목표는 다음과 같습니다.
- 빈 디렉토리로 시작하십시오 (Tabula Rasa, 그렇다면)
- 기본 도구의 매우 작은 도구가 강조되어 있는지 확인하십시오 (보통 Java + Maven + SVN 명령 줄 클라이언트).
- 확인하십시오 하나의 SVN/CVS의 디렉토리/...
- 단일 명령을 시작합니다 (그리고 25 개의 매개 변수가없는 것을 의미합니다)
- 기다리기 (아마도 꽤 오랫동안)
- 완전한 빌드를하십시오
그렇게 할 수 없다면 빌드 프로세스는 여전히 충분하지 않습니다.
당신이 그것을 달성 할 수 없다고 생각한다면, 튜링-완성기는 그 목록 외에 어떤 행동을 할 수 없는지 자세히 설명하십시오.
일반적으로 그러한 점이 없습니다. 누락 된 도구/노하우/동기 부여 일뿐입니다. 개인적으로, 왜 그렇게 할 수 없는지 설명하는 것보다 이것을하기가 더 쉽다는 것을 알았습니다.
행운을 빕니다.