안녕하세요. iOSangBong입니다.
바로 이어서 GitLab Runner 설정을 해보겠습니다.
https://iosangbong.tistory.com/36
[iOS] GitLab CI + Fastlane CI/CD 적용기 - 2
안녕하세요. iOSangBong입니다.출근하자마자 블로그를 작성하려고 하는데요. 이런 유지보수?를 진행할때마다 얘기를 하면 일정을 할당을 해주는게 아닌회사 임원이 원하는 기능이 먼저 이기 때문
iosangbong.tistory.com
2편에서 이어지는 내용입니다.
3️⃣ GitLab Runner 등록 & 실행
기존에 Runner는 설치를 했었으니 바로 등록을 해봅시다.
url 하고 Token은
프로젝트 > Settings > CI/CD > Runners 에서 가져오면 됩니다.
gitlab-runner register
Enter the GitLab instance URL:
→ Runner URL 입력
Enter the registration token:
→ Runner Token 입력
Enter a description for the runner:
→ mac-runner
Enter tags for the runner:
→ ios, mac
Enter optional maintenance note for the runner:
→ (그냥 엔터)
Enter an executor:
→ shell
이걸 입력하면 Runner 등록이 되고 Runner를 실행해 줍시다.
gitlab-runner start
이걸 실행하니까 에러가 발생하면서 GitLab에서는 이렇게 뜨는데

gitlab-runner run
이렇게 입력해주면

러너가 활성화가 됩니다~~
생각보다 러너 실행은 간편한거같네요
맥 재부팅시 runner를 자동 실행 시켜주려면
brew services start gitlab-runner
추후 삭제하고 싶거나 리스트를 확인하고 싶으면 아래를 실행하면 됩니다.
gitlab-runner unregister --all-runners
gitlab-runner list
4️⃣ .gitlab-ci.yml 작성
1. 하위 프로젝트 yml 파일 작성
자 이게 마지막 .gitlab-ci.yml 작성 해줍시다.
yml 파일 작성 하기 전에 어떻게 구현할지 다시 떠올려보면
SPM 태그 push
↓
SPM CI에서 A앱 CI, B앱 CI를 직접 호출
↓
A앱 CI, B앱 CI 실행 (태그 없이!)
- SPM 버전 업데이트
- 빌드버전 변경
- 아카이브
↓
TestFlight 업로드!
이런 구조로 yml 파일을 작성해 줍시다.
일단 해당 프로젝트에서 파일을 만들어줍니다.
touch ~/.gitlab-ci.yml
open ~/.gitlab-ci.yml
Fastlane 의 경우에는 .xcodeproj 파일이 있는 곳에서 생성을 해줬지만
yml 파일은 프로젝트 루트쪽에 있어야 합니다.
A앱 (루트)
├── .gitlab-ci.yml ← 여기로 이동!
├── A project/
│ ├── A.xcworkspace
│ └── fastlane/
└── README
이렇게 하지 않으면 나중에 에러가 발생하니 위치를 잘 잡아주세요~
그 다음에는 yml 파일을 작성해줍니다.
stages:
- deploy
variables:
LANG: "en_US.UTF-8"
LC_ALL: "en_US.UTF-8"
deploy_testflight:
stage: deploy
tags:
- iOS
- mac
only:
- tags
- triggers
script:
- cd "\(A앱)"
- export FASTLANE_XCODEBUILD_SETTINGS_TIMEOUT=120
- fastlane custom_lane
SPM에서 트리거가 발생하면 A 프로젝트에서 fastlane custom_lane을 실행한다고 작성을 해줬습니다.
2. GitLab 세팅
그리고 이제 2편에서 Fastfile에 작성했던 key_id, issuer_id, key_filepath를 Variables에 등록해줍니다.
위치는 GitLab -> Project -> Settings -> CI/CD -> Variables에 있습니다.

첨엔 Protected를 켜야되나? 했지만 키는 순간 CI 진행중
GitLab Variables 에 설정한 값을 못 읽는 에러가 발생하게 됩니다...
전부 OFF 시켜주세요!
그리고 SPM에서 태그 발행시 트리거를 발생시키기 위핸 트리거도 만들어줍니다.
GitLab -> Project -> Settings -> CI/CD -> Pipeline triggers에 있습니다.

Add Trigger를 하면 SPM yml파일에서 사용할 Token이 발행됩니다.
3. SPM yml 파일 작성
일단 동일하게 yml 파일을 만들어 줍니다.
touch ~/.gitlab-ci.yml
open ~/.gitlab-ci.yml
만들어준 다음 Pipeline triggers 안내 글에 적혀있는 대로 작성해줍니다.
stages:
- trigger
trigger_mullen:
stage: trigger
tags:
- iOS
- mac
only:
- tags
script:
- curl -X POST --form token="\(token)" --form ref="(브랜치명)" "\(원하는 프로젝트의 GitLab 파이프라인 url)"
이렇게 yml 파일을 작성한 다음 깃 커밋 푸시 해줍니다.
4. 확인
그러면 이제 태그를 발행한 후 확인 해봅시다.
프로젝트 > CI/CD > Pipelines 에 들어가보면
1. SPM Pipelines

2. A앱 Pipelines

이렇게 passed 된 항목이 생기고 클릭하면 상세 로그도 볼수 있어서
에러 발생하면 왜 안되는지 확인하고 수정하면 될것 같습니다!
Fastlane으로 TestFlight 업로드도 잘 됐네요....
동일하게 A앱, B앱 둘다 적용해서 쓰면 정말 좋을 것 같네요!
AI 활용해서 에러로그를 분석해서 원인을 찾고 해결하고 한 2일도 안걸린것 같네요.
구글링으로만 했다면 금방 포기했을것 같습니다... 클로드 👍🏻
다음에는 다른걸로 찾아오겠습니다~
그럼 다들 즐코딩하세요. 그럼 이만~
'Swift' 카테고리의 다른 글
| [iOS] GitLab CI + Fastlane CI/CD 적용기 - 4 (0) | 2026.03.25 |
|---|---|
| [iOS] GitLab CI + Fastlane CI/CD 적용기 - 2 (0) | 2026.03.13 |
| [iOS] GitLab CI + Fastlane CI/CD 적용기 - 1 (0) | 2026.03.12 |
| [iOS][Swift] LocalAuthentication Face ID & Touch ID 생체인식 간단하게 알아보기 (0) | 2024.08.03 |
| [iOS][Swift] shake motion 알아보기 (0) | 2023.08.22 |