iOS

[iOS] Xcode Cloud를 사용해 CI/CD 구축하기

Hatchling.dev 2024. 2. 27. 16:33

(편의상 편한 말투로 작성하는 점 이해 부탁드립니다.😅)

(부정확한 정보가 있을 수 있습니다. 지적 환영🤗)

 

안녕하세요! Hatchling입니다.

오늘은 Xcode Cloud는 무엇이고 어떻게 활용하는지에 대해 간단한(?) 설명을 해보려고 합니다!

 

혹시 여러분은 CI/CD에 대해 알고 계신가요? 저도 들어만 봤지 실제로 써보는 건 처음인데 정말 신세계를 경험한 느낌입니다😄

CI(Continuous Integration): 지속적인 통합. 빌드/테스트를 자동화

CD(Continuous Deployment): 지속적인 배포. 배포 자동화

 

기존에는 Github Actions + Fastlane 조합으로 CI/CD를 많이 설계해 사용해 왔는데 WWDC21에서 등장한 Apple에서 제공하는 CI/CD 서비스입니다.

 

물론 누구나 쓸 수 있는 건 아니고 Xcode의 버전이 13.4.1이상이면서 Apple Developer Program 멤버십이 필요합니다. 월 25시간은 무료지만 그 이상을 사용하고 싶다면 별도로 돈을 내고 구독을 해야합니다.. (무료가 있는게 어디인가 싶은…)

 

저는 Fastlane을 써보지 않았지만 Fastlane이 어렵다고 하시는 분들도 XcodeCloud는 정말 쉽다고 말씀 많이 하시더라고요! 제가 보기에도 정말 쉬우니 이제 시작해볼까요?

 

1. Workflow 생성하기

XcodeCloud에서 CI/CD를 사용하기 위해서는 workflow를 생성해야 합니다.

App Store Connect에서 생성할 수도 있지만 오늘은 Xcode에서 생성하는 방법으로 설명하도록 하겠슴다!

 

Xcode를 키면 Integrate라는 메뉴 안에 있는 Create Workflow 버튼을 눌러 생성합니다.

 

그럼 아래처럼 CI/CD를 적용할 프로덕트를 선택하는 화면이 나옵니다. 저는 TestApp을 선택하고 넘어가겠습니다.

 

2. Setting

그럼 본격적으로 workflow를 세팅하는 화면이 나오는데 왼쪽 각 메뉴들이 있죠? 하나씩 순서대로 보겠습니다.

 

먼저 General입니다. workflow의 이름과 설명을 적을 수 있는 필드와 연결할 Repository와 Workspace를 선택하도록 나와있습니다.

Xcode Cloud는 Github의 올라간 내용을 토대로 CI/CD를 진행하기 때문에 Repository와 연결해줍니다.

 

다음은 Environment입니다. 여기서는 빌드 환경 설정을 한다고 생각하시면 됩니다.

어떤 Xcode Version으로 빌드할 것인지 정할 수 있습니다. (Xcode Version은 계속 업데이트되기 때문에 각 버전에서 성공적으로 빌드가 되는지 테스트하기 위함인 것 같습니다.)

그 아래에는 Environment Variable이 있는데 custom build scripts를 위한 환경변수를 정의하는 부분입니다.

예를 들면 API Key처럼 보안 이슈 때문에 Github에 없는 값을 빌드 및 테스트에 사용하기 위한 변수를 만들 수 있습니다.

 

 

다음은 Start Conditions입니다.

CI/CD를 시작하는 조건을 설정하는 곳이라고 생각하시면 됩니다.

기본적으로 Branch Changes가 추가되어 있는데 옆에 + 버튼을 누르면 Branch Changes, Pull Request Changes, Tag Changes, On a Schedule For a Branch, Munual Start와 같이 다양한 조건을 지정할 수 있습니다.

아래는 Branch Changes에 main branch로 설정하면 해당 브랜치가 변경되었을 때 CI/CD를 진행합니다.

Branch Changes

 

아래는 On a Schedule for a Branch. 정해진 날짜 및 시간에 CI/CD를 진행합니다.

On a Schedule for a Branch

 

 

다음은 Actions입니다.

Actions는 Test, Build, Analyze, Archive 같은 Action들을 추가하고 관리할 수 있습니다.

아래 사진은 Archive를 만드는 Action입니다. AppStore에 배포할지 선택할 수 있네요!

 

 

다음은 Post-Actions 입니다.

post action을 추가하면 CI/CD의 진행 상황을 알림(Slack, E-mail)으로 받을 수 있습니다.

기본적으로 추가된 항목은 없네요. 직접 추가해 보도록 하겠습니다.

Post-Actions Tab
Post-Actions Notify

 

 

기본적인 설정들을 완료했으니 이제 저장을 해봅시다. Save를 눌러주세요!

눌렀다면 아래 화면처럼 Gitgub와 연결하라는 화면이 나옵니다.

Grant Access를 눌러 연결해봅시다. 별거 없습니다 ㅎㅎ github에 로그인하고 연결 버튼만 눌러주면 됩니다!

 

 

연결을 완료했다면 아래처럼 나옵니다. Next를 눌러 넘어가봅시다!

 

 

자 이제 끝났습니다. Complete를 눌러 넘어가면 Start Build 화면이 나오네요.

Start Build를 누르면 build를 시작하는데 눌렸다는 피드백이 없어서 눌린 건가?? 하는데 App Store Connect에 들어가서 진행 중인 CI/CD를 확인할 수 있습니다.

(저는 눌린지 모르고 5번이나 눌렀…..😅)

 

15번 시도 끝에 성공..

 

자 이렇게 오늘은 Xcode Cloud를 활용해 CI/CD를 사용해 봤습니다!

저는 Fastlane을 써보지 않아서 비교는 어렵지만 Xcode Cloud는 구축하기도 쉽고 실제 프로젝트를 유지보수 할 때 많이 편리할 것 같네요😊

 

 

 

출처

https://developer.apple.com/kr/xcode-cloud/

https://medium.com/@talq44/xcode-cloud를-사용한-ci-cd-환경-도입기-1-xcode-cloud-workflow-설명-67fff56e0d96