Githawk: Buddybuild์˜ ๋Œ€์•ˆ?

์— ๋งŒ๋“  2018๋…„ 01์›” 02์ผ  ยท  71์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: GitHawkApp/GitHawk

๋‚ด๊ฐ€ ์ ์  ์ต์ˆ™ํ•ด์ง€๊ณ  ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ w/ it ....

๊ธฐ์กด Free Starter ์š”๊ธˆ์ œ ๋ฐ Android ์•ฑ ๊ฐœ๋ฐœ์€ 2018๋…„ 3์›” 1์ผ์— ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ์ด ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ์ง€์›์„ ๊ฑฐ์˜ ํ™•์‹คํžˆ ์žƒ๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด CI๋ฅผ ์ฐพ์•„์•ผ ํ•  ๋•Œ์ž…๋‹ˆ๋‹ค. ์–ด๋–ค ์ œ์•ˆ?

๋‹ค์Œ์„ ์ œ๊ณตํ•˜๋Š” ์ด ๊ธฐ์‚ฌ ๋ฅผ ์ฝ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Hacker News์—์„œ Buildkite ๋ฐ AppCenter ์— ๋Œ€ํ•ด ์ฝ์—ˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ผ์ด ๋‹ค์‹œ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ์˜คํ”ˆ ์†Œ์Šค, ์ž์ฒด ํ˜ธ์ŠคํŒ… ์†”๋ฃจ์…˜์„ ๊ณ ๋ คํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

โ” question

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋‚˜๋Š” ๋ถ„๋ช…ํžˆ ํŽธํ–ฅ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค ;) ๊ทธ๋Ÿฌ๋‚˜ ์ด์™€ ๊ฐ™์€ ์ผ์€ App Center์—์„œ ์ผ์–ด๋‚˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
๊ด€์‹ฌ์ด ์žˆ์œผ์‹œ๋ฉด ์—ฐ๋ฝ์ฃผ์„ธ์š”.

๋ชจ๋“  71 ๋Œ“๊ธ€

๋‹ค๋ฅธ ์ž์ฒด ํ˜ธ์ŠคํŒ… ์˜ต์…˜์˜ ๊ฒฝ์šฐ TeamCity(https://www.jetbrains.com/teamcity)?

์ผ๋ฐ˜์ ์œผ๋กœ ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ์˜ CircleCI ์ž‘์—… ๋Œ€๊ธฐ์—ด์€ TravisCI๋ณด๋‹ค ํ›จ์”ฌ ๋œ ํ˜ผ์žกํ•ฉ๋‹ˆ๋‹ค.

RxSwiftCommunity ์ €์žฅ์†Œ ์ค‘ ์ผ๋ถ€๋ฅผ ๊ด€๋ฆฌํ•˜์—ฌ 0.02๋‹ฌ๋Ÿฌ๋ฅผ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค.

Travis๋Š” ์ ˆ๋Œ€ ์“ฐ๋ ˆ๊ธฐ์ž…๋‹ˆ๋‹ค(๋˜๋Š” ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ).
ํ์ž‰์€ ์ฐธ์„ ์ˆ˜ ์—†๊ณ  ๊ฐœ๋ฐœ ๋…ธ๋ ฅ์„ ๋Š๋ฆฌ๊ฒŒ ํ•˜๋ฉฐ(90๋…„๋Œ€ ๋นŒ๋“œ๋ฅผ ์œ„ํ•ด 50๋ถ„์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒƒ์€ ์šฉ๋‚ฉํ•  ์ˆ˜ ์—†์Œ) ๊ตฌ์„ฑ์ด ์ƒ๋Œ€์ ์œผ๋กœ ์„ฑ๊ฐ€์‹ญ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ๋Š๋ฆฌ์ง€๋งŒ ํ™•์‹คํ•˜๊ฒŒ ๋Œ€๋ถ€๋ถ„์˜ ์ €์žฅ์†Œ๋ฅผ CirlceCI๋กœ ์˜ฎ๊ธฐ๊ณ  ์žˆ์œผ๋ฉฐ ๋งค์šฐ ๋งŒ์กฑํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋Œ€๊ธฐ์—ด์€ ์ •๋ง ๋น ๋ฅด๊ณ  ๊ณต์ •ํ•˜๋ฉฐ ๊ตฌ์„ฑ์€ ๋น„๊ต์  ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ ์˜๋ฏธ์—์„œ Bitrise์— ๋Œ€ํ•œ ์ข‹์€ ์†Œ์‹๋„ ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

BB์— ๋Œ€ํ•œ ์—„์ฒญ๋‚œ ์ˆ˜์น˜์‹ฌ, Apple์ด ๊ทธ๊ฒƒ์„ ์ฃฝ์ผ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๊ณ„์† ์ฃผ์‹œํ•˜๋Š” ๊ฒƒ์ด ํฅ๋ฏธ๋กœ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด์ „ ๋ฒ„์ „์˜ Jenkins์— ๋Œ€ํ•œ ๊ฒฝํ—˜์ด ์žˆ๋Š” ๋„๊ตฌ๋กœ์„œ ํ™•์‹คํžˆ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ์œ ์ง€ ๊ด€๋ฆฌ/๊ตฌ์„ฑ์ด ์ƒ๋‹นํžˆ ๋งŽ์ด ํ•„์š”ํ•˜๋ฉฐ ๊ฐœ๋ฐฉ์ ์ด๊ณ  ํ˜‘์—…์ ์ธ ์ƒํƒœ๋กœ ์œ ์ง€ํ•˜๋Š” ๊ธฐ์ˆ ์—์„œ ์ •์งํ•˜๊ฒŒ ๊ฐ€์žฅ ์ข‹์€ ๊ฒƒ์€ ์•„๋‹ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ ์šฐ๋ฆฌ๊ฐ€ ๋‹ค๋ฅธ "ํฐ" ์ œ๊ณต์—…์ฒด์— ๊ฐ„๋‹ค๋ฉด ๋ชจ๋…ธํด๋ฆฌ๋ฅผ ํ”Œ๋ ˆ์ดํ•˜๋Š” ๋‹ค๋ฅธ ํšŒ์‚ฌ์— ์˜ํ•ด ํœฉ์“ธ๋ฆฌ๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ์œ„ํ—˜์„ ๊ฐ์ˆ˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‚ด 2์„ผํŠธ์ธ Bitrise๋ฅผ ์‚ฌ์šฉํ•ด ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋ถ„๋ช…ํžˆ ํŽธํ–ฅ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค ;) ๊ทธ๋Ÿฌ๋‚˜ ์ด์™€ ๊ฐ™์€ ์ผ์€ App Center์—์„œ ์ผ์–ด๋‚˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
๊ด€์‹ฌ์ด ์žˆ์œผ์‹œ๋ฉด ์—ฐ๋ฝ์ฃผ์„ธ์š”.

cc @ํŒ”๋ ˆ์•„์Šค

GitHawk ์™€ ํ•จ๊ป˜

Https://Buildozer.io ๋Š” iOS์™€ Android๋ฅผ ๋ชจ๋‘ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. (๊ณต๊ฐœ: ๋‚˜๋Š” ์„ค๋ฆฝ์ž ์ค‘ ํ•œ ๋ช…์ž…๋‹ˆ๋‹ค)

์šฐ๋ฆฌ๋Š” CI์šฉ Mac์ด ํ•„์š”ํ•œ ๋ชจ๋“  Artsy iOS ํ”„๋กœ์ ํŠธ์—์„œ CircleCI๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. OSS ๋Œ€๊ธฐ์—ด์€ travis์™€ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ํ•˜๋ฃจ ์ข…์ผ Bitrise์™€ App Center๋ฅผ ์‚ฌ์šฉํ•ด ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€๋Š” BuddyBuild์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฝ๊ณ  ๋งˆ๋ฒ•์ฒ˜๋Ÿผ ๋ณด์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค...
๋‚˜๋Š” BB ํŒ€์— ๋งŒ์กฑํ•˜์ง€๋งŒ(๋ฐด์ฟ ๋ฒ„์— ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ž๋ž‘์Šค๋Ÿฝ๊ธฐ๋„ ํ•จ) ์‚ฌ์šฉ์ž๋กœ์„œ ๋งค์šฐ ํ™”๊ฐ€ ๋‚ฉ๋‹ˆ๋‹ค...
BuddyBuild๋Š” ๊ตฌ์„ฑ์ด ๊ฑฐ์˜ ํ•„์š” ์—†์ด ๋ฐ”๋กœ ์ž‘๋™ํ•˜๋Š” ์„œ๋น„์Šค ์ค‘ ํ•˜๋‚˜์˜€์Šต๋‹ˆ๋‹ค.

