nyancoder

WWDC 2021 - Explore Xcode Cloud workflows 본문

WWDC/WWDC 2021

WWDC 2021 - Explore Xcode Cloud workflows

nyancoder 2021. 7. 15. 02:50

원본 영상: https://developer.apple.com/videos/play/wwdc2021/10268/

 

Start conditions

  • Xcode의 Report Navigator에 새 클라우드 탭이 추가되었습니다.
  • 팀의 Workflow와 빌드를 확인할 수 있습니다.

  • Pull Request를 받았을 때, 매번 자동으로 동작하는 Workflow를 구성해볼 수 있습니다.
  • 앱을 자동으로 분석, 테스트, 내 앱을 분석, 테스트, 결과를 생성할 수 있습니다.
  • 개발팀에게 결과를 알릴 수 있습니다.
  • 팀 구성원들에게 앱을 전달할 수 있습니다.

  • Product -> Xcode Cloud -> Manage Workflow를 선택해서 새 Workflow를 구성할 수 있습니다.

  • Workflow관리 화면에서 + 버튼을 눌러 자신의 앱을 선택합니다.

  • Workflow를 추가하는 화면에서 Name을 수정하여 "Pull Requests"와 같은 원하는 이름을 선택할 수 있습니다.
  • Restrict Editing을 활성화하여 일부의 구성원만 Workflow를 수정할 수 있게 할 수 있습니다.
  • 기본 저장소 설정은 로컬의 저장소 설정을 기반으로 자동으로 구성됩니다.

  • 시작 조건은 Pull Request가 발생할 때마다 실행되는 것처럼 다양한 조건을 정해줄 수 있습니다.

  • 저장소에서 병합할 기준 브랜치와 가져올 브랜치를 선택하여 매번 자동으로 머지할 수 있습니다.

  • 실행 조건을 Custom Conditions로 선택하여 특정 파일이나 폴더가 변경되었을 때로 설정할 수 있습니다.
  • Auto-cancel Builds가 선택된 경우 실행될 때 이전의 실행 중인 Workflow를 취소합니다.

  • 브렌치가 변경되었을 때 실행하는 조건은 변경이 일어날 때 항상 실행되며 Pull Request를 무시합니다.
  • 태그가 변경될 때 실행은 새로운 태그가 생성될 때 빌드됩니다.
  • 반복 일정에 따라 빌드를 실행할 수 있습니다.

 

Set up environment

  • 최신 릴리즈나 베타 버전을 사용하여 빌드할 수 있습니다.
  • XCode에서 로컬의 일부 파일이 변경되면 해당 부분만 빌드하여 빠르게 결과를 얻는 것처럼 Xcode Cloud도 동일하게 빠른 결과를 얻을 수 있습니다.
  • Clean을 선택하면 항상 새로운 상태에서 처음부터 빌드를 하여 오래 걸리지만 배포될 앱을 빌드할 때 유용합니다.

  • Xcode Cloud API를 통해 데이터에 접근하고 Workflow를 구성하고 빌드를 시작하거나 사용자 정의된 스크립트를 실행할 수 있습니다.
  • 이러한 API를 이용하여 원하는 도구를 만들어 사용할 수 있습니다.

  • 환경 변수를 사용하면 소스 저장소에 보관하고 싶지 않은 정보를 환경변수로 제공할 수 있습니다.
  • 또한 추가적인 보호를 위해 환경 변수를 비밀로 표시할 수 있습니다.

 

Configure actions

  • Xcode Cloud를 사용하면 빌드, 정적 분석, 테스트, 결과물 보관을 수행할 수 있습니다.

  • Action 탭에서 Archive를 선택하여 원하는 플랫폼과 Scheme을 선택할 수 있습니다.
  • 원한다면 Provisioning profile이나 code signing identities 없이 결과물을 TestFlight에 등록하거나 App Store의 배포를 위해 사용할 수 있습니다.

  • 테스트 작업을 추가하려면 + 버튼을 눌러 Test를 선택하여 추가할 수 있습니다.

  • 테스트의 경우 Requirement 항목에서 반드시 테스트가 통과해야 하는지를 선택할 수 있습니다.
  • 반드시 통과해야 함을 선택하는 경우 테스트가 실패할 때 전체 빌드 과정이 실패합니다.

  • Use Scheme Settings을 통하여 특정 테스트를 실행할 수 있습니다.

  • Xcode Cloud는 다양한 화면 크기의 시뮬레이터를 모아둔 권장 옵션을 제공합니다.
  • 하지만 원하는 경우 특정 시뮬레이터나 특정 버전을 선택할 수 있습니다.

  • 분석 작업을 추가하려면 + 버튼을 눌러 Analyze를 선택하여 추가할 수 있습니다.
  • 테스트와 동일하게 반드시 통과해야 하는지를 선택할 수 있습니다.

  • 경우에 따라서는 추가적인 작업 없이 컴파일 여부를 체크하거나 빌드의 오류를 검출하기 위해서 빌드만 수행할 수 있습니다.
  • 이러한 경우 Build의 액션을 사용하여 검사할 수 있습니다.

 

