티스토리 뷰

사이드 프로젝트 팀에서 신규 프로젝트 기획이 진행중이다.

오랜만에 찾아온 신규 프로젝트를 위해 개발 환경 세팅을 진행했다.

 

사이드 프로젝트인 만큼

그동안 못해봤던 기술들을 새로 적용해보고 경험해보고 싶었다. 

 

그중 우선적으로 적용하기로 한 것은 두가지다. 

 

1. Tuist 4 +

  - 그동안 사용했던 Tuist 는 3.3이였나.. 버전에 머물러 있었다.

  - 회사에서 사용하는 Tuist 는 메이저 버전을 올리기가 쉽지 않았다.

  - 4.0 에서 큰 변화가 있었다고 들었는데 아직 못해봤음.

  - 그러던 사이 벌써 4.29 까지 출시했음. 나 말고 모든게 빠른듯.

  - tuist test 도 있는데 한번 돌려보기로..

2. Github Action

  - CI/CD로 Xcode Cloud 를 사용했었기 때문에 경험해보지 못했었음

  - public 레포에서는 무료라던데, 이번에 잘 사용해보자.

 

Tuist 4로 프로젝트 뼈대를 구축해보니, 아직까지 느끼기엔 편했다.

mise 로 설치, 환경을 관리해주는 것도 편했고.

특히, Manifest 가 매번 새로 생성되지 않는 점이 굉장히 생산성에 유리해졌다.

그리고 여러가지 측면에서 기존 대비 편리함을 느꼇었다!

 

이 포스팅은 Github Action 에 대한 내용이니 Tuist 내용은 줄이고,

 

Github Action 활용 계획

Github Action 은 Github 내의 액션을 트리거로써, 

미리 입력해둔 작업(주로 테스트 / 배포)을 클라우드에서 실행할 수 있다.

 

나는 Github Action 을 이용해 다음과 같은 간단한 환경 구축을 계획하고 있다. ( 아직 테스트만 했음 ㅋㅋ )

develop 브런치로 Pull Request 가 생성되면 test 수행
develop 브런치에 commit이 생성되면(merge) dev / prod 앱 각각 테스트플라이트에 배포

 

시간이 있는 지금 타이밍에 이렇게 환경을 구축해두면 편하게 개발할 수 있을 것 같고,

상상속의 존재였던 TDD 흉내도 좀 내보고 싶었다.

 

로컬 테스트 환경 구축

클라우드에서 진행되는 Github Action 의 커맨드는 당연히 내 머신에서도 문제없이 진행되어야 한다.

먼저 간단한 테스트코드를 만들었고, Test 모듈과 Scheme 을 만들어서 테스트 환경을 구축해보았다.

import XCTest
@testable import CoreKit

final class CoreKitTest: XCTestCase {

    override func setUpWithError() throws {
        // Put setup code here. This method is called before the invocation of each test method in the class.
    }

    override func tearDownWithError() throws {
        // Put teardown code here. This method is called after the invocation of each test method in the class.
    }

    func testExample() throws {
        ThisIsCoreKit.something()
        let result = ThisIsCoreKit.testFunctionSample() // int 0 을 리턴함
        XCTAssertEqual(0, result)
    }
}

 

위 코드처럼 테스트코드 딱 하나 있는 테스트타겟을 scheme 에 담아 테스트를 진행할 예정이다.

기존 클라우드에서 테스트를 돌릴 때는 fastlane 을 사용했었는데, 

이번 github action 에서는 xcodebuild 커맨드를 사용할지 혹은 그대로 fastlane 을 구축할지 고민이였다.

 

그런데 Tuist Test 라는 것이 있었다. 

우연히 발견했는데 원래 있었던건지? Tuist 4 에 추가된건지는 모르겠다.

그래서 무지성으로 돌려봤는데, 난 아무것도 안했는데 테스트 바로 성공해버림.

허무하게 성공해버린 tuist test

 

이건 삘이다! 싶어서 바로 이걸로 테스트 환경을 구축해보았음

 

Github Action 테스트 환경 구축

고민이였다. 나는 mise 로 tuist 최신버전을 설치했는데 클라우드에서도 동일하게 해야하는건가?

찾아보니 mise 가 이러한 빌드 환경을 동일하게 구축할 수 있는 툴이였다.

 

기존 tuist 에서는 .tuist-version 파일에 tuist 버전을 명기해두었는데,

mise 를 이용해 설치하면 아래처럼 mise 가 관리하는 tool 의 버전이 작성된다.

.mise.toml

그리고, mise install 을 이용해 해당 tool 에 맞는 버전을 자동으로 설치해주더라. 상당히 편리해짐

그래서 워크플로우를 짤때도 mise로 구축한 환경을 이용하면 더이상 버전을 신경쓰지 않아도 된다.

 

그렇게 구축한 워크플로우는 다음과 같다. 찾아보니 Tuist 가 만들어둔 워크플로우 샘플이 있어서 참고했다.

name: unitTest

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

jobs:
  run-unitTest:

    runs-on: macos-latest

    steps:
    - uses: actions/checkout@v4
    - name: Install Mise
      run: |
          curl https://mise.run | sh
          mise install
    - name: Install Tuist dependencies
      run: mise x -- tuist install
    - name: Run tests
      run: mise x -- tuist test Weave2-UnitTest --no-selective-testing

 

워크플로우는 간단하다.

1. mise 설치

2. depencencies 설치

3. 테스트 수행

 

물론 아직까지 테스트코드 하나이기도 하고, 개발이 진행되면 워크플로우는 수정될수도 있지만 잘 작동된다.

 

테스트가 실패하도록 코드를 수정해 Pull Request를 생성하면

의도한대로 테스트가 실패하는 것도 확인할 수 있다. - PR#1

 

처음 예상했던 것 보다 쉽게 Github Action 을 구축을 했다.

이렇게 바닐라 상태에서 개발 환경 설정을 먼저 해두니 깔끔하고 빨리 작업을 하고 싶은 느낌이다.

 

추후 배포까지 작업한다면 fastlane 을 넣어주는게 나을수도 ?!

 

 

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