Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

cchanmi

[iOS] Github Action 도입기 - build & test 본문

iOS

[iOS] Github Action 도입기 - build & test

cchanmi 2024. 11. 30. 00:30

Smeem 프로젝트를 1년 6개월 동안 진행하면서 반복적인 빌드, 테스트 코드 후 통과 과정, 배포에 많은 시간이 소요됨을 느꼈습니다.

이러한 반복적인 과정들을 통해 불편함을 겪었고 해당 내용들을 자동화하면 어떨까?라는 생각이 들어서 Github Action을 통해 CI/CD를 

이번 포스팅에서는 빌드와 테스트 코드 통과 과정을 자동화하는 내용을 작성하려고 합니다.

 


 

목표는 develop 브랜치로 push 하면 build와 테스트를 실행시키는 것이었습니다.

 

그렇다면 원하는 명령어의 workflow를 작성해 주어야 하는데... yml 문법은 들여쓰기가 문법이기 때문에 이를 유의하여 작성해 주어야 합니다.

 

# This workflow will build a Swift project
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-swift

name: Swift

on:
  push:
    branches: [ "develop" ]
  pull_request:
    branches: [ "develop" ]

jobs:
  build:

    runs-on: macos-latest

    steps:
    - uses: actions/checkout@v4
    - name: Set Xcode version
      run: sudo xcode-select -switch /Applications/Xcode_16.app
    - name: Resolve Dependencies
      run: xcodebuild -resolvePackageDependencies
      working-directory: ./Smeem-iOS
    - name: Create Debug.xcconfig
      run: echo "${{ secrets.DEBUG_CONFIG }}" > ./Smeem-iOS/Debug.xcconfig
    - name: Build
      run: xcodebuild clean test -project Smeem-iOS/Smeem-iOS.xcodeproj -scheme Smeem-Dev -destination 'platform=iOS Simulator,name=iPhone 15,OS=17.2'

 

smeem 프로젝트 같은 경우는 xcode 버전, 의존성, local로 들고 있는 config 파일들을 추가로 설정해 주어야 했기 때문에 해당 내용들이 추가되어 있습니다.

각자 본인 프로젝트에 맞는 설정을 입력하시면 될 것 같습니다.

 

xcodebuild는 xcode 프로젝트 및 workspace의 build, query, analyze, test, archive 작업을 수행할 수 있는 command입니다.

 

- name: ... 명령어는 Github Action이 실행될 때 분단을 나눠는 역할을 해 줍니다. 예를 들어 위에서의 yml 파일을 작성하고 이를 빌드한다면

 

 

이런 형태로 실행이 되며, 진행 상황이나 에러가 발생했을 때도 디버깅이 유용해서 - name: 문법으로 나눠서 하는 방법을 추천드립니다.

 

저는 xcodebuild를 통해 build, test를 자동화하기 위해 해당 명령어를 작성해 주었습니다.

 

- name: Build
      run: xcodebuild clean test -project Smeem-iOS/Smeem-iOS.xcodeproj -scheme Smeem-Dev -destination 'platform=iOS Simulator,name=iPhone 15,OS=17.2'

 

 

차례대로 살펴보면

 

- clean -> build products 및 intermediate 파일을 build root에서 제거

- text -> 빌드가 성공적으로 진행된 후에 scheme과 destination을 지정하여 테스트 진행

 

이후로는 프로젝트 확장명을 입력하고

 

-project Smeem-iOS/Smeem-iOS.xcodeproj

 

그에 따른 스킴을 설정하고,

만약 본인 프로젝트가 dev, release로 나누어져 있다면 해당 상황에 맞는 스킴을 입력해야 합니다.

 

-scheme Smeem-Dev

 

그리고 destination을 통한 플랫폼, 기기명과 OS 버전을 명시해 주면 됩니다.

 

-destination 'platform=iOS Simulator,name=iPhone 15,OS=17.2'

 

 

 

에러에 관한 내용은 다른 포스팅 글로 기록해 두겠습니다.

Comments