Configure post-actions

  • 모든 처리가 끝나면 알림을 보내거나 TestFlight에 결과물을 올릴 수 있습니다.

  • 빌드에 성공한 경우에 항상 메시지를 보낼 수 있으며, 실패 이후 성공한 경우에만 보내거나, 보내지 않을 수도 있습니다.
  • 빌드가 실패한 경우에도 항상 메시지를 보내거나, 성공 이후 실패한 경우에만 보내거나, 보내지 않을 수 있습니다.

  • Post-Actions 메뉴에서 +를 눌러 Notify를 선택하면 알림을 보낼 수 있습니다.
  • 알림을 보낼 대상으로 Slack과 통합하여 메시지를 보낼 수 있으며 Slack내의 원하는 채널을 등록하면 해당 채널에 메시지가 전달됩니다.
  • 이메일을 보낼 수 있으나 기본적으로 모든 사용자는 빌드에 대한 알림을 자동으로 수신합니다.
  • 특정 사용자를 제외하거나 그룹 이메일을 추가하거나 할 때 이메일 항목을 사용해서 설정할 수 있습니다.

  • 배포하는 기능에서는 내부 테스터에게 전달하거나 외부 테스터에게 전달할 수 있습니다.
  • 내부 테스터를 통해서 개발 팀 구성원에게 Clean 되지 않은 상태로 빠르게 빌드하여 전달할 수 있습니다.
  • 외부 테스터는 릴리즈 브랜치에 권장되며, 베타 앱 리뷰를 받은 다음 등록되어 외부 테스터 및 App Store에 배포할 수 있습니다.

  • App Store Connect에서 이전과 동일한 방식으로 TestFlight 그룹을 관리할 수 있습니다.
  • 여러 개의 내부 및 외부 그룹이 있으며 각 그룹을 Workflow에서 사용할 수 있습니다.

  • 내부 TestFlight 그룹과 함께 자동으로 배포하려면 우선 Archive 작업을 추가해야 합니다.
  • 그다음 Archive의 배포 옵션을 내부 테스트로 설정해야 합니다.
  • 마지막으로 TestFlight Internal Testing을 추가해야 합니다.

  • Post-Actions에서 + 버튼을 눌러 Internal Testing을 추가할 수 있습니다.
  • 이후 Groups에서 + 버튼을 눌러 원하는 Test Flight의 내부 테스터 그룹을 설정할 수 있습니다.

  • TestFlight External Testing으로 배포하려면 시작 조건이 단일 특정 Branch여야 합니다.
  • 이후 빌드가 항상 Clean 되도록 옵션을 선택해야 합니다.
  • 마지막으로 저장 결과물의 배포 설정을 TestFlight 및 App Store로 설정해야 합니다.
  • 이후 과정은 내부 태스팅과 거의 동일합니다.

 

Recommended strategies

  • Release를 위해서는 Release용으로 지정된 브렌치에서 Workflow를 실행해야 합니다.
  • 이후 전체 테스트를 수행하고 결과를 Archive 한 다음 외부 TestFlight 그룹과 사용자에게 배포해야 합니다.

  • 예제 Workflow를 보자면, Workflow가 항상 릴리즈 브렌치의 변경사항을 빌드하기 위해서 시작 조건을 릴리즈 브렌치의 모든 변경으로 설정합니다.

  • 캐싱으로 발생할 수 있는 문제를 피하기 위해 항상 빌드가 처음부터 이루어지도록 Clean 옵션을 선택해줍니다.
  • 안정적인 결과를 얻을 수 있도록 특정 버전의 Xcode와 macOS를 고정해서 선택합니다.

  • 테스트에서는 다양한 시뮬레이터에서 테스트를 수행합니다.

  • Archive  작업을 추가하고 대상을 TestFlight 및 App Store로 설정합니다.

  • Post-Actions항목에서 외부 테스터 그룹을 포함하여 배포를 설정합니다.

  • 또 다른 Workflow예제는 매일 밤 테스트를 수행하는 것입니다.
  • 매일 밤 정해진 시간에 최대한 많은 시뮬레이터에서 테스트를 수행합니다.
  • 테스트 실패는 QA팀에 보고되며, 테스트가 목적이므로 배포를 수행하지는 않습니다.

  • 이러한 테스트를 위해서는 시작 조건에서 월요일부터 금요일까지 오전 1시처럼 특정 시간을 선택하도록 조건을 설정합니다.

  • 최신 Xcode 버전을 선택하여 새 도구가 출시될 때에도 앱이 성공적으로 빌드되는지 확인합니다.

  • 여러 가지 테스트 계획과 시뮬레이터들을 선택합니다.

  • 정적 분석을 실행하도록 추가하고 이 작업도 통과해야 하도록 처리합니다.

  • 따라서 이러한 테스트나 정적 분석 중 하나라도 실패하면 QA 팀은 메시지를 전달받을 수 있습니다.
  • 빌드 성공은 따로 알리지 않고 모든 실패에 대한 이벤트를 전달하도록 합니다.
  • 원하는 Slack 채널이나 이메일 주소를 추가합니다.

  • Xcode의 Product 메뉴 아래에 Manage Workflows가 있으며, 팀이 사용하는 모든 워크플로를 살펴볼 수 있습니다.

 

목차: https://nyancoder.tistory.com/2

Comments