cchanmi
[iOS] Github Action 도입기 - build & test 과정에서 겪은 error 모음 본문
저는 Github Action을 도입하면서 각종 에러에 대해 4일 가량의 시간이 걸렸었는데요.
생각보다 Github Action 도입 관련 블로그에 에러를 해결했다는 내용들은 정리가 되어 있지 않아서 과정+오류 해결 내용도 같이 정리해 보려고 합니다.
일단 저희 프로젝트에 적용할 CI는 빌드와 테스트 코드 자동화였습니다.
처음 명령어를 입력했을 때는 code 74 error가 발생했습니다.
code 74 error xcodebuild 버전과 현재 프로젝트 xcode 버전이 맞지 않는 문제
이때 당시에 xcode 버전을 16으로 올렸었는데, 그로인해 프로젝트 포멧 버전이 70으로 올라갔었습니다.
제가 올린 xcode 버전과 xcodebuild의 버전과 호환이 되지 않는 문제였습니다.
GithubAction에서는 xcode 버전을 특정할 수 있기 때문에, xcode 버전을 설정해 주어 해결했습니다.
- name: Set Xcode version
run: sudo xcode-select -switch /Applications/Xcode_16.app
- name: Build
run: xcodebuild clean test -project Smeem-iOS/Smeem-iOS.xcodeproj -scheme Smeem-iOS -destination 'platform=iOS Simulator,name=iPhone 13 Mini,OS=17.0'
code 70 error
xcodebuild를 'platform=iOS Simulator,name=iPhone 13 Mini,OS=17.0'에 등록해 놓았는데 요청한 기기를 찾을 수 없다는 에러였습니다.
이를 해당 명령어를 추가하여 사용가능한 디바이스 목록을 확인하고, 지원 가능한 버전으로 수정해 주었습니다.
해당 명령어를 1회성으로만 사용해도 될듯합니다.
추가된 코드
- name: List available devices
run: xcrun simctl list devices
변경된 코드 -> 기기 디바이스, 버전 변경
- name: Build
run: xcodebuild clean test -project Smeem-iOS/Smeem-iOS.xcodeproj -scheme Smeem-Dev -destination 'platform=iOS Simulator,name=iPhone 14 Pro,OS=17.2'
code error 65 - 프로젝트 의존성 관련 문제
ComputeTargetDependencyGraph는 프로젝트 의존성 관련된 문제였는데, cocoapods, spm이 올바르게 설치되어 있지 않는 이슈일 수 있다는 사실을 알게 되었고, SPM을 재설치해 보았지만 해결되지는 않았고 직접 의존성을 해결하는 명령어를 통해 해결했습니다.
- name: Resolve Dependencies
run: xcodebuild -resolvePackageDependencies
code error 66 - 의존성 해결 과정에서 디렉토리에서 프로젝트 파일 찾을 수 없는 문제
해당 디렉토리에서 프로젝트 파일을 찾을 수 없다는 에러였습니다.
- name: Resolve Dependencies
run: xcodebuild -resolvePackageDependencies
working-directory: ./Smeem-iOS
밑에 경로를 추가하였지만 그래도 다시 error 65번이 발생했습니다.
이는 TCA 라이브러리를 지우면서 해결이 되었는데 정확한 원인을 알 수가 없네요 ㅠㅠ 아시는 분 있으면 댓글 부탁드려요
저는 TCA 라이브러리를 제거할 예정이었기 때문에 지우고 해결이 되었지만 TCA를 설치해야 하시는 분들은 해당 깃허브 내용을 참고해 주세요
https://github.com/pointfreeco/swift-composable-architecture/discussions/2845
code error 65 - 프로젝트 의존성 관련 문제
현재 저희 프로젝트는 프로젝트에 중요한 정보들을 config 파일에 저장하고, 이를 gitignore로 숨긴 다음에 팀원들과 로컬로 가지고 있는 방법을 사용하고 있습니다. 이때문에 config 파일이 없어서 빌드가 불가능하다는 에러였습니다.
- name: Create Debug.xcconfig
run: echo "${{ secrets.DEBUG_CONFIG }}" > ./Smeem-iOS/Debug.xcconfig
환경 변수를 통해 config 파일의 내용들을 숨겨서 올려 주고, 이를 맞는 파일트리에 설정해 주어 해결했습니다.
전체 코드
# 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: List available devices
run: xcrun simctl list devices
- 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 build -project Smeem-iOS/Smeem-iOS.xcodeproj -scheme Smeem-Dev -destination 'platform=iOS Simulator,name=iPhone 14 Pro,OS=17.2'
'iOS' 카테고리의 다른 글
[iOS] SwiftUI의 Property Wrapper (0) | 2024.12.10 |
---|---|
[iOS] Github Action 도입기 - build & test (2) | 2024.11.30 |
[RxSwift] RxSwift의 메모리 누수에 대해서 (1) | 2024.09.08 |
[iOS] UIKit+Combine 환경에서 CollectionView Cell 바인딩 문제 해결 (1) | 2024.09.07 |
[iOS] RxSwift 정리 (1) | 2024.09.04 |