[continuous-integration] Jenkins에서 유물 보관

누군가 빌드 과정에서 인공물 에 대한 아이디어를 설명해 주 시겠습니까?

나는 개미 스크립트 등을 컴파일하고 실행하는 코드를 체크 아웃하는 작업 공간 디렉토리를 가지고 있습니다. 결국에는 설치할 준비가 된 jar 파일을 얻습니다. 그것이 인공물로 간주됩니까?

jar 파일을 넣으려면 빌드 스크립트에 어디에서 말해야합니까? 작업 공간 디렉토리에서? 내 jar 파일은 변수 등에 따라 고유 한 파일 이름을 얻습니다 BUILD_ID.Jenkins에게 선택할 jar 파일을 어떻게 알 수 있습니까?

편집 : 좋아, 그래서 나는 이와 같은 일을 시도했다 :

여기에 이미지 설명을 입력하십시오

빌드 스크립트가 경로를 작성해야하기 때문에 경로가 아직 내 작업 공간에 존재하지 않으며 물론 .jar.properties파일이 아직 생성되지 않았으므로 및 파일이 없습니다. 그러면 왜 오류가 발생합니까? 뭔가 빠진 것 같습니다.

또한 Jenkins는 각 빌드 후 아티팩트를 삭제합니까 (아카이브 아티팩트가 아니라 아티팩트를 삭제하도록 지시 할 수 있음)? 그렇지 않으면 하드 드라이브가 꽤 빨리 막힙니다.



답변

이해가 정확합니다. Jenkins 의미의 아티팩트는 빌드 결과입니다-빌드 프로세스의 의도 된 출력.

일반적인 규칙은에 빌드의 결과를 넣어하는 것입니다 build, target또는 bin디렉토리.

Jenkins 아카이버는 globs ( target/*.jar)를 사용 하여 빌드 당 고유 한 이름이 있더라도 올바른 파일을 쉽게 선택할 수 있습니다.


답변

아티팩트는 빌드 프로세스의 결과 일 수 있습니다. 중요한 것은 어떤 클라이언트가 구축되었는지에 관계없이 작업 공간에서 마스터 (서버)로 다시 전송되고 빌드 링크와 함께 저장됩니다. 장점은이 방법으로 버전이 지정되며 마스터에서 백업 만 설정하면되고 모든 빌드 클라이언트가 오프라인 인 경우에도 웹 인터페이스를 통해 모든 아티팩트에 액세스 할 수 있다는 것입니다.

아티팩트 이름으로 정규식을 정의 할 수 있습니다. 필자의 경우 빌드 중에 일정한 이름으로 하나의 파일에 저장하려는 모든 파일을 압축했습니다.


답변

또한 Jenkins는 각 빌드 후에 이슈를 삭제합니까? (아카이브 된 아티팩트가 아니라 삭제하도록 지시 할 수 있음을 알고 있습니다)

아니요, Hudson / Jenkins는 자체적으로 빌드 후 작업 공간을 지우지 않습니다. 빌드 아티팩트에서 빌드 아티팩트를 지우거나 덮어 쓰거나 이동하는 조치가 빌드 프로세스에있을 수 있습니다. 작업 구성의 고급 프로젝트 옵션 (확장해야 함)에는 “빌드 전 작업 공간 정리”라는 옵션이 있으며 새 빌드 시작시 작업 공간을 지 웁니다.


답변

Jenkins 2.60.3에는 빌드 머신의 하드 드라이브 공간을 절약하기 위해 아카이브 아티팩트가 아닌 빌드 아티팩트를 삭제하는 방법이 있습니다. 일반 섹션에서 “로그 회전”전략을 사용하여 “오래된 빌드 폐기”를 확인한 다음 고급 옵션으로 이동하십시오. 일 수 또는 빌드 수에 따라 작업의 빌드 아티팩트 유지와 관련된 두 가지 옵션이 더 나타납니다.

나에게 맞는 설정은 “아티팩트와 함께 유지할 최대 빌드 수”에 1을 입력 한 다음 아티팩트를 아카이브하기위한 빌드 후 조치를 수행하는 것입니다. 이러한 방식으로 모든 빌드의 모든 아티팩트가 아카이브되고 빌드의 모든 정보가 저장되지만 마지막 빌드 만 자체 아티팩트를 유지합니다.

오래된 빌드 옵션 무시


답변