Buddybuild๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์ด ์ •๋ง ๋งˆ์Œ์— ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ „์— Circle CI์— ์ง€์ณค์ง€๋งŒ ์—ฌ๊ธฐ์„œ ์ฃผ์˜ํ•  ์ ์ด ๋ช‡ ๊ฐ€์ง€ ์žˆ์Šต๋‹ˆ๋‹ค. Fastlane์„ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ช…ํ•˜๊ณ  Test Flight์— ๋ฐฐํฌํ•˜๊ณ  ์ž๋™ ์„œ๋ช…์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. "์ˆ˜๋™"์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค

@TroubleMakerBen ๊ณผ ์ฑ„ํŒ…ํ•  ์‹œ๊ฐ„์„ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. AppCenter _looks_ ์ •๋ง ๋ฉ‹์ง‘๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ณ  ๋‹ค์‹œ ๋ณด๊ณ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค!

https://buildkite.com/ ์„ ํ™•์ธ

์—ฌ๊ธฐ bitrise์˜ ์—ด๋ ฌํ•œ ํŒฌ. ์šฐ๋ฆฌ ์†”๋ฃจ์…˜ https://www.appaloosa-store.com/ ์—์„œ ๋งŽ์ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

@sregg App Center์—์„œ ์ •ํ™•ํžˆ ๋ฌด์—‡์ด ๋‹น์‹ ์„ ์œ„ํ•ด ์ž‘๋™ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๊นŒ? ํŠน์ • ๋นŒ๋“œ์— ๋Œ€ํ•ด ๋„์›€์ด ๋˜์—ˆ์œผ๋ฉด ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ ๋ฅผ ๋“ค์–ด

์ €๋Š” Microsoft์—์„œ App Center Build๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ์—”์ง€๋‹ˆ์–ด๋ง ๊ด€๋ฆฌ์ž์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋งค์ฃผ ๊ฐœ์„ ํ•˜๋Š” ํ›Œ๋ฅญํ•œ ํŒ€์„ ๋ณด์œ ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ๋‹ค์ค‘ ํ”Œ๋žซํผ ์ง€์›์„ ์œ„ํ•ด ์ตœ์„ ์„ ๋‹คํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

@regg ํ›Œ๋ฅญํ•œ ํ”ผ๋“œ๋ฐฑ์ด ์žˆ๊ณ  ์ด๋Ÿฌํ•œ ๋ชจ๋“  ์˜์—ญ์˜ ๊ฐœ์„ ์ด ๋ฐฑ๋กœ๊ทธ์— ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ๋ฌธ์ œ/์šฐ๋ ค/ํ”ผ๋“œ๋ฐฑ์ด ์žˆ๋Š” ๊ฒฝ์šฐ Twitter( https://twitter.com/0xlukekim) ์—์„œ ์–ธ์ œ๋“ ์ง€ DM์„ ๋ณด๋‚ด์ฃผ์„ธ์š”.

์ €๋Š” ์ฃผ๋กœ "๋ฉ”ํƒ€"๋ผ๋Š” ์˜๋ฏธ์—์„œ App Center์— ๊นŠ์€ ์ธ์ƒ์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค.

  • ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ๊ฐ€ ๋“ค์ด๊ณ  ์žˆ๋Š” ๊ฐœ๋ฐœ ๋…ธ๋ ฅ.
  • ์ผ๋ถ€ ์ง์›์€ ์—ฌ๊ธฐ์— ๋Œ“๊ธ€์„ ๋‹ฌ์•„ ์ฃผ์ธ์˜์‹๊ณผ ๋ฐฐ๋ ค๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.
  • ๋‚˜๋Š” ์ž‘๋…„์— AltConf์—์„œ ๊ทธ๊ฒƒ์„ ์‹ค์ œ๋กœ ๋ณด์•˜๊ณ  ๊ฝค ๋ฉ‹์ ธ ๋ณด์˜€์Šต๋‹ˆ๋‹ค.

๊ฒฝํ—˜์ด ๋งŽ์ง€๋Š” ์•Š์ง€๋งŒ ์ถฉ๋ถ„ํžˆ ๊ฒฝ์Ÿ๋ ฅ์ด ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. :)

์•ˆ๋…•ํ•˜์„ธ์š” ์—ฌ๋Ÿฌ๋ถ„, ์ €๋Š” https://www.bitrise.io (CTO ๋ฐ ๊ณต๋™ ์„ค๋ฆฝ์ž)์˜ Viktor์ž…๋‹ˆ๋‹ค.

์ถ”์ฒœํ•ด์ฃผ์‹  ๋ชจ๋“  ๋ถ„๋“ค๊ป˜ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์ €ํฌ ํŒ€์— ํฐ ์˜๋ฏธ ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค !

๊ทธ๋ƒฅ ์•ˆ๋…• ๐Ÿ‘‹ ์ด๋ผ๊ณ  ๋งํ•˜๊ณ  ์‹ถ์—ˆ๊ณ  ์šฐ๋ฆฌ๊ฐ€ ๋‹น์—ฐํžˆ ๋“ฃ๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ํ™•์ธํ•˜๊ณ  ์ง€์› ์ฑ„๋„์„ ํ†ตํ•ด ์–ธ์ œ๋“ ์ง€ ํ•‘์„ ๋ณด๋‚ด์ฃผ์„ธ์š”. ์—ฌ๊ธฐ์—์„œ ์งˆ๋ฌธ์— ๋‹ต๋ณ€ํ•ด ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค!

ํ•˜ํ•˜, ์ด์ œ ์ž…์ฐฐ ์ „์Ÿ์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์•„์š” ๐Ÿ˜„

๋‚ด GitHawk๋Š” ๋ชจ๋“  CI๋ฅผ ๋งˆ๋‹น์œผ๋กœ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค ๐Ÿค“

์ €๋Š” BuddyBuild์—์„œ Bitrise๋กœ ์˜ฎ๊ฒผ์Šต๋‹ˆ๋‹ค(์šฐ๋ฆฌ๋Š” iOS์™€ Android๋ฅผ ์œ„ํ•œ ํ•œ ๊ณณ์„ ์ •๋ง๋กœ ์›ํ•ฉ๋‹ˆ๋‹ค). ๋ฌธ์„œ์™€ ๋‹จ๊ณ„์˜ git repos ์ผ๋ถ€๋ฅผ ์ฝ๋Š” ๋ฐ ์•ฝ๊ฐ„์˜ ์‹œ๊ฐ„์ด ๊ฑธ๋ ธ์ง€๋งŒ ๋‹ค๋ฅธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ ํ•˜๋ฃจ ์ •๋„ ๊ฑธ๋ ธ๊ณ  ๊ฝค ์ˆœ์กฐ๋กญ๊ฒŒ ์ง„ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

@sregg "Adjust BuildNumber" ๋‹จ๊ณ„๋ฅผ versionCode ํ•˜๊ณ  BB์—์„œ ์ž๋™ ๋ฐฐํฌํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— += 640์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์–ธ๊ธ‰ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

