Share via


실패한 빌드

중요

Visual Studio App Center는 2025년 3월 31일에 사용 중지될 예정입니다. Visual Studio App Center가 완전히 사용 중지될 때까지 계속 사용할 수 있지만 마이그레이션을 고려할 수 있는 몇 가지 권장 대안이 있습니다.

지원 타임라인 및 대안에 대해 자세히 알아보세요.

프로젝트에 고유할 수 있는 빌드가 실패할 수 있는 여러 가지 이유가 있습니다. 일반적으로 빌드 실패를 진단하는 효율적인 방법은 빌드 오류를 작업 빌드와 비교하는 것입니다. 이 프로세스는 변수를 최소화하고 시나리오에 대한 관련 조건을 식별할 수 있습니다.

빌드가 로컬로 작동하지만 App Center에서 작동하지 않는 경우

일반적으로 이 문제는 커밋되지 않은 파일, 다른 도구 또는 복원되지 않은 종속성으로 인해 발생합니다. 확인하려면 프로젝트의 전체 git 복제를 새 폴더로 수행할 수 있습니다. 그런 다음 비교를 위해 App Center와 동일한 구성으로 컴파일합니다.

  1. 터미널 또는 명령줄 프롬프트를 열고 다음을 입력합니다. mkdir appcenter-test
  2. 그런 다음 디렉터리를 변경합니다. cd appcenter-test
  3. 다음을 사용하여 리포지토리를 복제합니다. git clone -b <branch> <remote_repo>
  4. 로컬 IDE 또는 명령줄에서 새로 복제된 프로젝트를 시작합니다.
  5. App Center에서 실행된 빌드 명령을 로컬로 실행된 명령과 비교해 보세요.
  6. 로컬에서 사용 중인 도구의 버전을 Cloud Build Machines와 비교

수정된 파일 이름 또는 위치가 있는 파일은 무시됩니다.

빌드는 최근에 이동되거나 이름이 변경된 키 파일을 무시할 수 있습니다. 빌드 구성에서 저장 또는 저장 & 빌드 를 선택합니다. 두 옵션 모두 리포지토리 트리를 다시 인덱싱하고 빌드 정의를 업데이트합니다.

알려진 원인은 nuget.config 파일을 & 빌드 스크립트를 이동하거나 이름을 바꾸는 것입니다.

App Center에서 다른 빌드 비교

빌드 설정의 변경 내용 추적

이 API 메서드를 호출하여 분기 구성을 기록할 수 있습니다. https://openapi.appcenter.ms/#/build/branchConfigurations_get

API는 과거 구성 기록을 직접 허용하지 않습니다. 그러나 사용자 지정 빌드 스크립트 를 사용하여 이 명령을 실행하면 빌드가 실행 시 현재 구성을 자동으로 기록할 수 있습니다.

App Center Cloud Build Machines의 변경 내용 추적

빌드 설정과 마찬가지로 클라우드 빌드 머신 문서를 검토하여 현재 도구를 검사 수 있습니다.

그러나 빌드 스크립트에서 이 명령을 실행하여 특정 빌드에 사용할 수 있는 도구를 기록할 수 있습니다.

eval cat $HOME/systeminfo.md

일부 분기는 작동하지만 다른 분기는 실패합니다.

빌드 설정 또는 분기 간의 커밋된 코드의 차이점을 확인해 보세요. 또한 동일한 분기의 특정 커밋 후에 빌드가 일관되게 실패하기 시작하는 경우 실패한 커밋에서 변경된 내용을 확인하는 것이 좋습니다.

빌드가 간헐적으로 실패

소스 코드 또는 빌드 설정을 변경하지 않고 빌드가 실패할 수 있습니다. 예를 들면 다음과 같습니다.

  • 복원된 다양한 버전의 패키지
  • 외부 서비스가 응답하지 않음
  • 빌드 시간 초과의 개별 작업
  • 기타

