2013-10-14 2 views
0

우리 Jenkins 서버는 apk를 빌드하기위한 두 개의 기본 작업으로 구성됩니다. 이러한 각 작업에는 빌드 서버에 연결된 Android 장치에 APK를 설치하고 UI 테스트를 실행하는 하위 작업이 있습니다. 예를 들어별도의 Jenkins 작업을 동기 실행하는 방법은 무엇입니까?

:

프로젝트-A-APK
프로젝트-A-테스트
프로젝트-B-APK
프로젝트-B-테스트

Project-A-apk가 Project-A 테스트를 시작합니다.
프로젝트-B-테스트

모두 프로젝트-A-테스트 및 프로젝트-B-테스트 오프3210 프로젝트-B-APK 차기 설치하고 같은 테스트 장치에서 실행됩니다.

문제는 같은 장치와 상호 작용하려고 시도하기 때문에 테스트 작업을 동시에 실행할 수 없다는 것입니다.

실행하기 전에 다른 작업 (상위 체인이 아닌)이 될 때까지 대기하도록 작업을 구성하는 방법이 있습니까? 당신은 Build Blocker Plugin 시도해야

답변

0

우리는 Jenkins Exclusion Plugin을 사용하여 서로 다른 DB 리소스를 공유해야하는 빌드를 관리합니다. 이 플러그는 빌드 단계에서 중요 블록을 정의 할 수있게하여 작동합니다. 중요 블록은 특정 리소스를 확보 할 수있는 경우에만 실행됩니다. 블록이 끝나면 자원이 해제됩니다.이는 전체 작업을 차단할 필요가 없으며 리소스가 필요한 부분 만 차단할 수 있음을 의미합니다.

0

: 현재 실행중인 작업의 적어도 하나의 이름이 지정된 정규 표현 중 하나와 일치하는 경우

이 플러그인은 대기열에서 실제 작업을 유지합니다.

또 다른 방법은 Jenkins 실행 프로그램의 수를 1로 제한하는 것입니다. 이렇게하면 하나의 작업 만 실행되고 다른 작업은 대기열에서 대기하게됩니다. 그러나 이는 테스트 장치에 액세스하지 않는 다른 장래의 작업을 차단할 수 있습니다.

1

Throttle Concurrent Builds Plugin을 사용하여 작업을 동시에 실행할시기를 제어합니다.

노드 당 최대 동시 빌드 수를 1로 설정하고 android-device와 같은 카테고리 이름을 설정합니다.이 카테고리를 Android 장치에서 테스트를 실행하는 작업에 할당하십시오. 플러그인이 설치되면 작업 구성 페이지에 카테고리를 할당 할 수있는 곳이 있습니다.

동일한 범주 이름이 지정된 모든 작업은 동시에 실행되는 대신 직렬로 실행됩니다.

0

하나 더 : Heavy Job Plugin

당신은 모든 집행을 차단하기 위해 안드로이드 작업을 가중 할 수 있습니다.

관련 문제