BuddyBuild๋ฅผ ํ†ตํ•œ Bitrise์—์„œ ๋ฐœ๊ฒฌํ•œ ์ฃผ์š” ์ฐจ์ด์ (BB์—์„œ GUI ๊ธฐ๋ฐ˜์˜ ๊ฑฐ์˜ ๋ชจ๋“  ๊ฒƒ์„ ์ œ์™ธํ•˜๊ณ )์€ Gradle ๋นŒ๋“œ๋ฅผ ์—ฌ๋Ÿฌ ๋‹จ๊ณ„๋กœ ๋‚˜๋ˆ„๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. BuddyBuild๋Š” (๋” ํšจ์œจ์ ์ผ ์ˆ˜ ์žˆ์Œ) ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญํ•˜๋Š” ๋ชจ๋“  ๊ฒƒ์„ ๊ตฌ์ถ•ํ•œ ๋‹ค์Œ ๋ฐฐํฌ ์ด๋ฉ”์ผ ๋˜๋Š” Play ์Šคํ† ์–ด์— ๊ฒŒ์‹œ์™€ ๊ฐ™์€ ๊ด€๋ จ ํ•ญ๋ชฉ์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. Bitrise๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ช‡ ๊ฐ€์ง€ ์„ ํƒ ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค. 1. ๋ถ„ํ•  ์—ฌ๋Ÿฌ ๋นŒ๋“œ/Gradle ๋‹จ๊ณ„(์˜ˆ: UI/Android ํ…Œ์ŠคํŠธ์šฉ), ํ…Œ์ŠคํŠธ ๋นŒ๋“œ์šฉ[2x3=6 ๋ณ€ํ˜•], App/Play ์Šคํ† ์–ด ๋ฐฐํฌ ์•„ํ‹ฐํŒฉํŠธ์šฉ ํ•˜๋‚˜, ๊ทธ ์‚ฌ์ด์— ์ผ๋ถ€ ์ •๋ฆฌ ๋‹จ๊ณ„ ํฌํ•จ(์˜ˆ: ํ•„ํ„ฐ๊ฐ€ ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์€ ๊ณณ์—์„œ ์ด๋ฉ”์ผ์ด ๋‚˜๊ฐ€๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€)... ๋˜๋Š” 2. bash ์Šคํฌ๋ฆฝํŠธ์— ์ต์ˆ™ํ•˜๊ณ  ํŒŒ์ดํ”„ ๋งต ENV ๋ณ€์ˆ˜๋ฅผ ๋ถ„ํ• ํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ ๋‹จ๊ณ„๊ฐ€ ์žˆ์–ด ์ดํ›„ ๋‹จ๊ณ„์—์„œ ๋” ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด BB๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ณด๋‚ธ ๊ฒƒ๊ณผ ๊ฐ™์€ ๊ฒƒ์„ ํฌํ•จํ•˜๋„๋ก ์—ฌ์œ  ๋ฉ”์‹œ์ง€๋ฅผ ์„ค์ •ํ•˜๋Š” ๋” ๋งŽ์€ ์˜ˆ์ œ๊ฐ€ ์žˆ์œผ๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์‚ฌ์šฉ์ž ์ •์˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ์ข‹์ง€๋งŒ ์ผ๋ฐ˜์ ์œผ๋กœ ์ฝ”๋“œ ์ž‘์„ฑ์œผ๋กœ ๋Œ์•„๊ฐ€๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ธฐ๋Šฅ, ํ…Œ์Šคํ„ฐ ๊ด€๋ฆฌ(Play Store Alpha ๋ฐ TestFlight ์‚ฌ์šฉ), ์ถฉ๋Œ/์ถฉ๋Œ ๋กœ๊ฑฐ์šฉ ํ”๋“ค๋ฆผ(Firebase ์„ ํ˜ธ)์ž…๋‹ˆ๋‹ค.

์ •๋ง ๋ฉ‹์ง„ ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜๋Š” ์›Œํฌํ”Œ๋กœ๋ฅผ .yml ํŒŒ์ผ๋กœ ๋ณด๊ณ  ํŽธ์ง‘ํ•  ์ˆ˜ ์žˆ์„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ CLI๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ์ปฌ์—์„œ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์†”์งํžˆ ์˜ˆ์ „๋ณด๋‹ค ํ›จ์”ฌ ๋” ๋งŽ์€ ์ž‘์—…์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒŒ ์›”์„ธ๋ฅผ ๋‚ด๋Š” ์š”์ ์ด์ฃ ? ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€ ๊ฑฐ์˜ ์ผํšŒ์„ฑ์ด๋ฉฐ ๋ณด๋„ˆ์Šค๋Š” ์ถ”๊ฐ€ ์‚ฌ์šฉ์ž ์ •์˜ ๊ฐ€๋Šฅ์„ฑ์ž…๋‹ˆ๋‹ค. ์ „๋ฐ˜์ ์œผ๋กœ ๋งค์šฐ ํ›Œ๋ฅญํ•˜๊ณ  ์ข‹์€ ๊ฐ€๊ฒฉ์— ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์Šค์œ„์น˜์— ๋งŒ์กฑํ•ฉ๋‹ˆ๋‹ค. CircleCI๋„ ํ›Œ๋ฅญํ•˜๋‹ค๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค(์šฐ๋ฆฌ๋Š” ์ด๋ฅผ ๋ฐฑ์—”๋“œ์— ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค).

Bitrise์˜ ์ „์ฒด ์ธํ”„๋ผ๋Š” OSS์ž…๋‹ˆ๋‹ค. https://github.com/bitrise-io/bitrise.io

ํ”ผ๋“œ๋ฐฑ์„ ๋ณด๋‚ด ์ฃผ์‹  @richardleggett ์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด ํŒ€๊ณผ ๋…ผ์˜ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!

ํŠนํžˆ Slack ํ•˜๋‚˜ - ์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„์— ๋น ์ง„ ์งํ›„ "๊ฟˆ" ๋ฉ”์‹œ์ง€๋ฅผ ์ƒ์„ฑํ•˜๋„๋ก ์š”๊ตฌํ•˜๋Š” ๋Œ€์‹  "๋” ๋ฉ‹์ง„"(๋” ์œ ์šฉํ•œ) ๊ธฐ๋ณธ ๋ฉ”์‹œ์ง€๋ฅผ ๊ฐ–๋Š” ๊ฒƒ์ด ์ด์ œ ๋„ˆ๋ฌด ๋Šฆ์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์œ ์—ฐ์„ฑ๋„ ์ค‘์š”ํ•˜์ง€๋งŒ ๊ธฐ๋ณธ๊ฐ’/์„ค์ • ๊ฒฝํ—˜(๋ฐ ์†๋„)๋„ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์–ด์จŒ๋“  ๊ทธ ํ›„์— ๋ฉ”์‹œ์ง€๋ฅผ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๊ธฐ๋ณธ๊ฐ’์„ ๋” ์žฅํ™ฉํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

Gradle: ํˆด๋ง ํŒ€๊ณผ๋„ ๋…ผ์˜ํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. ๊ฐ•์กฐํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

๋‚˜๋Š” ์ด๊ฒƒ์— ๋Œ€ํ•ด ๊นกํ†ต์„ ์ฐจ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค(์ฒœ์ฒœํžˆ ๋‚ด ๋ถˆ์•ˆ์„ ์ฆ๊ฐ€์‹œํ‚ด). ๋” ๋งŽ์€ ์ •๋ณด๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ๋Œ€์•ˆ์„ ํƒ์ƒ‰ํ•˜๋Š” ์ด ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ ์— ๋งํฌํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด ํ”„๋กœ์ ํŠธ๋ฅผ ์ž๋™ํ™”ํ•˜๊ธฐ ์œ„ํ•œ ๋‚˜์˜ "๋ถ์ชฝ ๋ณ„" ๋น„์ „์— ๋Œ€ํ•ด ๋…ผ์˜ํ•˜๊ธฐ ์œ„ํ•ด @orta ๋ฐ ํ•จ๊ป˜ ์‹œ๊ฐ„์„ ๋ณด๋‚ด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ์ด๊ฒƒ์— ๋Œ€ํ•ด ์ž‘์—…ํ•˜๊ธฐ ์œ„ํ•ด ์—๋„ˆ์ง€๋ฅผ ์†Œ์ง‘ํ•˜๋ฉด ๋‹ค์‹œ ๋ณด๊ณ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด @rnystrom์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‹น์‹ ์„ ๋Š๋‚€๋‹ค. ๐Ÿ˜•

@rnystrom ์€ ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์— ๊ฐ์‚ฌํ•˜๊ณ  https://blog.bitrise.io/ios-auto-provision-step

