Jenkins에서 유물 보관


132

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

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

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

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

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

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

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


12
발생하는 오류는 문제가 아닐 가능성이 높습니다. 빌드 프로세스가 성공하면 작성해야합니다. 파이프 라인을 설정하는 동안 깨진 빌드가 몇 개있는 것이 정상입니다. :)
Anders Lindahl

3
빌드 후에 이슈가 생성되면 경고로 인해 두려워하지 마십시오. 설정 페이지에 경고가 있지만 구성에 의해 아카이브됩니다.
Huang F. Lei

답변:


68

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

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

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


@Andres 덕분에, 젠킨스는 각 빌드 후에 이슈를 삭제합니까 (아카이브 된 아티팩트가 아닙니다. 아니면 내가 그것을 myslef 할 책임이 있습니까?
Michael

6
@michael : 작업 공간을 직접 청소해야합니다. 모든 빌드 전에 최소한 대상 디렉토리를 지우고 이전 빌드의 결과로 끝나지 않도록하는 것이 좋습니다.
Anders Lindahl

@Michael 'clean'빌드 단계를 추가 할 수 있습니다. 메이븐와 예 -sh 'mvn clean package'
Snowcrash

@AndersLindahl- "일반적인 규칙은 빌드 결과를 빌드, 대상 또는 bin 디렉토리에 저장하는 것입니다." 모든 프로젝트가 공유하는 bin 디렉토리를 참조하고 있습니까? 어떻게합니까? 빌드 후 조치입니까?
user3240688

@ user3240688 아니요, 프로젝트 별 대상 폴더를 참조하고 있습니다. 여러 작업의 아티팩트를 단일 공유 폴더에 저장하려면 "$ PROTOCOL에 공개"플러그인 중 하나를 사용하여 아티팩트를 공개해야합니다.
Anders Lindahl

11

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

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


3
"정규 표현식을 이슈 이름으로 정의 할 수 있습니다. 제 경우에는 모든 파일을 압축했습니다."설명해 주시겠습니까? 정확히 내가 원하는 것 같아요?
Chris Milburn

7

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

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


1

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

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

오래된 빌드 옵션 무시

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.