티스토리 뷰

 

📖 목차

1. CI가 무엇인가
2. 왜 fastlane + GitHub Actions를 사용하는가
3. fastlane 설치 및 실행

 


1. CI가 무엇인가

 

 

https://www.civo.com/blog/the-role-of-the-ci-cd-pipeline-in-cloud-computing

 

CI(Continuous Integration)란 무엇인가?

 

CI는 "지속적인 통합"을 의미한다. 처음에는 여러 개발자가 GitHub에 코드를 올리고 병합하는 단순한 과정을 말하는 줄 알았다. 하지만 CI는 이보다 더 넓은 범위를 포함한다.

CI는 개발자가 코드를 저장소(repository)에 푸시(push)한 후, 자동화된 테스트와 빌드 과정을 처리하는 일련의 프로세스를 의미한다.

 

 

왜 CI가 필요한가?

 

협업 프로젝트에서 코드 병합 후, 오류를 확인하기 위해 직접 pull 받아 실행하고 테스트하는 경우가 많다. 이 과정은 수동적이고 비효율적이다.

예를 들어, 병합된 코드가 예상치 못한 오류를 발생시키거나, 기존 기능에 영향을 주는 경우를 개발자가 직접 확인하려면 시간이 많이 소요된다. 특히, 코드가 복잡하거나 테스트 범위가 넓을수록 이러한 작업은 더 어려워진다.

 

 

CI가 해결하는 문제

 

CI는 이런 반복적이고 수고스러운 과정을 자동화하여 해결한다.

 

  • 자동 빌드 및 테스트: 코드가 저장소에 푸시되면, 자동으로 빌드와 테스트가 실행된다.
  • 결과 검증: 테스트 결과를 통해 병합 전 문제를 사전에 파악할 수 있다.
  • 품질 유지: 코드 변경 사항을 정기적으로 통합하고 테스트하여, 품질을 유지하며 안정적인 개발을 진행한다.

 

 


2. 왜 fastlane + GitHub Actions를 사용하는가

 

 

fastlane 외에도 CI/CD 도구로 Jenkins를 사용할 수 있다. 하지만 Jenkins는 주로 서버 개발자들에게 친숙한 도구로, 설정과 운영에 있어 학습 비용이 많이 드는 단점이 있다고 한다,,,,

 

처음으로 CI를 구축하기 때문에 비교적 쉽게 설정할 수 있는 fastlane을 선택하게 되었다.

 

 

GitHub - fastlane/fastlane: 🚀 The easiest way to automate building and releasing your iOS and Android apps

🚀 The easiest way to automate building and releasing your iOS and Android apps - fastlane/fastlane

github.com

 

 

fastlane란 무엇인가?

 

fastlane은 iOS와 Android 앱 개발에 특화된 CI/CD 자동화 도구로, 반복적이고 시간 소모적인 작업들을 간소화하고 효율적으로 처리할 수 있도록 도와준다.

 

이 포스팅에서는 CI 구축 과정에 대해 다루고 있지만, Fastlane은 CI뿐만 아니라 CD(지속적 배포)까지 자동화할 수 있어 전체적인 CI/CD 프로세스를 효율적으로 관리할 수 있다.

 

  • iOS 및 Android 지원: 플랫폼에 상관없이 통합 관리 가능
  • 자동화에 초점: 빌드, 테스트, 배포 등 모든 과정을 자동화

 

 

GitHub Actions란 무엇인가?

 

GitHub Actions는 GitHub에서 제공하는 CI/CD 플랫폼으로, 코드의 빌드, 테스트, 배포 과정을 자동화한다.

 

  • 완전한 GitHub 통합: GitHub 저장소 이벤트(푸시, PR 등)에 반응하여 워크플로를 실행
  • 워크플로 정의: YAML 파일을 통해 작업 흐름을 설정 가능

 

 

fastlane과 GitHub Actions의 관계

 

fastlane과 GitHub Actions는 함께 사용하면 강력한 CI/CD 환경을 구축할 수 있다.

 

  • fastlane: 실제로 빌드, 테스트, 배포 작업을 수행하는 자동화 도구
  • GitHub Actions: fastlane을 호출하여 전체 CI/CD 프로세스를 관리

 

✏️ fastlane + GitHub Actions 활용한 CI 흐름

 

1️⃣ GitHub 저장소에 코드 commit 및 push

 

2️⃣ GitHub Actions 트리거

 