์–ด์จŒ๋“ , bitrise๋ฅผ ์‚ฌ์šฉํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  bitrise๋ฅผ ๋‹ค์‹œ ์‹œ๋„ํ•  ๊ฒฝ์šฐ๋ฅผ ๋Œ€๋น„ํ•˜์—ฌ ํ•ญ์ƒ ๊ธฐ๊บผ์ด ๋„์™€๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. Slack(http://chat.bitrise.io)๊ณผ ๊ฐ™์€ ๊ณณ์—์„œ ์–ธ์ œ๋“ ์ง€ ์ €์—๊ฒŒ ํ•‘์„ ๋ณด๋‚ด์ฃผ์‹ญ์‹œ์˜ค.

@viktorbenei ๊ทธ๋งŒํ•œ ๊ฐ€์น˜๊ฐ€ ์žˆ๋Š” ๊ฒƒ์€ Ryan์˜ ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์ด ์•„๋‹™๋‹ˆ๋‹ค!

์•—, ๋ง™์†Œ์‚ฌ, ์—ฌ๊ธฐ๋Š” ์•„์ง ์ด๋ฅธ ์•„์นจ์ด์•ผ ๐Ÿ˜‚ ๋ฏธ์•ˆํ•˜๊ณ  ๊ณ ๋งˆ์›Œ @Sherlouk !

์‹ค์ œ๋กœ ์–ด์ œ ๋ฐค Bitrise ์ž‘์—…์„ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์‹œ๋ณด๊ณ ํ•ฉ๋‹ˆ๋‹ค!

GitHawk ์™€ ํ•จ๊ป˜

Bitrise ๋นŒ๋“œ๋Š” ๋…น์ƒ‰์ž…๋‹ˆ๋‹ค! BB๋งŒํผ ์„ค์ •์ด ์‰ฝ์Šต๋‹ˆ๋‹ค. ์Šน์ž๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

GitHawk ์™€ ํ•จ๊ป˜

@rnystrom ์„ ๋“ฃ๊ฒŒ ๋˜์–ด

์‹ค์ œ๋กœ ์ดˆ๊ธฐ ์„ค์ •์€ BB์™€ ์œ ์‚ฌํ•˜๊ฒŒ ๋งค์šฐ ์›ํ™œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฃผ์š” ์ฐจ์ด์ ์€ ๊ทธ ์ดํ›„์˜ ๊ตฌ์„ฑ UI์ž…๋‹ˆ๋‹ค. BB์˜ ์ ‘๊ทผ ๋ฐฉ์‹์€ ์›ํ•˜๋Š” ๊ฒฝ์šฐ ํ”„๋กœ์„ธ์Šค์˜ ๋ชจ๋“  ์ธก๋ฉด์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก ์œ ์—ฐ์„ฑ์— ์ฃผ๋กœ ์ดˆ์ ์„ ๋งž์ถ”๋ฉด์„œ ํŠน์ • ์‚ฌํ•ญ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Œ์„ ์˜๋ฏธํ•˜๋Š” ๊ฐ„๋‹จํ•œ UI๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค(๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ ํŠน์ • ๋ณต์žก์„ฑ ๋ฐ ๊ฐ€ํŒŒ๋ฅธ ํ•™์Šต ๊ณก์„ ). ์šฐ๋ฆฌ๋Š” ์ด ํ•™์Šต ๊ณก์„ ์ด ํŠนํžˆ ์ทจ๋ฏธ ํ”„๋กœ์ ํŠธ์˜ ๊ฒฝ์šฐ ๋„ˆ๋ฌด ๋งŽ์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์œผ๋ฉฐ ์ด๋ฅผ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐฐํฌ ๋“ฑ ๊ตฌ์„ฑ์„ ๋” ์‰ฝ๊ฒŒ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์˜ฌํ•ด ๊ณ„ํš๋œ ๋ช‡ ๊ฐ€์ง€ ์‚ฌํ•ญ ;)

https://appcenter.ms๊ฐ€ ์œ ๋งํ•ด ๋ณด์ž…๋‹ˆ๋‹ค.

ํˆฌ๋ช…์„ฑ์˜ ์ด๋ฆ„์œผ๋กœ ํ˜„์žฌ ์šฐ๋ฆฌ๊ฐ€ ์žˆ๋Š” ๊ณณ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. Bitrise์™€ App Center CI ๋ชจ๋‘ GitHawk๋ฅผ ๊ตฌ์ถ•ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‘ ์„œ๋น„์Šค ๋ชจ๋‘ ์‚ฌ์šฉํ•˜๊ธฐ๊ฐ€ ๋งค์šฐ ์‰ฝ๊ธฐ ๋•Œ๋ฌธ์— ๋‘ ์„œ๋น„์Šค๋ฅผ ๋ชจ๋‘ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ๋ฒ ํƒ€ ๋นŒ๋“œ์™€ ๋‹จ์ผ App Store ๋นŒ๋“œ๋ฅผ ์ œ๊ณตํ•˜๊ณ  ๋‚ด ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ฌธ์„œํ™”ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ ๋‚ด ์ดˆ๊ธฐ ์ƒ๊ฐ์ด ์žˆ์Šต๋‹ˆ๋‹ค

๋น„ํŠธ๋ผ์ด์ฆˆ

์žฅ์ 

  • ํ›Œ๋ฅญํ•œ ์ง€์›(h/t @viktorbenei)
  • ๊ฝค ๋น ๋ฅธ ๋นŒ๋“œ
  • Fastlane์„ ํ†ตํ•ด ๋ฐฐํฌ
  • ๋นŒ๋“œ ๋‹จ๊ณ„์˜ ๊ทน๋„์˜ ์‚ฌ์šฉ์ž ์ •์˜ ๋ฐ ์„ธ๋ถ„์„ฑ
  • ํ”Œ๋žซํผ์€ ์˜คํ”ˆ ์†Œ์Šค(ish)์ž…๋‹ˆ๋‹ค.
  • master ์—์„œ ์ž๋™์œผ๋กœ ๋นŒ๋“œ๋ฅผ ITC๋กœ ํ‘ธ์‹œํ•ฉ๋‹ˆ๋‹ค(๋‚˜๋Š” ์ด๊ฒƒ์„ _์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค_).

๋‹จ์ 

  • ์˜คํ”ˆ ์†Œ์Šค ๋ฌด๋ฃŒ ํ”Œ๋žœ ์—†์Œ(_์•„์ง_)
  • ์‹œ์ž‘(ํš๋“ํ•˜๊ฑฐ๋‚˜ ์‚ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์Œ)

์•ฑ ์„ผํ„ฐ

์žฅ์ 

  • ๋นŒ๋“œ๋Š” _๋งค์šฐ_ ๋น ๋ฆ…๋‹ˆ๋‹ค.
  • ๋” ์ ์€ ์‚ฌ์šฉ์ž ์ •์˜ = ๋” ๊ฐ„์†Œํ™”
  • iOS/Android ๋ฐฐํฌ์— ๋งž๊ฒŒ ์กฐ์ •๋จ
  • @TroubleMakerBen์ด ํ”๋“ค๋ฆฐ๋‹ค ๐Ÿ˜„
  • ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ ์ง€์›

    • ์•„๋งˆ ๊ณง ์‚ฌ๋ผ์ง€์ง€ ์•Š์„๊ฑฐ์•ผ

    • ++๋ฆฌ์†Œ์Šค

๋‹จ์ 

  • ์˜คํ”ˆ ์†Œ์Šค ๋ฌด๋ฃŒ ๊ณ„ํš ์—†์Œ(_์•„์ง_)
  • ๋นŒ๋“œํ•˜๋ ค๋ฉด ๊ณต์œ  ๋Œ€์ƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  • ์ž๋™ํ™” ๋ฐฐํฌ ๋ฏธ์ •(๋„์ฐฉ ํ™•์ธ)
  • ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ํ•ญ๋ชฉ์ด ๋„ˆ๋ฌด ๋งŽ์Šต๋‹ˆ๋‹ค(์˜ˆ: App Center SDK๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Œ).
  • ๋กœ๊ทธ ์ถœ๋ ฅ์€ _๋งค์šฐ ์žฅํ™ฉํ•ฉ๋‹ˆ๋‹ค_, ๋นŒ๋“œ ์˜ค๋ฅ˜๋ฅผ ์ฐพ๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.
  • GitHub ์ƒํƒœ ํ†ตํ•ฉ ์—†์Œ

@rnystrom ์„ ๊ณต์œ ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ํ•œ ๊ฐ€์ง€๋งŒ ์ˆ˜์ •ํ•˜๋ฉด bitrise์˜ ์›น ์„œ๋น„์Šค ๊ตฌ์„ฑ ์š”์†Œ๋Š” ์˜คํ”ˆ ์†Œ์Šค๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ API ๋ฐ ์›น UI๋ฅผ ์ž์ฒด ํ˜ธ์ŠคํŒ…ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค(์•„์ง ;)). ๊ตฌ์„ฑ์„ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๋ชจ๋“  ๋„๊ตฌ(์›Œํฌํ”Œ๋กœ ํŽธ์ง‘๊ธฐ, ๋Ÿฌ๋„ˆ CLI ๋“ฑ)๋Š” ์˜คํ”ˆ ์†Œ์Šค์ด๋ฏ€๋กœ ๋นŒ๋“œ ๊ตฌ์„ฑ์„ ๋‹ค์šด๋กœ๋“œํ•˜์—ฌ ์ž์‹ ์˜ Mac(๋˜๋Š” ๋ชจ๋“  Mac/Linux)์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋น ๋ฅธ ์ฐจ์„ .

