한 번에 빌드 할 수 있습니까?


14

로부터 조엘 테스트 :

한 번에 빌드 할 수 있습니까?

나는 할 수 없다고 말해야한다. 현재 배포하기 위해 수행해야하는 항목의 스프레드 시트 목록이있는 웹 앱을 개발 중입니다. 그래서 내 질문은 어떻게 이것을 자동화 할 수 있습니까? 조직 전체에 있어야합니까? 팁 / 기술?


3
목록의 항목이 무엇입니까? 이상적으로는 자동화 할 수 있어야합니다.
아무도

4
en.wikipedia.org/wiki/Build_automation BTW : 어떤 단계는 한 걸음은 너무 많습니다 :)
Mchl

모든 종류-파일 위로 이동, 저장 프로 시저 스크립트 등-14 단계가 있습니다!
billy.bob

2
다른 각도에서 목록에서 무엇을 자동화 할 수 없다고 생각하십니까?
Tyanna

1
빌드 자동화 방법에 대한 질문은 주관적이지 않으며 스택 오버플로에 대해 질문해야합니다. 질문에는 유용한 작업을 얻기 위해 필요한 작업에 대한 자세한 정보가 있어야합니다.
David Thornley

답변:


10

Make는 빌드 프로세스를 한 단계로 자동화 할 수 있습니다. Make는 당신이 원하는 것을 거의 할 수 있습니다. 왜 삿포로가 Make가 C / C ++에만 적용된다고 생각하는지 잘 모르겠습니다. make를 사용하여 모든 유형의 명령을 실행할 수 있습니다. 그것은 비록 그것이 일반적으로 사용되는 것이지만 프로그래밍과도 관련이 없습니다.


2
make는 "스위스 군용 칼"종류의 도구 중 하나입니다. 함께 일하는 것을 좋아합니다. make가 유용한 곳을 지적하는 또 다른 점은 빌드 / 프로세스 등을 자동화하고 하나 이상의 단계가 다른 완료에 성공적으로 의존하는 경우 해당 단계가 실패하면 다른 단계가 진행되지 않고 make가 중지된다는 것입니다. 문제를 일으킬 수 있습니다.
Will

1
많은 'nix 앱 / 시스템이'./configure; 하다; make install 'make는 설치 엔진으로서도 두 배가된다고 생각합니다. 그렇게 할 수 있다면 OP의 Quandry를 해결할 수 있다고 확신합니다.
JBR 윌킨슨

하지만 구문은 명확하지 않습니다. 지금까지 두 가지 대안이 있습니다. SCons (Make + makedepend보다 훨씬 쉬움)와 Makefile (독점) 생성을 자동화하는 도구입니다.
Matthieu M.

@JbRWilkinson ... 내가 말한 것처럼 make는 당신이 원하는 무엇이든 할 수 있습니다.)
Pemdas

3

환경에 따라 Make (C / C ++), Ant / Maven (Java), Gradle (Groovy)을보고 싶을 수도 있습니다. 귀하의 환경에 널리 사용되는 솔루션이있을 가능성이 높습니다.


ASP.NET / SQL 환경
billy.bob

@ m.edmondson-그러면 cruisecontrol.sourceforge.net 은 아마도 당신의 길입니다
bobah

ASP.NET을위한 또 하나의 지속적인 통합 환경은 TeamCity입니다. CruiseControl과 TeamCity에서 사용했으며 TeamCity가 사용하기 쉽고 조금 더 강력하다는 것을 알았습니다. 그러나 더 이상 그렇지 않을 수 있습니다.
RationalGeek

NANT는 크루즈 컨트롤에 대한 보완 기능으로 잘 사용했던 .NET ANT 변형으로, 추가 / 조정 / 매개 변수 설정 및 변경 등 몇 가지 추가 항목을 원하는 경향이있는 배포 용 코드를 작성하는 데 사용하지 않는 Cruise Control의 보완 기능입니다. . 그것이 ANT / NANT가 잘하는 것입니다.
Jon Hopkins

@Jon Hopkinds 제안에 이어 두 번째로 nant는 환경에 매우 적합합니다.
JBR 윌킨슨


0

물론 이것을 자동화하는 방법이 있습니다. Chef 와 같은 도구를 사용하면 새로 설치 한 새로운 서버를 쉽게 설치할 수 있습니다.