1. 코드가 push되면 GitHub Actions workflow가 실행되도록 설정했다면 자동으로 workflow가 실행된다.

2. .github/workflows/ 디렉토리에 있는 workflow 파일(.yml)의 규칙에 따라 빌드, 테스트 작업이 시작된다.

 

3️⃣ fastlane 호출

 

1. GitHub Actions가 정의된 스크립트에 따라 fastlane을 실행한다.

2. fastlane은 fastfile에 작성된 작업 흐름(빌드, 테스트)을 기반으로 다음 단계를 수행한다.

 

4️⃣ fastlane이 자동화된 테스트 수행

 

 

1. fastlane이 코드 변경 사항에 대해 사전 정의된 테스트를 실행한다.

2. 테스트 결과를 GitHub Actions 로그 및 상태에서 확인할 수 있다.

 

 

이렇게 함으로써,
개발자는 병합 전/후에 테스트 코드가 잘 동작하는지, 코드에 오류가 없는지 따로 확인할 필요 없이, GitHub Actions의 로그와 상태를 통해 모든 결과를 한눈에 확인할 수 있다!

3. fastlane 설치 및 실행

 

 

fastlane 설치 및 세팅

 

 

  • Xcode Command Line Tools 설치
xcode-select --install

 

  • fastlane 설치
sudo gem install fastlane

 

  • fastlane 세팅
fastlane init

 

여기까지 하면 아래와 같이 fastlane을 어떻게 사용할지에 대해 묻는다.

CI 구축만 할 것이기 때문에 4번을 선택하였다. 다른 번호를 선택하면 CD 관련해서 기본적인 세팅을 처리해 주는 것 같다.

 

 

그리고 엔터키만 계속 누르면 설치가 완료된다.

 

그럼 Gemfile, Appfile, Fastfile들이 생성된 걸 확인할 수 있다.

 

➡️ Gemfile, Appfile, Fastfile 개념 확인

 

더보기

1. Gemfile

: Ruby 프로젝트에서 사용하는 의존성 관리 파일, Gemfile을 통해 Fastlane과 관련된 라이브러리(젬, gem)를 관리한다.

 

2. Appfile

: fastlane의 설정 파일로, 앱에 관련된 공통 설정을 저장하는 곳이다.

 

3. Fastfile

: fastlane의 핵심 설정 파일로, Fastlane이 수행할 자동화 작업을 정의한다. 여러 작업을 lane이라는 단위로 구분하여 관리할 수 있다.

 

 

  • Fastfile에 테스트 scheme 추가

작업 단위인 lane에 tests를 써서 테스트를 실행할 수 있다.

test scheme를 찾아서 넣어준다.

platform :ios do
  desc "Description of what the lane does"
  
  lane :tests do
    run_tests(scheme: "scheme 넣기")
  end
end

tests 외에 beta는 testflight 올리는 걸 설정하고, release는 앱 스토어에 올릴 수 있다고 한다.

 

 

  • fastlane으로 test 코드 실행

다음과 같은 명령어를 터미널에 입력하면 테스트 코드들이 실행되고 테스트 결과도 확인할 수 있다고 한다.

fastlane tests

 

 

오류 발생 1

 

fastlane tests 명령어를 입력했는데 다음과 같은 오류가 생겼다,,,,

Unable to locate Xcode. Please make sure to have Xcode installed on your machine 이런 오류가 발생했다. ㅎㅎ

 

 

찾아보니 Command Line Tools를 Xcode로 설정하지 않았던 게 문제라고 한다.

그래서 다음과 같이 Settings -> Locations -> Command Line Tools -> Xcode로 설정하니 해결되었다.

 

 

 

오류 발생 2

 

ㅎㅎ 두 번째 오류다~~~~

 

xcodebuild: error: Unable to find a destination matching the provided destination specifier:

Xcode build 에러로 뭔가 destination이 안 맞다고 하는 것 같아서 찾아보니 Test Target의 Deployment info가 해당 project의 Deployment info와 맞지 않아서 발생한 문제였다.

 

 

그래서 Test의 Deployment info를 프로젝트와 동일하게 iOS 14로 맞추니 해결되었다.

 

 

이제 진짜 성공이다~~ ㅎㅎㅎㅎ

 

 


 

다음 챕터에서는 GitHub Actions 사용법을 알아보면서 fastlane과 GitHub Actions를 결합하여 CI를 최종적으로 구축해 보자!!

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
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
글 보관함