๋น„๊ต๋ฅผ ์œ„ํ•ด ์งˆ๋ฌธ ํ•˜๋‚˜๋งŒ

Bitrise: ๋‹จ์ : ์˜คํ”ˆ ์†Œ์Šค ๋ฌด๋ฃŒ ๊ณ„ํš ์—†์Œ(์•„์ง)

AppCenter์— ์˜คํ”ˆ ์†Œ์Šค ๊ณ„ํš์ด ์žˆ์Šต๋‹ˆ๊นŒ? ๊ทธ๊ฒƒ์„ ๋†“์ณค์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. AFAIK ๊ทธ๋“ค๋„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. appcenter์˜ ์›น ์‚ฌ์ดํŠธ์—์„œ ๊ด€๋ จ ํ•ญ๋ชฉ์„ ์ฐพ์„ ์ˆ˜ ์—†์–ด์„œ ์ •๋ง ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

GitHub ์ƒํƒœ ํ†ตํ•ฉ ์—†์Œ

ํฌ๋„ค์š” โ˜น๏ธ

@viktorbenei ๊ฐ€ ์—…๋ฐ์ดํŠธ๋ฉ๋‹ˆ๋‹ค! ์•„์ง

GitHawk ์™€ ํ•จ๊ป˜

์•ˆ๋…•ํ•˜์„ธ์š” ์—ฌ๋Ÿฌ๋ถ„,

ํ”ผ๋“œ๋ฐฑ๊ณผ ๋น„๊ต๋ฅผ ์œ„ํ•œ Thx. ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์ข‹์•„ํ•˜๊ณ  ์šฐ๋ฆฌ PM๋“ค์ด ์ด ์Šค๋ ˆ๋“œ๋ฅผ ๋ณด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ž๋™ํ™” ๋ฐฐํฌ ๋ฏธ์ •(๋„์ฐฉ ํ™•์ธ)

์šฐ๋ฆฌ๋Š” ํ˜„์žฌ ๋” ๋‚˜์€ ๋ฐฐํฌ๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์—ด์‹ฌํžˆ ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณ„์† ์ง€์ผœ๋ด ์ฃผ์„ธ์š”.

AppCenter์— ์˜คํ”ˆ ์†Œ์Šค ๊ณ„ํš์ด ์žˆ์Šต๋‹ˆ๊นŒ? ๊ทธ๊ฒƒ์„ ๋†“์ณค์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. AFAIK ๊ทธ๋“ค๋„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. appcenter์˜ ์›น ์‚ฌ์ดํŠธ์—์„œ ๊ด€๋ จ ํ•ญ๋ชฉ์„ ์ฐพ์„ ์ˆ˜ ์—†์–ด์„œ ์ •๋ง ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

์•„์ง OSS ๊ณ„ํš์ด ์—†์Šต๋‹ˆ๋‹ค.

๋ชจ๋‘ ํ™”์ดํŒ…ํ•˜์‹œ๊ณ  ์ข‹์€ ์ฃผ๋ง ๋ณด๋‚ด์„ธ์š”!

์ด๊ฒƒ์€ ์ง€๊ธˆ ๊ด€๋ จ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค https://github.com/fastlane/ci ๐Ÿ‘

@KrauseFx ๋‚˜๋Š” ์ด๊ฒƒ์„ ๋ณด์•˜๊ณ  ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ๋„ˆ๋ฌด

์ปค๋ฎค๋‹ˆํ‹ฐ๋กœ์„œ ๊ธฐ๋Šฅ์„ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์™œ ๊ธฐ๋Šฅ์„ ์š”์ฒญํ•ฉ๋‹ˆ๊นŒ? ๊ฒŒ๋‹ค๊ฐ€ ๊ตฌ๊ธ€์ด ์ด๋ฅผ ๋’ท๋ฐ›์นจํ•˜๊ณ  ์žˆ๋‹ค๊ณ ์š”? ๋” ๋งŽ์€ ๊ฒƒ์„ ์š”๊ตฌํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

์ฝ”๋“œ๊ฐ€ ์ง„ํ–‰๋จ์— ๋”ฐ๋ผ ์ด์— ๊ธฐ์—ฌํ•˜๊ณ  ์„ฑ์ˆ™ํ•ด์ง์— ๋”ฐ๋ผ ์›Œํฌํ”Œ๋กœ์— ์ ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ์ง„์‹ฌ์œผ๋กœ ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค.

์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ์œ„ํ•ด ํ•˜๋Š” ๋ชจ๋“  ์ผ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค!

@KrauseFx ํ”Œ๋ ˆ์ด์–ด 3์ด ๊ฒŒ์ž„์— ์ž…์žฅํ–ˆ์Šต๋‹ˆ๋‹ค

GitHawk ์™€ ํ•จ๊ป˜

๋กค์ฆˆ

์•ฑ ์„ผํ„ฐ๊ฐ€ ๊ตฌ๋ฌธ๊ณผ ๊ฐ™์€ [ci skip] ์ปค๋ฐ‹๋‹น ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@dkhamsing์€ ๋ถˆํ–‰ํžˆ๋„ (์•„์ง) ์•„๋‹™๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์‚ฌ๋ž‘ํ•œ buddybuild์˜ ์ง„์ •ํ•œ ์žฅ์  ์ค‘ ํ•˜๋‚˜๋Š” FBSnapshotTestCase ๋‹จ์œ„ ํ…Œ์ŠคํŠธ์—์„œ ์˜ˆ๊ธฐ์น˜ ์•Š์€ ์ด๋ฏธ์ง€๊ฐ€ ์ƒ์„ฑ๋œ ๊ฒฝ์šฐ ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ์—์„œ ์ „ํ›„/์ฐจ์ด๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๋ฐฉ์‹์ด์—ˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋‹ค๋ฅธ ์‹œ์Šคํ…œ์— ์œ ์‚ฌํ•œ ๊ธฐ๋Šฅ์ด ์žˆ๋Š”์ง€ ์•„๋Š” ์‚ฌ๋žŒ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

App Center๋Š” pull ์š”์ฒญ์—์„œ ๋นŒ๋“œ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๊นŒ? ๋‚˜๋Š” ๋งค์šฐ ํ˜ผ๋ž€์Šค๋Ÿฌ์›Œ cc @TroubleMakerBen

@dkhamsing ๊ทธ๋ ‡๊ตฐ์š” !

ํŽธ์ง‘: ์‹ ๊ฒฝ ์“ฐ์ง€ ๋งˆ์„ธ์š” ๐Ÿ™Š

GitHawk ์™€ ํ•จ๊ป˜

@dkhamsing App Center๋Š” PUSH ๊ธฐ๋ฐ˜ ๋นŒ๋“œ๋ฅผ ์ง€์›ํ•˜์ง€๋งŒ ์•„์ง PR ๊ธฐ๋ฐ˜ ๋นŒ๋“œ(๋ณ‘ํ•ฉ ๊ธฐ๋ฐ˜ ๋นŒ๋“œ)๋Š” ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์•„ ์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค. Thx Ryan, ๋ฒค ๐Ÿ˜Š

GitHawk ์™€ ํ•จ๊ป˜

์ด ์Šค๋ ˆ๋“œ๋ฅผ ์ฝ์€ ํ›„์—๋Š” Bitrise์™€ App Center์˜ ๋‘ ๊ฐ€์ง€ ๊ฒฝ์ฃผ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์•„๋ฌด๋„ UI ํ…Œ์ŠคํŠธ ์ฃผ์ œ์— ๋Œ€ํ•ด ์–ธ๊ธ‰ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. BB์—์„œ ๋ช‡ ๋ฒˆ์˜ ํด๋ฆญ๋งŒ์œผ๋กœ ๊ฐ€์ƒ ์žฅ์น˜์—์„œ ์—์Šคํ”„๋ ˆ์†Œ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด ๋งˆ์Œ์— ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๋…ผ์˜ ์ค‘์ธ ๋‘ ํ”Œ๋žซํผ ์ค‘ ์–ด๋Š ๊ฒƒ์ด ์ด๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๊นŒ?

