์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- components
- UIRefreshController
- ์ฑ๋ง๋ค๊ธฐ
- CRUD
- Encodable
- map
- MongoDB
- ํ๋ก๊ทธ๋๋จธ์ค
- ์๊ณ ๋ฆฌ์ฆ
- AVAudioPlayer
- SWiFT
- mongoose
- nodejs
- Firestore
- ์ง๋ฒ๋ณํ
- Filter
- ExpressJS
- Mac
- Reduce
- Decodable
- Firestore CRUD
- Cloud Firestore
- DispatchQueue
- Core Data
- String.Index
- ์ฑ๋์์ธ
- Figma
- ios
- RxSwift
- Codable
- Today
- Total
Focus On Develop ๐ค๐ค
[iOS] Fastlane์ ํตํ ๋น๋/๋ฐฐํฌ ์๋ํ ๋ณธ๋ฌธ
[iOS] Fastlane์ ํตํ ๋น๋/๋ฐฐํฌ ์๋ํ
๋๋ฆฌ๋ฌ์ดํ 2021. 4. 9. 17:12์ค๋์ App Store๋ก ์ฑ์ ๋ฐฐํฌํ๋ ๊ณผ์ ์ Fastlane์ ํตํด ์๋ํ ํ๋๊ฑธ ํด๋ณด๊ณ ,
๊ทธ ๊ณผ์ ์์ ๋ง๋ ์๋ฌ๋ ํด๊ฒฐ๋ฐฉ๋ฒ์ ์ ๋ฆฌํ๋ ค๊ณ ํฉ๋๋ค!!
์ง๊ธ ์ ๊ฐ ๊ฐ๋ฐํ๋ ์๋น์ค๋ ํ๊ท ์ ์ผ๋ก ๋ณด๋ฉด ํ๋ฌ์ 1~2ํ ์ ๊ท ๋ฒ์ ์ ์ถ์ ํ๋ ๊ฒ ๊ฐ์์.
์ฌ์ค ๋ฐฐํฌํ๋ ๋น๋๋ ๊ทธ๋ ๊ฒ ๋ง์ง ์๊ณ , ๊ทธ ๊ณผ์ ์ด ๋ง์ด ๋ณต์กํ ๊ฒ(?)๋ ์๋๋ผ์..
๋ฑํ ๋ถํธํ๊ณ ๊ท์ฐฎ๋ค๊ณ ์๊ฐ์ ์ํ๋ ๊ฒ ๊ฐ์์!
๊ทธ๋ฐ๋ฐ.. ์ต๊ทผ์ ๊ฐ์๊ธฐ ์๋ํ๋ฅผ ํด์ผ๊ฒ ๋ค, ๋ผ๊ณ ์๊ฐ์ด ๋ฌธ๋ ๋ค์๋๋ฐ์!
์ฑ์คํ ์ด์ ์ฑ์ ๋ฐฐํฌํ๊ณ , ์ ๋ก๋ ์๋ฃ๋์๋ค, ํ ์คํธ ํ๋ผ์ดํธ ๋ฐฐํฌ๋์๋ค, ๋ฑ๋ฑ ํ ์คํฐ ์กฐ์ง์๊ฒ ๊ณต์ ๋ฅผ ํด์ผํ์ฃ .
๊ทผ๋ฐ ์ฑ์คํ ์ด์ ์ ๋ก๋ํ๊ณ , ๊ทธ ํ์ ๋ด๋ถ์ ์ผ๋ก ์ฒ๋ฆฌํ๋ ์๊ฐ์ด ์ ํด์ ธ์์ง ์๊ณ ๊ฐ๋ณ์ ์ด์ฃ ~?
๊ทธ๋ผ ๊ทธ๋๋ง๋ค ๋ชจ๋ํฐ๋ง ํ๋ฉด์ ์ฒ๋ฆฌ๋๋ ๊ณผ์ ์ ๋ค์ฌ๋ค๋ณด๊ณ ์์ด์ผ ํ๋๋ผ๊ตฌ์ ใ ใ
๊ทธ๊ฑธ ์ ๋ฒ๊ฑฐ๋ก์ด ๊ณผ์ ์ด๋ผ๊ณ ์๊ฐํ์ง ์์์๋์ง ๐
์๋๊ฐ ๊ธธ์ด์ก๋ค์!!
๋จผ์ fastlane ๊ณต์ ํํ์ด์ง์์! ์ด ๊ฐ์ด๋๋ฅผ ์ฐธ๊ณ ํ๋ฉด์ ์งํํ์ต๋๋ค~!
docs.fastlane.tools/getting-started/ios/setup/
Setup - fastlane docs
Getting started with fastlane for iOS Setup Xcode for fastlane xcode-select --install Installing fastlane fastlane can be installed multiple ways. The preferred method is with Bundler. fastlane can also be installed directly through with Homebrew (if on ma
docs.fastlane.tools
๊ธฐ์กด์ ์ฐ๋ฆฌ๊ฐ ์๋์ผ๋ก App Store์ ์ฑ์ ๋ฐฐํฌํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผํ์ฃ ~?
- ๋ฒ์ ๊ณผ ๋น๋๋ฅผ ์ฌ๋ฆฐ๋ค.
- ๋น๋ํ๊ณ , ํ์์ cocoapods ๋ฅผ ์ ๋ฐ์ดํธํ๊ฑฐ๋ ์ธ์คํจํ๋ค.
- Analyze ์คํํ๊ณ ๊ธฐ๋ค๋ฆผ
- Archive ์คํํ๊ณ ๊ธฐ๋ค๋ฆผ
- Archive๊ฐ ๋ค ๋๋ฉด App Store Connect ์ ์ ๋ก๋
- TestFlight ์ถ์, Slack์ ์ ๋ก๋ ๋ฐ ๋ฐฐํฌ๊ฐ ์๋ฃ๋์์์ ๊ณต์
- ์ค๋น๊ฐ ์๋ฃ๋๋ฉด ์ฌ์ฌ ์์ฒญ, ์ฌ์ฌ ํต๊ณผํ๋ฉด ์ ๋ฐ์ดํธ ๋ก๊ทธ ์์ฑํ ์คํ ์ด ์ถ์
์์งํ ์๋์ผ๋ก ํด๋ ๋ง ๋ฒ๊ฑฐ๋ก์ด ์์ ์ ์๋๊ฑฐ์์. ๊ทธ๋๋ ์ฐ๋ฆฌ๋ ๊ฐ๋ฐ์์์์~? ์๋์ผ๋ก ํ๊ฒ๋ ํด์ผ์ฃ !!
์ ๊ณผ์ ์ค์ ํ๋์์ผ๋ก ํ์ํ ๋ถ๋ถ์ ์๋ํ ํด๋ณผ๊ฑฐ์์! ๐ค
XCode Command Line Tool ์ค์น
๋จผ์ xcode Command Line Tools๋ฅผ ์ค์นํด์ผ ๋์.
๋ง์ฝ ์ค์น๋์ด ์๋ Xcode์ ๋ฒ์ ์ด Beta๋ฒ์ ์ด๋ฉด,(ํน์ Mac OS ๋ฒ์ ์ ๊ทธ๋ ์ด๋ ๋ฑ์ ๋ค๋ฅธ ์ด์ ๋ก) Command Line Tools์ด ์ค์น๋์ด ์์ง ์์๊ฑฐ์์.
xcode-select --install
๋ง์ฝ ์ค์น๋์ด ์์ง ์๋ค๋ฉด ์ ๋ช ๋ น์ด๋ก CLT๋ฅผ ์ค์นํด์ค๋๋ค!
์ค์น๋์ด ์๋ ์ํ์์ ์คํํด๋ ์๊ด์์ด์. ์ด๋ฏธ ์ค์น๋์ด ์๋ค๊ณ ์๋ ค์ค๋๋ค! ๐
Fastlane ์ค์น
๋ค์์ fastlane์ ์ค์นํด์ค๋๋ค.
์ ๋ Homebrew๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์๋ ๋ช ๋ น์ด๋ก ์ค์นํ์ด์.
brew install fastlane
gem์ ์ฌ์ฉํ๋ ๋ฑ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ์ค์นํ๋ ค๋ฉด ํํ์ด์ง๋ฅผ ์ฐธ๊ณ ํด๋ณด์๊ธฐ๋ฅผ ๋ฐ๋์~ ๐
Fastlane Setting
์ค์น๊ฐ ์๋ฃ๋์์ผ๋ฉด, ํ๋ก์ ํธ๊ฐ ์๋ ๋ฃจํธ๋๋ ํ ๋ฆฌ๋ก ์ด๋ํด์, ์๋ ๋ช ๋ น์ด๋ฅผ ์คํํด์ฃผ์ธ์!
fastlane init
๊ทธ๋ผ ์ด๋ ๊ฒ ์ด๋ค ์์ ์ ์๋ํ์ฒ๋ฆฌ ํ๋๋ก ๋ง๋ค๋? ํ๊ณ ๋ณด๊ธฐ๋ฅผ ์ค๋๋ค.
์ ๋ ์ฑ์คํ ์ด์ ๋ฐฐํฌํ๋ ๊ฒ๊น์ง ํด๋ณด๊ธฐ๋ก ํ์ผ๋, 3๋ฒ์ ์ ํํด์ฃผ์์ด์.
์ฌ๊ธฐ์ ์ ๋ ์ด๋ฐ ์๋ฌ๋ฅผ ๋ง๋ฌ์ด์.
Unable to locate Xcode. Please make sure to have Xcode installed on your machine
์..? Xcode๊ฐ ์ค์น์๋์ด ์๋ค๊ณ ..!? ๋นํฉํ์ง ์๊ณ ๊ตฌ๊ธ๋ง ๐
Xcode Preference > Locations์์, Command Line Tools๋ฅผ ๋ช ์์ ์ผ๋ก ์ ํํด์ฃผ์ง ์์ ๊ฒฝ์ฐ์ ๋ง์น Xcode๋ฅผ ์ฐพ์ ์ ์๋ ๊ฒ์ฒ๋ผ ์๋ฌ ๋ฉ์ธ์ง๊ฐ ๋ฐ์ํ๋๋ผ๊ตฌ์!! ์ ๋ ์ด๊ฒ ์ค์ ๋์ด ์์ง ์์๊ณ , ํ์ฌ ์ฌ์ฉ์ค์ธ ๋ฒ์ ์ผ๋ก ์ง์ ํด์ฃผ์์ด์!
๊ทธ๋ฆฌ๊ณ ๋ค์ fastlane init ๐
์ค์ค~ ์ด๋ฒ์๋ ์๋ฌ๋ฅผ ์๋ฐ๊ณ ํต๊ณผํ์ด์!! Apple ๊ณ์ ์ ์ ๋ ฅํ๋ผ๊ณ ํ๋ค์.
๋ก๊ทธ์ธ ์ ํด์ฃผ์๊ตฌ์~!! ์ค๊ฐ์ app ์ ๋ํ P/W๋ฅผ ์ค์ ํด์ผ ํ๋ค๋ ์ด์ ๋ก ์งํ์ด ์๋์๋๋ฐ, ๊ทธ ํ๋ฉด์ ์บก์ณ๋ฅผ ๋ชปํด์ ๋ณด์ฌ์ค ์๋ ์๋ค์ ๐ญ ๋์ ์๋ฌ ๋ฉ์ธ์ง์ "app์ ๋ํ P/W๋ฅผ ์ค์ ํด์ผ ํ๋ฉฐ, ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ์ด๋ฌ์ด๋ฌํ๋ค"๋ผ๊ณ ์์ธํ๊ฒ ๋์์์ผ๋ ์ฒ์ฒํ ์ฝ์ด๋ณด์๊ณ ํด๋ณด์๊ธธ ๋ฐ๋์ ๐
์ค์ ํ๋ ๊ณผ์ ์์, ์ฑ์ metadata๋ฅผ fastlane์ ํตํด ๊ด๋ฆฌํ ๊ฑด์ง ๋ฌผ์ด๋ณด๋ค์!
์ ๋ ์ด๊ฑด ๊ด๋ฆฌํ์ง ์๊ธฐ๋ก ํ์ด์. ์ฌ๊ธฐ์ y๋ก ํด๋ดค๋๋, ์ฑ์คํ ์ด ์ ๋ก๋ ๊ณผ์ ์ metadata์ ๋ํ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ๋ณด์ฌ์ฃผ๋ฉด์, ์ด๋๋ก ์งํํ ๊น์? ๋ผ๋ ์ง๋ฌธ์ ํ๋ฒ ์๋ต์ ํด์ค์ผ ํ๋ ๊ท์ฐฎ์(?) ์ผ์ด ๋ฐ์ํฉ๋๋ค ๐
์ด์ฐจํผ metadata๋ ์ฑ ์ฌ์ฌ์์ฒญ ํ๊ธฐ ์ ์ ํ๋ฒ ๊ฒํ ํ ๊ฑฐ๋๊น ๊ด์ฐฎ์ ๊ฒ ๊ฐ์์ด์!!
๊ทธ๋ฆฌ๊ณ 2~3๋ฒ ์ธํ ๋ ๋ด์ฉ์ ์ค๋ช ํด์ฃผ๋ฉด์ ์ํฐ๋ฅผ ์น๋ผ๊ณ ํ๋ฉด ์ํฐ๋ฅผ ์ณ์ค๋๋ค.
์ธํ ์๋ฃ~ ๊ฐ๋จ-๐ง๐ป
Fastfile ์์ ํ๊ธฐ
๋ค์ ํ๋ก์ ํธ ๋ฃจํธ ๊ฒฝ๋ก๋ฅผ ๋ณด๋ฉด, fastlane์ด๋ผ๋ ๋๋ ํ ๋ฆฌ๊ฐ ์๊ฒผ์๊ฑฐ์์.
default_platform(:ios)
platform :ios do
desc "Push a new release build to the App Store"
lane :release do
increment_build_number(xcodeproj: "YOUR_PROJECT.xcodeproj")
build_app(workspace: "YOUR_PROJECT.xcworkspace", scheme: "YOUR_PROJECT")
upload_to_app_store
end
end
fastlane ํด๋์ ๋ค์ด๊ฐ๋ณด๋ฉด Fastfile์ด ์๋๋ฐ ์ด๋ฐ์์ผ๋ก ๊ธฐ๋ณธ์ ์ธ Script ํ์ผ์ ๋ง๋ค์ด์ค๋๋ค.
script๋ ๊ฐ๋ตํ๊ฒ ์ค๋ช ํ๋ฉด ์๋์ฒ๋ผ ๋์ํด์.
- lane :release do ๐ release๋ผ๋ fastlane ๋ช ๋ น์ด๋ฅผ ๋ง๋ค๊ณ , ์ด ๋ช ๋ น์ด๋ฅผ ์คํํ๋ฉด ์๋์ ๋์์ ์ํํด์ฃผ์ธ์.
- increment_build_number ๐ ํ์ฌ ๋น๋ ๋ฒ์ ์์ ํ๋๋ฅผ ์ฌ๋ ค์ฃผ์ธ์.
- build_app ๐ ์ฑ์ ๋น๋ํด์ฃผ์ธ์.
- upload_to_app_store ๐ ์ฑ์คํ ์ด์ ์ฑ์ ์ ๋ก๋ํด์ฃผ์ธ์.
์ฝ์ฃ ~?
Script์ ๋ํ ์์ธํ ๋ด์ฉ์ด๋ ์ถ๊ฐ๋ก ์ฌ์ฉํ ์ ์๋ Method๋ ์์์ ์๊ฐ๋๋ฆฐ ๊ณต์ ํํ์ด์ง์์ ์ฐพ์๋ณผ ์ ์์ด์.
๊ทธ๋ผ ๋ฐฐํฌํด๋ฌ๋ผ๋ ๋ช ๋ น์ด๋ฅผ ๋ง๋ค์์ผ๋, ํ๋ฒ ๋ฐฐํฌ๋ฅผ ํด๋ณด์ฃ !!
Fastlane์ผ๋ก ๋น๋, ๋ฐฐํฌํ๊ธฐ
์ฐ๋ฆฌ๊ฐ ์์์ ๋ง๋ค์๋ release๋ผ๋ ๋ช ๋ น์ด๋ฅผ ์คํํด๋ณผ๊ฒ์.
fastlane release
๋ญ๊ฐ ๋ง ๋น๋๋๊ณ ์์นด์ด๋น๋๊ธฐ ์์ํฉ๋๋ค!! ์ฒ์์ด๋๊น(?) ํ๋ฒ ์ง์ผ๋ด์ค๋๋ค ใ ใ
๋ณ์ผ ์์ด ๋ง๋ฌด๋ฆฌ ๋์๊ณ , ๋ช๋ถ ๋ค์ App Store Connect์์ ๋ณผ ์ ์๋ค๊ณ ํ๋ค์!! ๐
์๋ฃ๋๋ฉด ์ด๋ ๊ฒ script์์ ์ํํ๋๋ก ํ๋ Method๋ค์ ๋ํ ์ํ์๊ฐ ๋ฑ๋ฑ ์ ์ฒด์ ์ธ ํต๊ณ์ ๋ณด๋ฅผ ๋ฟ๋ ค์ฃผ๋ฉด์ ์๋ฃ๋๋ค์!
๊ทธ๋ฆฌ๊ณ ์ ์ ๊ธฐ๋ค๋ ค ๋ณด๋, App Store Connect์ ์ ์์ ์ผ๋ก ์ ๋ก๋ ๋ ๊ฑธ ๋ณผ ์ ์์์ด์!! ใ ใ
์ค์ผ์ด ์ข์.. ๊ทผ๋ฐ ์ฒ์์ ๋ชฉํ๋ก ์ก์ ๊ฒ๊ณผ๋ ๋ค๋ฅด์์..!?
์ ์ ๋ก๋ ๋๋ ๊ณผ์ ์ ๋ํ ํ์ง ์๊ณ ์๋ฃ๋๋ฉด ์์์ Slack์ผ๋ก ๊ณต์ ํด์ฃผ๊ธฐ๋ก ํ์์..!?
๋ค! ๊ทธ๋์ ์ง๊ธ๋ถํฐ๋ Slack๊ณผ ์ฐ๋์ ํด๋ณผ๊ฑฐ์์.
Fastlane ์์ ์ํ ํ Slack์ผ๋ก ๋ฉ์ธ์ง ๋ณด๋ด๊ธฐ
docs.fastlane.tools/actions/slack/
slack - fastlane docs
Create an Incoming WebHook and export this as SLACK_URL. Can send a message to #channel (by default), a direct message to @username or a message to a private group group with success (green) or failure (red) status. It is recommended to add the above actio
docs.fastlane.tools
์์ฆ์ ํ์ ํด๋ก ๋ฉ์ ์ ๋ ์๋ง ๋๋ถ๋ถ Slack์ ์ฌ์ฉํ ๊ฑฐ์์. ๊ทธ๋์ ๊ทธ๋ฐ์ง..
์ด๋ ๊ฒ ๊ณต์ ํํ์ด์ง์์๋ slack๊ณผ ์ฐ๋์ ์ด๋ ๊ฒ ํ์ธ์~ ํ๊ณ ์ ์ค๋ช ๋์ด ์๋ค์ ๐
์์์ fastlane/fastFile์์ ๋ช ๋ น์ด๋ฅผ ๋ง๋ค๊ณ Script๋ฅผ ์์ฑํด์คฌ๋ ๊ฒ์ฒ๋ผ Slack ๋ฉ์ธ์ง๋ฅผ ๋ณด๋ด๋๋ก lane์ ๋ง๋ค์ด ๋ณผ๊ฒ์.
lane :send_slack do
version = get_version_number(
xcodeproj: "PROJECT_NAME.xcodeproj",
target: "PROJECT_NAME"
)
build = get_build_number(xcodeproj: "PROJECT_NAME.xcodeproj")
slack(
message: "์ฑ์คํ ์ด ์
๋ก๋๊ฐ ์๋ฃ๋์์ต๋๋ค.",
channel: "#fastlanetest",
slack_url: "WEBHOOK_URL",
default_payloads: [:lane, :test_result, :git_branch, :git_author],
payload: {
"Version": version + " (" + build + ")"
}
)
end
๋ ์ฉ~ ๊ฑฑ์ ๋ง์ธ์!! ์์์ ํ๋ ๊ฒ์ฒ๋ผ ํ๋์ฉ ์ดํด๋ณผ๊ฑฐ์์.
- lane :send_slack do ๐ send_slack์ด๋ผ๋ ๋ช ๋ น์ด๋ฅผ ๋ง๋ค๊ณ , ์๋์ ๊ฐ์ ๋์์ ์ํํ ๊ฑฐ์์.
- get_version_number ๐ ์ฑ์ ๋ฒ์ ์ ๊ฐ์ ธ์ค์ธ์.
- get_build_number ๐ ์ฑ์ ๋น๋๋ฒํธ๋ฅผ ๊ฐ์ ธ์ค์ธ์.
- slack() ๐ Slack ๋ฉ์ธ์ง๋ฅผ ๊ตฌ์ฑํด์ฃผ์ธ์. ๋ด์ฉ์ ( ) ์์ ์๋ ๋ด์ฉ์ฒ๋ผ์!
- message ๐ ๋ฉ์ธ์ง ํ์ดํ์ ์ด๋ ๊ฒ ํด์ฃผ์ธ์.
- channel ๐ ์ด ์ฑ๋์ ๊ณต์ ํด์ฃผ์ธ์.
- slack_url ๐ ์ด ์ฑ๋์ url์ ์ด๊ฑฐ์์.
- default_payloads ๐ ๋ํดํธ๋ก ์ด๋ฐ์ด๋ฐ ์ ๋ณด๋ฅผ ๋ฃ์ด์ฃผ์ธ์.
- payload ๐ ์ถ๊ฐ๋ก ์ด๋ฐ ์ ๋ณด๋ฅผ ๊ฐ์ด ๋ณด๋ด์ฃผ์ธ์.
์ฝ..์ฃ ..!? ์ ๋ ์ด๋ค ๋ฒ์ , ์ด๋ค ๋น๋๋ก ํ ์คํธํ ์ง ๊ฐ์ด ๊ณต์ ํ๊ธฐ ์ํด ๋ฒ์ ๊ณผ ๋น๋๋ฒํธ๋ฅผ ๊ฐ์ด ์ ์กํ๊ฒ๋ ํด์คฌ์ด์.
get_version_number ์ด๋ฐ ๋ ์๋ค์ fastlane action ์ด๋ผ๊ณ ํด์.
์์ฒญ ๋ค์ํ action์ด ์๊ณ , ์์ธํ ๋ด์ฉ์ ๊ณต์ํํ์ด์ง ์ฌ๊ธฐ์ ์ ๋์์๋ต๋๋ค.
Slack ๋ฉ์ธ์ง๋ฅผ ๊ตฌ์ฑํ๋ ๋ถ๋ถ๋ ๊ณต์ ํํ์ด์ง์ ์์ธํ๊ฒ ์ค๋ช ์ด ์์ผ๋, ์ถ๊ฐ๋ก ํ์ํ๊ฑด ์ฐพ์์ ์ฌ์ฉํด๋ ์ข๊ฒ ๋ค์ ๐ง๐ป
์ฌ๊ธฐ์ ํ๊ฐ์ง, slack_url์ webhook URL์ ์ ๋ ฅํด์ฃผ๋ฉด ๋๋๋ฐ์~!
์ฌ๋์์ ํน์ ์ฑ๋์ ๋ํ webhook url์ ์ด๋ป๊ฒ ์ป์๊น์~?
Slack ์ฑ๋ webhook url ๊ฐ์ ธ์ค๊ธฐ
๋จผ์ ์ฌ๋์ ๊ณต์ ํ , ์ํ๋ ์ฑ๋์ ์ ํํด์ฃผ์ธ์!
๊ทธ๋ฆฌ๊ณ ์๋จ์ ํ์ดํ์์, Administration > Manage apps๋ฅผ ์ ํํด์ฃผ์ธ์!
๊ทธ๋ฌ๋ฉด ์ฌ๋์ ์ถ๊ฐํ ์ ์๋ ํ๋ฌ๊ทธ์ธ(?)๋ค์ด ๋ง์ด ๋ณด์ด๋๋ฐ, ๊ฒ์์ ํตํด์ Incoming Webhooks๋ฅผ ์ ํํด์ค๋๋ค.
๋ฐ๋ก ๋ค์ ํ๋ฉด์์ Add to Slack ๐
์ํ๋ ์ฌ๋ ์ฑ๋ ์ ํ ๐
์ง์~ ๊ทธ๋ผ ์ด๋ ๊ฒ ๋ฐ๋ก webhook url์ ์์ฑํด์ค๋๋ค!
๊ทธ๋ฆฌ๊ณ ์ถ๊ฐ๋ก ํ์ํ ๊ฒฝ์ฐ์ ์ด๋ฐ ์ ๋ฐ ์ธํ ์ ํด์ฃผ๊ณ , ์ ์ฅํด์ค๋๋ค.
์ฌ๊ธฐ์ ๋ง๋ค์ด์ง WebHook URL์ ๋ณต์ฌํด์ ์๊น ๋ง๋ค๋ lane์ slack_url์ ๋ฃ์ด์ค๋๋ค.
๊ทธ๋ฆฌ๊ณ lane์ ๋ง๋ค์์ผ๋ ์คํํด์ ํ๋ฒ ๋ฉ์ธ์ง ๋ณด๋ด๋ณด๊ธฐ!!
fastlane send_slack
์ค์ค์ท~~~ ์ ์ต๋๋ค!! ๐
๊ทธ๋ผ ์ด์ ๋ง์ง๋ง์ผ๋ก, ์ฐ๋ฆฌ๊ฐ release ๋ช ๋ น์ด๋ฅผ ์คํํ์๋ ์ ๋ก๋๊ฐ ์๋ฃ๋๋ฉด slack์ด ์์ผ๊ฒ ์ฃ ~~?
lane :release do
increment_build_number(xcodeproj: "PROJECT_NAME.xcodeproj")
build_app(workspace: "PROJECT_NAME.xcworkspace", scheme: "PROJECT_NAME")
upload_to_app_store(skip_metadata: true, skip_screenshots: true)
send_slack
end
์ด๋ ๊ฒ!! ์ฑ์คํ ์ด ์ ๋ก๋์ฉ์ผ๋ก ๋ง๋ค์๋ lane์ ๋ง์ง๋ง์, ๋ฐฉ๊ธ ๋ง๋ send_slack์ ์คํํด์ฃผ๊ธฐ๋ง ํ๋ฉด ๋~~~๐
** 21/04/15 ** ๋ด์ฉ ์ถ๊ฐ
์ง๊ธ ์ ๊ฐ ๊ฐ๋ฐํ๋ ์๋น์ค์ ๊ฒฝ์ฐ์, testflight๋ก ๋ด๋ถํ ์คํธ๋ฅผ ์งํํ๊ณ ์ฑ์ ์ถ์ํ๋๋ฐ์!
ํฌ์คํ ์์๋ Appstore์ ์ฑ์ด ์ ๋ก๋๋ง ๋๋ฉด ์ฌ๋์ผ๋ก ์๋ฃ๋์๋ค๊ณ ๋ฉ์ธ์ง๋ฅผ ๋ณด๋ด์ฃผ์์ด์.
๊ทธ์น๋ง ์ค์ ๋ก testflight์์ ํ ์คํธํ๋ ค๋ฉด ์ฑ์คํ ์ด ๋ด๋ถ์ ์ผ๋ก ์ฒ๋ฆฌํ๋ ๊ณผ์ ์ด ํ์ํ๊ณ , ์๊ฐ๋ณด๋ค ๊ธด ์๊ฐ์ด ์์๋์.
๊ทธ ์๊ฐ๋์ ์ณ๋ค๋ณด๊ณ ์๋ค๊ฐ, "์ ๋ก๋๋ ์๊น ๋๋๋ฐ ์ด์ ์ฒ๋ฆฌ๊ฐ ๋๋ค์~ ํ ์คํธํด์ฃผ์ธ์~" ํ ์๋ ์๊ฒ ์ฃ ?ใ ใ
์์์ Fastfile์ ์์ฑํ๋
upload_to_app_store(skip_metadata: true, skip_screenshots: true)
๋ฉ์๋๋ฅผ, ํ ์คํธ ํ๋ผ์ดํธ๋ก๋ง ๋ณ๊ฒฝํด์ฃผ๋ฉด ๋์ด์์!
upload_to_testflight
์ด๋ ๊ฒ ํด์ฃผ๋ฉด, ์ฑ์คํ ์ด์์ ๋ด๋ถ์ ์ผ๋ก ์ฒ๋ฆฌํ๋ ๊ณผ์ ๊น์ง ์๋ฃ๋๊ณ ํ ์คํธ ๊ฐ๋ฅํ ์์ ์ ์ฌ๋์ ๋ณด๋ด์ค๋ต๋๋ค!! ๐
์ด ๊ณผ์ ์์ ์ฑ์คํ ์ด ์ ๋ก๋๋ ๋น์ฐํ ํฌํจ๋๋๊น, ์ ๋ ๋ฐ๋ก ์ฑ์คํ ์ด ์ ๋ก๋๋ ์ฌ์ฉ์ํด๋ ๋ ๊ฒ ๊ฐ์์!!
์์์ ๊ต์ฅํ๊ฑธ ํ๋ ๊ฒ ๋ง๋ฅ ์๋ํ ๊ฒ ๊ฐ์๋ฐ, ๋ง์ ํด๋๊ณ ๋๋ ๋ณ๊ฑฐ ์์๋ ๊ฒ(?) ๊ฐ๋ค์. ใ ใ ๐ค
์์ผ๋ก๋ ์ด๊ฒ ์ ๊ฒ ์๋ํ๊ณ ๋์ ํ ๋งํ ๊ฑด ์ ๊ทน ์๋ํด๋ณด๊ณ ์ถ๋ค์ ๐
์ค๋๋ ๋๊ตฐ๊ฐ์๊ฒ ๋์์ด ๋์๊ธธ ๋ฐ๋์ ๐
'๊ณตํต > ํ์ Tool' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Xcode] Xcode 14์์ pod init์ ์๋ฌํด๊ฒฐ (0) | 2022.10.10 |
---|---|
[Mobile App] ์ฑ์คํ ์ด Review Bot ์ ์ฉ๊ธฐ (0) | 2022.03.29 |
[XCode] Github & Bitrise ์ฐ๋ํ๊ธฐ (0) | 2021.02.23 |