오류가 발생할 때 빌드에 대한 오류가 일관되는지 확인해 보세요.

오류 메시지 격리 및 해석

자동 오류 강조 표시

App Center Build는 일반적인 오류 메시지 또는 유용한 출력을 강조 표시하여 더 쉽게 표시하려고 자동으로 시도합니다. 기본 오류, 이전 로깅 또는 나중에 로깅에서 단서를 찾을 수 있는 경우가 많습니다. 이 앱은 빌드 구성에 & 프로젝트 설정 모두에서 서명됩니다. 따라서 Android jarsigner는 오류를 기록합니다.

강조 표시된 오류의 스크린샷

jarsigner: unable to sign jar: java.util.zip.ZipException: invalid entry compressed size (expected 13274 but got 13651 bytes)
##[error]Error: /usr/bin/jarsigner failed with return code: 1
##[error]Return code: 1

심층 분석

관련 오류 메시지를 찾을 수 없는 경우 다음 단계는 빌드 로그를 다운로드하는 것입니다. 이 로그는 기본 빌드 페이지에서 수행할 수 있습니다. 라는 logs_n > Build 폴더를 열면 숫자 순서로 나열된 별도의 로그 파일 목록이 표시됩니다. 예를 들면 다음과 같습니다.

  • 1_Intialize job.txt
  • 2_Checkout.txt
  • 3_Tag build.txt
  • 기타

로그는 빌드의 주요 단계에 따라 번호가 매겨집니다. 대부분의 빌드 실패로 인해 단계를 건너뛰고 관련 로그가 생략됩니다.

  • (1-9단계)...
  • 빌드 Script.txt 10_Pre
  • Xamarin.Android project.txt 11_Build
  • 12_Sign APK.txt
  • 빌드 Script.txt 15_Post
  • 20_Post 작업 Checkout.txt
  • 21_Finalize Job.txt

13단계를 먼저 건너뛰었기 때문에 12단계는 좋은 출발점입니다. 나중 단계도 건너뛰었지만 관련성이 적습니다.

상관 관계가 있는 커밋 식별

빌드 UI에서 현재 빌드에 적용되는 커밋 메시지 및 해시를 볼 수 있습니다. 이 기능을 사용하여 빌드 결과를 추적하고 소스 코드의 변경 내용과 상관 관계를 지정할 수 있습니다.

Appcenter.ms - [Organization-Name] - [App-Name] ->> Build - [Branch-Name]> ->> [Build-Number]로 이동하여 커밋 메시지 & 해시를 볼 수 있습니다.

프로토타입 URL: https://appcenter.ms/orgs/[ORG-NAME]/apps/[APP-NAME]/build/branch/[BRANCH-NAME]/builds/[BUILD-NUMBER]

원본에서 커밋 & 해시를 보여 주는 스크린샷

빌드에 대한 정보 맨 위에 커밋의 이름 및 축약된 해시가 표시됩니다. 스크린샷:

  • Xamarin.UITest를 3.0.5에서 3.0.6으로 범프
  • Commit 328ff115

축약된 해시를 클릭하면 동일한 커밋에 연결된 리포지토리가 열립니다. https://github.com/microsoft/appcenter-Xamarin.UITest-Demo/commit/328ff115cb67280f7bdc70074ff605c8962470e4

다음 단계

다음은 문제를 추가로 조사하기 위한 몇 가지 옵션입니다.

지원 센터에 연락

로그인 https://appcenter.ms/apps 하고 화면 오른쪽 아래 모서리에 있는 채팅 아이콘을 클릭합니다. 최상의 결과를 위해 다음을 사용하여 티켓을 여는 것이 좋습니다.

  • 관찰 요약
  • 문제에 대한 연구의 세부 정보 및 인용
  • 앱 이름 & 빌드 ID와 같은 필수 정보를 포함하여 실패한 빌드에 대한 URL
  • 실패와 비교할 빌드 전달 URL(해당하는 경우)