@dkhamsing App Center Test๋Š” ์‹ค์ œ๋กœ ๋ฌผ๋ฆฌ์  ์žฅ์น˜์—์„œ UI ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ˆ˜์ฒœ ๊ฐœ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋‹ˆ์š”, ์‚ฌ์ง„์„ ๋ณผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค ;)

์šฐ๋ฆฌ๋Š” ์‹ค์ œ๋กœ ์ƒˆ๋กœ์šด CI ์†”๋ฃจ์…˜์„ ์‹๋ณ„ํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

  • AppCenter : bb์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ PR ์ง€์›์„ ์ œ๊ณตํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ด€๋ฆฌ ์ธ๋ ฅ์— ๋” ์ดˆ์ ์„ ๋งž์ถ˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์ž‘์—…์ด ์‹คํŒจํ•˜๋ฉด ๋กœ๊ทธ๊ฐ€ ์Šคํƒ์„ ์ œ๊ณตํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  • Bitrise: ๋งค์šฐ ๊ตฌ์„ฑ ๊ฐ€๋Šฅํ•˜๊ณ  codecoverage, ๋ฐฐํฌ, ์„œ๋ช…, unitTest, UITest, ๋นŒ๋“œ, ์ „๋‹ฌ, ์ •๋ฆฌ ๋ฐ ์‚ฌ์šฉ์ž ์ง€์ •๊ณผ ๊ฐ™์€ ๋งŽ์€ ๊ฐœ๋ฐฉํ˜• "๋‹จ๊ณ„"๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— .yaml ํŒŒ์ผ๊ณผ ์•ฝ๊ฐ„ ํ˜ผ๋™๋ฉ๋‹ˆ๋‹ค. ํ‘ธ์‹œ, PR ๋“ฑ์˜ ๋‹จ๊ณ„๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • Nevercode ๋งค์šฐ ๊ตฌ์„ฑ ๊ฐ€๋Šฅํ•˜๋ฉฐ ๋ถ„๊ธฐ๋ณ„ gradlew ์ž‘์—…, PR ๋นŒ๋“œ, ๋ฌด๋ฃŒ ๊ณ„ํš ์—†์Œ ์ค‘์—์„œ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ ์–ด๋„ Bitrise ๋Š” ์šฐ๋ฆฌ๊ฐ€ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋งŽ์€ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค!

App Center์—์„œ์˜ ํ…Œ์ŠคํŠธ์— ๋Œ€ํ•ด ์œ„์— ๊ฒŒ์‹œ๋œ ๋งํฌ์—์„œ

  1. ํ•ต์‹ฌ ๊ฐœ๋… ๊ฒ€ํ† 
    Test Cloud ๊ฒฝํ—˜์˜ ํ•ต์‹ฌ ๊ฐœ๋…์„ ์ดํ•ดํ•˜๋ฉด ์ง€์›์„ ํ†ตํ•ด ์‚ฌ์šฉ, ํƒ์ƒ‰ ๋ฐ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์ด ์šฉ์ดํ•ด์ง‘๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์ „์— ์ด๋Ÿฌํ•œ ๊ฐœ๋…์— ์ต์ˆ™ํ•ด์ง€๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๋„๋Œ€์ฒด... ๋‚˜๋Š” ํ•ต์‹ฌ์ด๋“  ์•„๋‹ˆ๋“  ์–ด๋–ค ๊ฐœ๋…๋„ ๊ฒ€ํ† ํ•˜๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. BB์—์„œ ํ–ˆ๋˜ ๊ฒƒ์ฒ˜๋Ÿผ 2๋ฒˆ์˜ ํด๋ฆญ์œผ๋กœ ์ž‘๋™ํ•˜๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค. ์ €๋Š” ๋ฐ๋ธŒ์˜ต์Šค ์—”์ง€๋‹ˆ์–ด๊ฐ€ ์•„๋‹ˆ๋ผ ์ฝ”๋”์ž…๋‹ˆ๋‹ค...

์˜ˆ, App Center ๋ฌธ์„œ๋ฅผ ๊ฐ„์†Œํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

GitHawk ์™€ ํ•จ๊ป˜

@acristescu

์ด ์Šค๋ ˆ๋“œ๋ฅผ ์ฝ์€ ํ›„์—๋Š” Bitrise์™€ App Center์˜ ๋‘ ๊ฐ€์ง€ ๊ฒฝ์ฃผ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์•„๋ฌด๋„ UI ํ…Œ์ŠคํŠธ ์ฃผ์ œ์— ๋Œ€ํ•ด ์–ธ๊ธ‰ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. BB์—์„œ ๋ช‡ ๋ฒˆ์˜ ํด๋ฆญ๋งŒ์œผ๋กœ ๊ฐ€์ƒ ์žฅ์น˜์—์„œ ์—์Šคํ”„๋ ˆ์†Œ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด ๋งˆ์Œ์— ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๋…ผ์˜ ์ค‘์ธ ๋‘ ํ”Œ๋žซํผ ์ค‘ ์–ด๋Š ๊ฒƒ์ด ์ด๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๊นŒ?

(์•„์ง) ํ•œ ๋ฒˆ์˜ ํด๋ฆญ์€ ์•„๋‹ˆ์ง€๋งŒ ๋ช‡ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ๋” ๊ฐ•๋ ฅํ•ฉ๋‹ˆ๋‹ค. https://blog.bitrise.io/introducing-solid-and-snappy-virtual-device-testing-for-android

์šฐ๋ฆฌ๋Š” ์„ค์ •์„ ๋” ์‰ฝ๊ฒŒ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค(์ด๊ฒƒ์ด ๊ธฐ๋Šฅ ๋ถ€์กฑ ๋•Œ๋ฌธ์ด ์•„๋‹ˆ๋ผ ์—ฌ์ „ํžˆ "๋ฒ ํƒ€"์ธ ์ด์œ  ;)).

@acristescu @dkhamsing ์šฐ๋ฆฌ๋Š” ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค! ํ”ผ๋“œ๋ฐฑ์„ ๊ณ„์†ํ•˜์‹ญ์‹œ์˜ค.

@viktorbenei ์‹œ๋„ํ•  ์˜ˆ์ •์ด์ง€๋งŒ ๋ง™์†Œ์‚ฌ ์•„ํŠธ ์Šคํƒ€์ผ์ด

๋ฌธ์ œ ์—†์Šต๋‹ˆ๋‹ค @acristescu , ๋‚˜๋Š” ๋‹น์‹ ์˜ ์š”์ ์„ ๋ถ„๋ช…ํžˆ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ •์งํ•œ ํ”ผ๋“œ๋ฐฑ์€ ํ•ญ์ƒ ํ™˜์˜ํ•˜๋ฉฐ ๋””์ž์ธ ์—…๋ฐ์ดํŠธ๋Š” ์ด๋ฏธ ์ž‘์—… ์ค‘์ž…๋‹ˆ๋‹ค ;)

๋‚˜๋Š” ๊ฐ„๋‹จํ•œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ( https://github.com/acristescu/GreenfieldTemplate )๋กœ ๋‘˜ ๋‹ค ์‹œ๋„ํ•˜๊ณ  ๋‚ด๊ฐ€ ์–ด๋””๋กœ ๊ฐ€๋Š”์ง€ ๋ณด๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€ App Center๋ฅผ ์‹œ๋„ํ•˜๊ณ  ๋ช‡ ๊ฐ€์ง€ ๊ฑธ๋ฆผ๋Œ์ด ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

  • ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค(gradle ๋นŒ๋“œ ๋„๊ตฌ๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค!). google() ์ €์žฅ์†Œ๋ฅผ ํ”„๋กœ์ ํŠธ์˜ gradle์— ์ˆ˜๋™์œผ๋กœ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๋นŒ๋“œ ๋ฒˆํ˜ธ๊ฐ€ 1์—์„œ ๋‹ค์‹œ ์‹œ์ž‘๋˜์—ˆ์ง€๋งŒ ์ด๋ฏธ Play ์Šคํ† ์–ด์—์„œ 42๋ฅผ ์ถœ์‹œํ–ˆ์ง€๋งŒ Google์€ ๋นŒ๋“œ๋ฅผ ๊ฑฐ๋ถ€ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค!)
  • ๊ฐ€์ƒ ์žฅ์น˜์—์„œ ๋ฌด๋ฃŒ๋กœ ํ…Œ์ŠคํŠธํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ์„ ์ˆ˜ ์—†์—ˆ๊ณ  30์ผ ๋ฌด๋ฃŒ ํ‰๊ฐ€ํŒ ์ด ์žˆ๋Š” ์‹ค์ œ ์žฅ์น˜์—์„œ๋งŒ
  • ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ–ˆ๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