knife bootstrap ip.address -N aNameForTheServer -r "role[some functionality]"

필자의 경우 단일 명령으로 실행되는 단계는 다음과 같습니다.

  • 필요한 라이브러리, 프로그램 및 Python 모듈 설치
  • 지정된 액세스 권한을 가진 새로운 사용자 생성
  • 새 데이터베이스 생성, 필요한 스키마로드, 소유권 및 액세스 권한 설정
  • 프로젝트 코드 다운로드 및 준비 후 구성 정보 작성
  • 데이터베이스 서버 실행, 크론 작업 설정 등을 통해 모든 것을 프로덕션 모드로 전환하십시오.

Windows 지원이 "예비"로 나열되어 있기 때문에 Chef가 사용자 환경에서 어떻게 수행되는지 잘 모르겠지만 UNIX 기반 시스템의 경우에는 무릎이 꿇습니다.

Puppet 은 셰프보다 약간 오래된 유사한 시스템이며 더 나은 Windows 지원을 제공 할 수 있습니다.


0

Java 세계에서 Maven을 사용하면 간단합니다.

mvn clean deploy

이 구성에서는 WAR 파일의 모든 필요한 빌드 (필요에 따라 JAR 종속성이 필요함), dev 웹 서버로의 배포 및 dev 데이터베이스에서 미리 준비된 테스트 데이터 작성을 수행합니다. 일단 배치되면 Maven은 SeleniumRC를 통해 포괄적 인 기능 테스트를 처리하여 애플리케이션이 작동하는지 확인합니다.

이 단일 명령은 응용 프로그램을 개발 서버 클러스터에 완전히 배포하므로 다른 개발자가 즉시 테스트 할 수 있다고 가정 할 수 있습니다. 개발자가로 로컬에서 작동하는지 확인했기 때문에 개발자 배포가 실패하는 경우는 드 '니다 mvn clean install.

그런 다음 스냅 샷 아티팩트 (WAR)가 다른 개발자와 공유하기 위해 Maven 저장소로 복사됩니다 (표준 Maven deploy동작에 따라).

좋습니다. 그러나 개발 용 스냅 샷 만 배포했습니다. 테스트 및 프로덕션은 어떻습니까?

테스트 및 (나중에) 프로덕션 서버로의 배포는 누군가가 의심스러운 출력을 감시 할 수 있도록 수동으로 처리하려는 Maven 릴리스 프로세스를 통해 처리됩니다. 테스터는 스냅 샷이 아닌 릴리스 된 아티팩트로만 작업합니다.

일단 릴리스되면 간단한 빌드 스크립트를 사용하여 WAR 파일을 테스트 서버 클러스터로 SFTP하고 누군가가 프로세스를 감시하여 문제가 없는지 확인합니다.

마지막으로, 모든 테스터가 만족 한 후에는 변경되지 않은 WAR 파일을 장애 조치 프로덕션 서버 클러스터에 SFTP로 연결하여 재해가 발생했을 때 즉시 눈을 돌리고 즉각적인 롤백 위치를 유지합니다.


0

나는 Joel 테스트에서 그 중 하나를 확인할 수 있다고 생각했습니다 ...

파이썬으로 빌드 서버를 만들었고 pychron 을 사용하여 자동화했습니다 .

코드는 커맨드 라인에서 VSS와 동기화되었고, borland make로 빌드합니다. (대부분의 IDE는 호출 여부에 관계없이 make 파일을 생성합니다. Delphi는 make 파일을 펌프 아웃하고 .BPG 파일로 호출했습니다. 다시 MSBuild XML 파일을 사용하면 MSBuild를 사용할 수 있음) 오류가 방금 추가 한 XML 파일에 저장되었습니다.

배치 파일을 작성하고이 작업을 수행하십시오.

  1. 소스 제어에서 코드 동기화
  2. 모든 것을 만들 수 없게 만드는 바보 같은 물건 (프로젝트의 개별 구성 파일)을 삭제하십시오.
  3. 모든 것을 구축하십시오 (나는 모든 것을 구축하고 모든 형제를 만듭니다).
  4. 오류와 경고 및 내용을 기록하되 구축을 중단하지 마십시오. (정말 똑똑하면 마지막 사람의 이름을 추출하여 파일을 체크인하여 빌드가 중단되고 그에게 욕설을 보냅니다)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.