Xcode Cloud란?

Havi·2021년 6월 10일
2

WWDC

목록 보기
6/7

공식 문서

Overview

Xcode Cloud는 CI/CD (continuous integration and delivery) 시스템이다.

Git을 source control로 사용하며, 우리의 codebase에 품질과 안정성을 보장해주는 integrate system을 제공해준다.

Xcode Cloud를 사용하면 다음과 같은 장점이 있다.

  • 우리의 Code를 자동으로 Build하고 Test한다.
  • 빈번하게 자동으로 시뮬레이터로 앱을 애플의 device에 테스트해준다.
  • 심각한 이슈가 생기기 전에 먼저 이슈를 알아채고, Xcode Cloud로 부터 노티를 받을 수 있다.
  • 새로운 버전의 앱을 팀 멤버와 테스터들에게 TestFlight로 배포한다.
  • App Store에 publish하기 전에 app review가 가능한 새로운 버전의 앱을 만든다.
  • Xcode와 Apple's cloud infrastructure를 사용하여 collaborative 하게 소프트웨어를 개발할 수 있다.

The Importance of Automated Building and Testing

전형적인 개발 프로세스는, 코드를 바꾸고, 프로젝트를 빌드하고, 시뮬레이터나 테스트 디바이스에서 앱을 실행한다. 이 프로세스는 XCTest를 통한 unit test나 interface test를 통해 local한 변화를 verify하는 것을 포함할 수도 있다.

이러한 task들을 실행하는 시간을 Xcode가 줄일 수 있다. 이것은 특히 복잡한 앱/프레임워크일 때 사실이다. Xcode Cloud를 사용하면 여러개의 simulated devices에서 빌드, 런, 테스트를 적은 시간으로 할 수 있다.

변화를 검증한 뒤 Xcode Cloud는 자동으로 email로 결과를 알려준다.

Continuous Delivery

continuous integration(CI)의 또다른 측면은 continuous delivery(CD)이다. 자동적인 빌딩과 테스팅은 높은 품질의 앱과 프레임워크를 개발하는데 있어서 중요하지만, 팀 멤버와 테스터들의 hands-on 테스트를 대채하지 못한다. Xcode Cloud가 코드의 변화를 검증하면(CI), 자동으로 새로운 버전의 앱을 테스터들에게 TestFlight로 배포한다.(CD) 혹은 우리만의 서버에 exported app archive나 프레임워크를 업로드 할 수 있다.

Collaborative Software Development with Xcode Cloud

Git을 이용한 소스 컨트롤은 우리의 코드 변경 사항을 manage하는 것을 도와준다. 예를 들어 git branches를 사용하면 안정적인 코드베이스에 영향을 주지 않고 변경할 수 있다. 또한 branch를 사용하면 팀으로 개발하기 좋다. 그러나 merge하고, conflict 해결하고, 검증하는 것은 시간이 많이 걸린다.

코드리뷰를 만들고 merge를 쉽게하기 위해 SCM 제공자들은 pull request(PR)을 제공한다. PR을 만들면 우리의 팀은 코드 change를 리뷰할 준비가 된 것을 알고, 풀리퀘를 진행할 수 있다.

팀으로 개발하거나 동시에 많은 변화가 있는 개발이라면 이렇게 브랜치를 나눠 PR을 보내는 것이 보통이다.

Xcode 13 이후에서는 PR을 만들고, 보고, comment를 달고, merge할 수 있다. ( Bitbucket Server, GitHub, or GitHub Enterprise를 쓰고있다면)

사용하려면 다음 문서 참고
https://developer.apple.com/documentation/xcode/configuring-your-first-xcode-cloud-workflow

wwdc
https://developer.apple.com/videos/play/wwdc2021/10267/
https://developer.apple.com/videos/play/wwdc2021/10268/
https://developer.apple.com/videos/play/wwdc2021/10269/

profile
iOS Developer

0개의 댓글