-
Notifications
You must be signed in to change notification settings - Fork 1
๐ fastlane
ํ ์คํธ ๋ฐ ๋ฐฐํฌ๊น์ง์ ์ผ๋ จ์ ๊ณผ์ ์ ์๋ํํ์ฌ ๋ถํ์ํ ์์ ์๊ฐ์ ๋จ์ถํด์ฃผ๋ ์๋ํ ํด
-
์คํฌ๋ฆฐ์ท ์๋ํ
- ๊ตญ๊ฐ๋ณ ์ธ์ด๋ก ๋ฒ์ญ๋ ์ฑ ๋ชจ์ต์ ์๋์ผ๋ก ์บก์ณ ๋ฐ ์ฑ์คํ ์ด์ ๋ฑ๋ก
-
๋ฒ ํ ๋ฐฐํฌ ์๋ํ
- ex) iOS์ ๋ฐฐํฌํ๊ธฐ ์ ํ ์คํธ ์ฑ์ ์ฌ๋ฆฌ๋ TestFlight์ ์๋์ผ๋ก ์ฌ๋ผ๊ฐ๊ฒ๋ ๋ง๋ค๊ธฐ
- ์ฑ ๋ฐฐํฌ ์๋ํ(์ฌ์ฌ๊น์ง)
-
์๋ํ๋ ์ฝ๋ ์๋ช
- ex) ์๋ช ์ธ์ฆ์๋ฅผ ํ ๊ฐ์ ๊ณต์ ํ๊ณ ๋์ผํ ํ๋ก์ ํธ์์ ๊ฐ์ ์ธ์ฆ์๋ก ๊ด๋ฆฌ๋ ์ ์๊ฒ ํจ.(๋ฌด๋ ค ๊ฐฑ์ ๊น์ง ํด์ค)
-
Fastlane์ ์ํ Xcode ์ปค๋งจ๋๋ผ์ธ ํด์ ์ค์น
xcode-select --install
-
fastlane์ ์ค์น
brew install fastlane
์ฝ์ฝ์ํ์ ํ๋ก์ ํธ์ ์ ์ฉํ๋ ๊ฒ๊ณผ ๋์ผํ๊ฒ fastlane๋ ๋์ผ
ํ๋ก์ ํธ ์์น์์ ์๋ ๋ช ๋ น์ด ์ ๋ ฅ
fastlane init
- ์๋ํ๋ ์คํฌ๋ฆฐ์ท ์ต์
- ์๋ํ๋ TestFlight์ ๋ฒ ํ ์ฑ ๋ฐฐํฌ
- ์๋ํ๋ ์ฑ ๋ฐฐํฌ
- ์ฌ์ฉ์ ์์ ์ต์
1, 2, 3์ ๊ฒฝ์ฐ ์์ ์ค๋ช ํ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ์๋ํ ์ต์ ์ ์ ๊ณตํ๊ณ 4๋ฒ์ ํตํด ์ฌ์ฉ์๊ฐ ์ํ๋ ์๋ํ๋ฅผ ๊ตฌํํ ์ ์๋ค.
์ต์ ์ ์ ํํ๊ณ ๋์ ์ฑ์ ID, ๊ฐ๋ฐ์ ์ ๋ณด๋ฅผ ์ ๋ ฅํ๊ฒ ๋๋ฉด fastlane ํด๋๊ฐ ์์ฑ๋๋ค.
ํด๋น ํด๋ ๋ด๋ถ์๋ Appfile, Fastfile, Matchfile, Pluginfile์ด ๋ค์ด์๋ค.
-
ํ์ผ ๋ณ ์ค๋ช
- Appfile์ ์ฑ์ ID, (iOS์ ๊ฒฝ์ฐ apple id, team id ๋ฑ) ๋ฐฐํฌ์ ํ์ํ ํ๊ฒฝ์ ๋ํ ์ ๋ณด๋ฅผ ๋ณด๊ดํ๋ ํ์ผ๋ก fastlane์ ๋งค๋ฒ ์คํ๋ ๋๋ง๋ค Appfile์ ๊ธฐ์ ๋ ๋ด์ฉ์ ๋ณด๊ณ ํ๊ฒฝ์ ์ธํ ํ๊ฒ ๋ฉ๋๋ค.
- Fastfile์ fastlane์ ํตํด ์ด๋ค ์์ ์ ํ ์ง โlaneโ์ ์ ์ํ๋ ํ์ผ์ด๊ณ ๊ฐ lane์ ํด๋น lane์ด ์ด๋ค โactionโ ์ ํ ์ง ์ ์ํ๋ ๊ฒ์ผ๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค.
- Matchfile์ ์๊ฒฉ ์ ์ฅ์์์ ๋ชจ๋ ์ธ์ฆ์๋ฅผ ๊ด๋ฆฌํ๋ ค๊ณ ์ ํ ๋ ์ธ์ฆ์์ ์ข ๋ฅ์ ์๊ฒฉ์ ์ฅ์์ ์ฃผ์๋ฑ์ ์ ๋ ฅํ๋ ํ์ผ์ ๋๋ค. Fastlane์ย [match](https://docs.fastlane.tools/actions/match/)ย ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์์ฑ๋ฉ๋๋ค.
- Pluginfile์ fastlane์ ๋ชจ๋ ํ๋ฌ๊ทธ์ธ์ ๊ด๋ฆฌํ๋ ํ์ผ์ ๋๋ค.
- ์ ์ฑ์ ๊ฒฝ์ฐย ios_build_and_uploadย ๋ผ๋ lane์ย build_app()ย ๊ณผย firebase_app_distribution()ย ์ด๋ผ๋ fastlane์ด ์ ๊ณตํ๋ action์ ์ฌ์ฉํ์ฌ iOS ์ฑ์ ๋น๋ํ๊ณ firebase์ ๋ฐฐํฌํ๋๋ก ์ค์ ํ์์ต๋๋ค.
- (์ถ์ฒ: https://danawalab.github.io/common/2022/08/23/Fastlane.html)
fastlane์์ ์ ๊ณตํ๋ action๋ค
์ผ๋จ ๋ฐฐํฌ๋ ๋ฌด์ํ๊ณ apple Login๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ๊ณ์ ์ ๊ฐ์ ํ๋กํ์ผ๋ก ํ์ด ๊ณต์ ํด์ผํ๋ฏ๋ก code Signing์ ๊ณต์ ํ๋ Match๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์ค๋ช ํ๊ฒ ๋ค! (MusicKit๋ ์ฌ๊ธฐ ํฌํจ๋๋ ค๋?)
cert and sigh ๋ฐฉ์์ด๋, ๋ก์ปฌ์ ์ ์ฅ๋ ์ธ์ฆ์์ ๊ฐ์ธ ํค๊ฐ ์๋ ์ง ํ์ธ ํ, ์ธ์ฆ์์ ํ๋กํ์ผ์ ๋ค์ด๋ฐ์์ฃผ๋ ๋ฐฉ์
Match ๋ฐฉ์์ด๋, ์๊ฒฉ์ ์ ์ฅ๋ ์ธ์ฆ์์ ๊ฐ์ธ ํค๋ฅผ ํ์ธ ํด ํด๋น ๊ธฐ๊ธฐ์ ์ธ์ฆ์์ ํ๋กํ์ผ์ ๋ค์ด๋ฐ์ ์ฃผ๋ ๋ฐฉ์
์ฐ๋ฆฌ๋ ๋์ผํ ํ๋ก์ ํธ์์ ์์ ํด์ผํ๊ธฐ์ ๊ฐ๊ฐ์ ๋ก์ปฌ์ ๊ฐ์ง๊ณ ์๊ธฐ์๋ ๋ฒ๊ฑฐ๋ก์์ผ๋ก Match ๋ฐฉ์์ ๋ํด ์์๋ณด์.
https://ios-development.tistory.com/1164
์ด ๋ถ๋ถ์ ๋ํด์๋ ์์ ์ฌ์ดํธ๋ฅผ ์ ๊ฐ ๋ณต๋ถํ ๊ฒ๋ง ๊ฐ์ ๋งํฌ๋ก ๋จ๊ฒจ๋์์ต๋๋คโฆ
์ถํ์ ์ ๋ฆฌํด์ ์์ฑํ๊ฒ ์ต๋๋ค.
- ์ฝ์ง ๊ด๋ จ https://ho8487.tistory.com/m/149
[[CI/CD] fastlane + Github Actions์ ์ด์ฉํ iOS ๋ฐฐํฌ ์๋ํ ๊ตฌ์ถ](https://medium.com/@kyuchul2/ci-cd-fastlane-github-actions%EC%9D%84-%EC%9D%B4%EC%9A%A9%ED%95%9C-ios-%EB%B0%B0%ED%8F%AC-%EC%9E%90%EB%8F%99%ED%99%94-%EA%B5%AC%EC%B6%95-6c777a63aa13)
[iOS) Code Signing ๊ณผ Fastlane match ์ค์ ](https://gyuios.tistory.com/272#google_vignette)
[[Fastlane] Fastlane Match ๋์ ํด๋ณด๊ธฐ (๊ณ์๋ ์ฝ์ง)](https://ho8487.tistory.com/m/149)
[[fastlane] fastlane ํ๊ฒฝ๋ณ์ ์ฌ์ฉ ๋ฐฉ๋ฒ (.env.default ์ฌ์ฉํ์ฌ ๊ฐ์ฅ ๊ฐ๋จํ match ์ฌ์ฉ๋ฐฉ๋ฒ, Certificate ๊ฐฑ์ ๋ฐฉ๋ฒ)](https://ios-development.tistory.com/1164)
[Getting Started - fastlane docs](https://docs.fastlane.tools/codesigning/getting-started/)
[fastlane - App automation done right](https://fastlane.tools/)
[Fastlane์ ์ด์ฉํ ์ฑ ์๋ ๋ฐฐํฌ](https://danawalab.github.io/common/2022/08/23/Fastlane.html)
- ๐ ๊ธฐํ์ ๊ณผ์ ๊ณผ ์๋
- ๐ swift6 ๋์ ๊ธฐ โ @unchecked Sendable์ ์ฌ์ฉํด์ผ๋ง ํ๋ ์ด์
- ๐ WaveForm(ํํ) ์ ์๊ธฐ
- ๐ ํ๋ก์ ํธ ๊ตฌ์กฐ์ ์ด์
- ๐ ํ๋ฉด ์ ํ(Game NavigationController)
- ๐ DIContainer๋ฅผ ์ฌ์ฉํ ๊ณ๊ธฐ
- ๐ AudioHelper ์ ์๊ธฐ
- ๐ ์์ ํ๋ ์ด์ด์ compact ๋ฒ์ ์ ์๊ธฐ
- ๐ Combine์ ์ด์ฉํ ๋ฐ์ดํฐ ์ ๋ฌ
- ๐ ํ์ด์ด๋ฒ ์ด์ค๋ฅผ ์ฐ๋ฉฐ ์์๋ ์ผ
- ๐ ์บ์ฑ ๋ชจ๋ ๊ตฌํ๊ณผ ๋ฌธ์ ์
- ๐ ๋ก๊ทธ ์์คํ ์ ์๊ธฐ
- โ Data ๋ผ๋ฆฌ์ ๋น๊ต
- โ ํ๋ ์์ํฌ Reference ์์กํ๋ ๋ฌธ์
- โ actor ์์์ timer๊ฐ ์คํ๋์ง ์๋ ๋ฌธ์
- โ NSLayoutConstraint ์ต์ ๋ ๋ฌธ์
- โ ํ ์ด๋ธ ๋ทฐ๊ฐ ๋ณด๊ณ ์๋ ๋ฐฐ์ด๊ณผ bindํ๊ณ ์๋ ๋ฐฐ์ด ๊ฐ์ race condition ๋ฌธ์
- โ ํ ์คํธ๋ผ๋ฆฌ์ ๋ ๋ฆฝ์ฑ
- โ ๋คํธ์ํฌ ํ ์คํ ์ Error ํธ๋ค๋ง
- โ ์ฌ๋ฌ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ๋์ ์์ฒญ์, ๋ฐ์ดํฐ๊ฐ ๋ฐ์์ด ์๋๋ ์ด์ ํด๊ฒฐ
- โ ์์กด์ฑ framework ์ถ๊ฐ์ ๋ถ๋ฌ์ค์ง ๋ชปํ๋ ๋ฌธ์
- โ Timer๋ฅผ 6์ด ์ค์ ํด๋ ๋ ์คํ๋๋ ๋ฌธ์
- โ Music Kit Data Request ์๋ฌ
- โ DI Container ์์ ์์ฑํ ์ธ์คํด์ค๊ฐ ๋์์ ์กด์ฌ ํ๋ ์ด์