##[warning]No test result files matching /Users/vsts/agent/2.127.0/work/1/s/**/build/test-results/TEST-*.xml were found, so publishing JUnit test results is being skipped.

๊ทธ๊ฒŒ ๋ญ”์ง€๋Š” ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ...

Bitrise: ํ”Œ๋Ÿฌ์Šค ์ธก๋ฉด์—์„œ ์„ค์ •์€ ๊ณ ํ†ต์Šค๋Ÿฝ์ง€ ์•Š์•˜์ง€๋งŒ ๋ฌด์—‡์ด๋“  ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ yml ํŒŒ์ผ์„ ๊ฐ€์ ธ์™€์„œ ์กฐ์ž‘ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค(์—…๋ฐ์ดํŠธ: ์›Œํฌํ”Œ๋กœ ํŽธ์ง‘๊ธฐ๋ผ๋Š” ๊ฒƒ์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. ๋ฌด์„ญ์ง€๋งŒ ๊ฐ•๋ ฅํ•ด ๋ณด์ž…๋‹ˆ๋‹ค) . ๊ฑธ๋ฆผ๋Œ:

  • ๋นŒ๋“œํ•  ๋ณ€ํ˜•์„ ๋ฌป์ง€ ์•Š๊ณ  ์ž˜๋ชป๋œ ๋ณ€ํ˜•์„ ์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” prodRelease ์›ํ–ˆ์ง€๋งŒ ์–ด๋–ค ์ด์œ ๋กœ๋“  ์ •ํ™•ํžˆ ๋‹ค๋ฅธ ๋‘ ๊ฐœ์˜ mockDebug ๋ฐ prodDebug ๋ฅผ ๋นŒ๋“œํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ์–ด๋””์—์„œ ๋ณ€๊ฒฝํ•ด์•ผํ•˜๋Š”์ง€ ์ฐพ์„ ์ˆ˜ ์—†์ง€๋งŒ ํ•˜๋‚˜๋Š” ์žˆ์–ด์•ผํ•œ๋‹ค๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค.
  • ๋นŒ๋“œ๋Š” ์•ฑ ์„ผํ„ฐ์˜ ๊ฒฝ์šฐ 2๋ถ„ 16๋ถ„ ๋Œ€์‹  4๋ถ„์ด ๋” ์˜ค๋ž˜ ๊ฑธ๋ ธ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์•„๋งˆ๋„ ์œ„์˜ ๋ฌธ์ œ ๋•Œ๋ฌธ์ผ๊นŒ์š”?
  • ๋กœ๊ทธ ์–ด๋””์—๋„ junit ํ…Œ์ŠคํŠธ์— ๋Œ€ํ•œ ์–ธ๊ธ‰์ด ์—†์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ๊ทธ๋“ค์„ ์‹คํ–‰ํ–ˆ๋Š”์ง€ ์˜์‹ฌํ•ฉ๋‹ˆ๋‹ค. ์›Œํฌํ”Œ๋กœ ํŽธ์ง‘๊ธฐ ์–ด๋”˜๊ฐ€์— ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ? (์—…๋ฐ์ดํŠธ๊ฐ€ ์•ฝ 10๋ถ„ ๋™์•ˆ ์›Œํฌํ”Œ๋กœ ํŽธ์ง‘๊ธฐ๋ฅผ ์ˆ˜์ •ํ•˜์—ฌ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. ์‹คํ–‰ํ•  test ๋Œ€์ƒ์„ ์ž์œ ๋กญ๊ฒŒ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ณด๋„ˆ์Šค ํฌ์ธํŠธ)
  • ์–ด๋–ค ๋นŒ๋“œ ID๋ฅผ ์‚ฌ์šฉํ–ˆ๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ๋Š”๋ฐ ์–ด๋–ป๊ฒŒ ๋ณด๋‚˜์š”?

์ด๊ฒƒ์„ ๊ฒŒ์‹œํ•˜๊ธฐ ์œ„ํ•ด Thx

GitHawk ์™€ ํ•จ๊ป˜

image

์ž์„ธํ•œ ํ”ผ๋“œ๋ฐฑ์„ ๋ณด๋‚ด ์ฃผ์‹  @acristescu ์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๋Œ€๋‹จํžˆ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ App Center์˜ JUnit ํ…Œ์ŠคํŠธ ๋ณด๊ณ ์„œ ํŒŒ์ผ์— ๋Œ€ํ•œ ๊ฒฝ๊ณ ์—์„œ ์ด๋Š” ์‹ค์ œ ํ…Œ์ŠคํŠธ ์‹คํ–‰์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์œผ๋ฉฐ ๊ณง ์ˆ˜์ •๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๊ณ„์† ์˜ค์„ธ์š”!

๋‘ ์‹œ๊ฐ„์ด ๊ฑธ๋ ธ์ง€๋งŒ ์•ฑ ์„ผํ„ฐ์—์„œ Google Play์— ์—…๋กœ๋“œํ•˜๋„๋ก ์„ค๋“ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋ฅผ ์ž๋™์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๋„๋ก ์„ค๋“ํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์•ฑ ์„ผํ„ฐ์—์„œ ์„œ๋ช…๋œ APK๋ฅผ ๋‹ค์šด๋กœ๋“œํ•œ ๋‹ค์Œ ์ด๋ฅผ ๋‹ค์‹œ ๋ฐฐํฌ/์ €์žฅ ์„น์…˜(!)์— ์—…๋กœ๋“œํ•˜์—ฌ ์ž‘๋™ํ•˜๋„๋ก ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์—„์ฒญ๋‚˜๊ฒŒ ๋ณต์žกํ•ด ๋ณด์ด๋Š”๋ฐ ๋‚ด๊ฐ€ ๋ญ˜ ์ž˜๋ชปํ•˜๊ณ  ์žˆ๋Š” ๊ฑฐ์ง€?

์ถ”์‹ : ๋ถ€์ƒ์— ๋Œ€ํ•œ ๋ชจ์š•์„ ๋”ํ•˜๊ธฐ ์œ„ํ•ด BuddyBuild๋Š” ์ฒ˜์Œ์— ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ฒƒ์„ ์žŠ์—ˆ๊ณ  ์‚ฌ๋žŒ์˜ ๊ฐœ์ž… ์—†์ด ์ž๋™์œผ๋กœ ์ž‘๋™ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ™์€ ์‹œ๊ฐ„์— ์—ฌ๋Ÿฌ ๋ฒˆ ๋ฐฐํฌํ–ˆ์Šต๋‹ˆ๋‹ค...

์•ˆ๋…•ํ•˜์„ธ์š” @acristescu ์ž…๋‹ˆ๋‹ค .

์žฌ: https://github.com/rnystrom/GitHawk/issues/1330#issuecomment -368228417

๋นŒ๋“œํ•  ๋ณ€ํ˜•์„ ๋ฌป์ง€ ์•Š๊ณ  ์ž˜๋ชป๋œ ๋ณ€ํ˜•์„ ์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” prodRelease๋ฅผ ์›ํ–ˆ์ง€๋งŒ ์–ด๋–ค ์ด์œ ๋กœ๋“  ์ •ํ™•ํžˆ ๋‹ค๋ฅธ ๋‘ ๊ฐœ์˜ mockDebug ๋ฐ prodDebug๋ฅผ ๋นŒ๋“œํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ์–ด๋””์—์„œ ๋ณ€๊ฒฝํ•ด์•ผํ•˜๋Š”์ง€ ์ฐพ์„ ์ˆ˜ ์—†์ง€๋งŒ ํ•˜๋‚˜๋Š” ์žˆ์–ด์•ผํ•œ๋‹ค๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ ํ˜„์žฌ ์Šค์บ๋„ˆ๋Š” ๊ธฐ๋ณธ ์›Œํฌํ”Œ๋กœ์— ๋Œ€ํ•ด ๊ตฌ์„ฑ๋œ assembleDebug ์™€ ํ•จ๊ป˜ Gradle Runner ๋‹จ๊ณ„๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด๊ฒƒ์ด ์ถฉ๋ถ„ํžˆ ๊ฐ„๋‹จํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ๊ฐ„๋‹จํžˆ ๋งํ•ด์„œ prodRelease ๋ฅผ ๋นŒ๋“œํ•˜๋ ค๋Š” ๊ฒฝ์šฐ gradle ์ž‘์—…์€ assembleProdRelease ์ž…๋‹ˆ๋‹ค. lint๋ฅผ ์‹คํ–‰ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ gradle ์ž‘์—…์€ lint ์ž…๋‹ˆ๋‹ค. Gradle Runner ๋‹จ๊ณ„์—์„œ ์ด ๋ชจ๋“  ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์‹ค Gradle์€ ์—ฌ๋Ÿฌ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ lint ๋ฅผ ์‹คํ–‰ํ•œ ๋‹ค์Œ assembleProdRelease ๋ฅผ ์ž‘์—…์œผ๋กœ ์ง€์ •ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. lint assembleProdRelease ๋‘˜ ๋‹ค ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ๋” ๊ตฌ์ฒด์ ์ธ ๋‹จ๊ณ„(์˜ˆ: gradle lint ์ž‘์—…์„ ์‹คํ–‰ํ•˜๋Š” "Lint" ๋‹จ๊ณ„, ํ•ด๋‹น ์ž‘์—…์„ "Gradle Runner" ๋‹จ๊ณ„) ๐Ÿ˜‰

๋นŒ๋“œ๋Š” ์•ฑ ์„ผํ„ฐ์˜ ๊ฒฝ์šฐ 2๋ถ„ 16๋ถ„ ๋Œ€์‹  4๋ถ„์ด ๋” ์˜ค๋ž˜ ๊ฑธ๋ ธ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์•„๋งˆ๋„ ์œ„์˜ ๋ฌธ์ œ ๋•Œ๋ฌธ์ผ๊นŒ์š”?

์‹ค์ œ๋กœ assembleDebug ๊ฐ€ ๋‹จ์ผ "ProdRelease" ๋Œ€์‹  2๊ฐœ์˜ ๊ฐœ๋ณ„ APK/๋ณ€ํ˜•์„ ๊ท€ํ•˜์˜ ๊ฒฝ์šฐ์— ์ƒ์„ฑํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์‹ค์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋กœ๊ทธ ์–ด๋””์—๋„ junit ํ…Œ์ŠคํŠธ์— ๋Œ€ํ•œ ์–ธ๊ธ‰์ด ์—†์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ๊ทธ๋“ค์„ ์‹คํ–‰ํ–ˆ๋Š”์ง€ ์˜์‹ฌํ•ฉ๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•  Gradle Runner ๋‹จ๊ณ„์˜ Gradle ์ž‘์—… ์ž…๋ ฅ์œผ๋กœ test ๋ฅผ ์ง€์ •ํ•˜๊ฑฐ๋‚˜ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ•ด๋‹น gradle ์ž‘์—…์„ ์‹คํ–‰ํ•˜๋„๋ก ๊ตฌ์„ฑ๋œ Gradle ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ๋‹จ๊ณ„๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

์–ด๋–ค ๋นŒ๋“œ ID๋ฅผ ์‚ฌ์šฉํ–ˆ๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ๋Š”๋ฐ ์–ด๋–ป๊ฒŒ ๋ณด๋‚˜์š”?

๋นŒ๋“œ ๋ฒˆํ˜ธ๋ฅผ bitrise.io ๋นŒ๋“œ ๋ฒˆํ˜ธ๋กœ ์„ค์ •ํ–ˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ์˜๋ฏธํ•˜๋Š” ๊ฒฝ์šฐ ๊ธฐ๋ณธ์ ์œผ๋กœ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Android versionCode ๋ฐ versionName ๋ณ€๊ฒฝ ๋‹จ๊ณ„๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๊ท€ํ•˜์˜ ํ”ผ๋“œ๋ฐฑ์— ๋‹ค์‹œ ํ•œ๋ฒˆ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋“ฃ๊ณ  ์žˆ์œผ๋ฉฐ ์ด๋ฏธ ์„ค์ • ๊ฒฝํ—˜์˜ ์ด๋Ÿฌํ•œ ์ ์„ ๊ฐœ์„ ํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค! ;)

๋ฉ‹์ง„ ํ† ๋ก ์ž…๋‹ˆ๋‹ค. Carthage๋ฅผ ์ง€์›ํ•˜๋Š” BuddyBuild ๋Œ€์•ˆ์„ ์ฐพ๊ธฐ๊ฐ€ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

Nevercode๋ฅผ ์‚ดํŽด๋ณด๋‹ˆ cocoapods๋งŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

์•ฑ ์„ผํ„ฐ๊ฐ€ ์นด๋ฅดํƒ€๊ณ ๋ฅผ ์ง€์›ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

@jamesone

๊ฐ€์žฅ ์ข‹์€ ์˜ต์…˜์€ Bitrise๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. Bitrise๋Š” ํŒŒ์ดํ”„๋ผ์ธ bitbucket ๊ณผ ๊ฐ™์€ ํ”Œ๋žซํผ์„ ์ œ๊ณตํ•˜๋ฉฐ ๋‹จ๊ณ„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•„์š”์— ๋”ฐ๋ผ ๊ตฌ์„ฑํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์‹ค ์šฐ๋ฆฌ๋Š” bb์—์„œ bitrise๋กœ ์˜ฎ๊ฒผ๊ณ  Android์™€ iOS๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ๋ชจ๋“  ๊ฒƒ์ด ์™„๋ฒฝํ•ฉ๋‹ˆ๋‹ค!

๋ฉ‹์ง„ @cbedoy buddybuild ๊ฐ€ ๋ชจ๋“  ์ง€์ ์— ์ œ๊ณตํ•˜๋Š” ์„ค์น˜ ๊ฐ€๋Šฅํ•œ ๋นŒ๋“œ์— ๋Œ€ํ•ด ๋ฌด์—‡์„ ํ–ˆ์Šต๋‹ˆ๊นŒ? Bitrise์—๋Š” ์ด์— ๋Œ€ํ•œ ํ†ตํ•ฉ ๋˜๋Š” ์ง€์›์ด ์žˆ์Šต๋‹ˆ๊นŒ?

PR ๋˜๋Š” ํƒœ๊ทธ๋ฅผ ํ‘ธ์‹œํ•˜๊ฑฐ๋‚˜ ์ƒ์„ฑํ•  ๋•Œ ์›Œํฌํ”Œ๋กœ (๋งŽ์€ _๋‹จ๊ณ„_)๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ์ง€์ ๋ณ„๋กœ ๋นŒ๋“œ๋ฅผ ์˜ˆ์•ฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ์„ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

https://devcenter.bitrise.io/bitrise-cli/workflows/
https://devcenter.bitrise.io/bitrise-cli/steps/

bitrise๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์„ ์ดํ•ดํ•˜๋ฉด ํ•„์š”ํ•œ ๊ฒƒ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์›Œํฌํ”Œ๋กœ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๋ˆ„๊ตฐ๊ฐ€ PR์„ ์ƒ์„ฑํ•˜๋Š” ๊ฒฝ์šฐ unitTesting์„ ์‹คํ–‰ํ•˜๋Š” ์›Œํฌํ”Œ๋กœ๋ฅผ ์›ํ•˜๊ฑฐ๋‚˜ ๋งˆ์Šคํ„ฐ์— ํƒœ๊ทธ๊ฐ€ ์ง€์ •๋˜์—ˆ์„ ๋•Œ .ipa๋ฅผ ๋นŒ๋“œํ•˜๊ณ  ์ƒ์„ฑํ•˜๋Š” ์›Œํฌํ”Œ๋กœ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค.

Bitrise๋Š” unitTest, CodeCoverage ๋˜๋Š” ๋ณด๊ด€ ๋ฐ ๋ฐฐํฌ ์‹คํ–‰์„ ์œ„ํ•ด ํƒ€์‚ฌ _steps_๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” ๋„์ปค ์ด๋ฏธ์ง€์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋ฉ‹์ง„ ๋‚จ์ž! ์ •๋ง ํฅ๋ฏธ๋กญ๊ฒŒ ๋“ค๋ฆฝ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์กฐ์‚ฌํ•  ๊ฒƒ์ด๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