[Android] Github Action์„ ์ด์šฉํ•˜์—ฌ apk ํŒŒ์ผ Slack์œผ๋กœ ๋‚ด๋ณด๋‚ด๊ธฐ

2021. 5. 6. 18:03ใ†๐Ÿ“ฑAndroid/๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป Android ๊ฐœ๋ฐœ ์ผ์ง€

๋ฐ˜์‘ํ˜•

+) 2021.05.23 

apk ์ถ”์ถœ ํ›„ ์„ค์น˜์‹œ '์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์„ค์น˜๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค' ์˜ค๋ฅ˜๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. 

'./gradlew assembleRelease' ๊ฐ€ ์•„๋‹Œ Debug apk๋กœ './gradlew assembleDebug' github action ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค !

(./gradlew assembleDebug' ์‹œ apk ๋ช…๋„ ํ™•์ธ ํ›„ ์ˆ˜์ •ํ•ด์•ผํ•จ!)

 

Github CI/CD๋ฅผ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋„์™€์ฃผ๋Š” Github Action์„ ์ด์šฉํ•˜์—ฌ apkํŒŒ์ผ์„ slack์œผ๋กœ ์ถ”์ถœํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ ์–ด๋ณด๋„๋ก ํ• ๊ฒŒ์š” : )

 

Github Action์ด๋ž€?!

Automate, customize, and execute your software development workflows right in your repository with GitHub Actions. You can discover, create, and share actions to perform any job you'd like, including CI

๊นƒํ—ˆ๋ธŒ ์ž์ฒด์—์„œ ์›ํ•˜๋Š” ์ž‘์—…๋“ค์„ ์ง€์ •ํ•˜๊ณ , ์„ค์ •ํ•˜์—ฌ ์ž‘์—… workflow๋ฅผ ์ž๋™์œผ๋กœ ์‹คํ–‰์‹œํ‚ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

Github Action์„ ํ†ตํ•ด CI/CD ์›Œํฌ ํ”Œ๋กœ์šฐ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

 

 

์Šฌ๋ž™ ์•ฑ ๋งŒ๋“ค๊ธฐ

Slack ์ฑ„๋„์ด ์žˆ๋‹ค๋Š” ์ „์ œํ•˜์— ๋จผ์ € ์›Œํฌ ํ”Œ๋กœ์šฐ ๋งŒ๋“ค๊ธฐ ์ „ ์ถ”์ถœํ•œ apk๋ฅผ ์Šฌ๋ž™์— ๋ณด๋‚ด์ฃผ๋Š” ์Šฌ๋ž™ ์•ฑ์„ ๋งŒ๋“ค์–ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์•„๋ž˜ ํŽ˜์ด์ง€์—์„œ ์Šฌ๋ž™ ์•ฑ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

 

Slack API: Applications | Slack

Your Apps Don't see an app you're looking for? Sign in to another workspace.

api.slack.com

์•„๋ž˜ ํŽ˜์ด์ง€ ๋“ค์–ด๊ฐ€ Create New App์„ ํด๋ฆญํ•ด์ฃผ์„ธ์š”!

 

 

์›ํ•˜๋Š” ์•ฑ ์ด๋ฆ„๊ณผ ์Šฌ๋ž™ ์ฑ„๋„์„ ์„ ํƒํ•ด์ฃผ์„ธ์š”!

 

์Šฌ๋ž™ ์•ฑ ๊ถŒํ•œ ์„ค์ • ๋ฐ Bot Token ๋ฐœ๊ธ‰ ๋ฐ›๊ธฐ 

apk ํŒŒ์ผ์„ ์Šฌ๋ž™์— ๋ณด๋‚ด๋ ค๋ฉด write์˜ ๊ถŒํ•œ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค!

Features -> OAuth&Permissions ํƒญ์— ๋“ค์–ด๊ฐ€ ์•„๋ž˜๋กœ ์Šคํฌ๋กค ํ›„, Scopes ์—์„œ Bot Token Scopes์— files:write ๊ถŒํ•œ์„ ์ถ”๊ฐ€ํ•ด์ฃผ์„ธ์š”!

 

 

์ œ๋Œ€๋กœ ์ถ”๊ฐ€ํ•˜์‹œ๋ฉด ์•„๋ž˜ ์‚ฌ์ง„๊ณผ ๊ฐ™์ด ์ถ”๊ฐ€๊ฐ€ ๋ฉ๋‹ˆ๋‹ค!

 

๊ทธ ๋‹ค์Œ Bot์˜ Token์„ ๋ฐœ๊ธ‰ ๋ฐ›๊ธฐ ์œ„ํ•ด ๋‹ค์‹œ ์œ„๋กœ ์Šคํฌ๋กคํ•˜์—ฌ Install to Workspace ๋ฅผ ๋ˆŒ๋Ÿฌ ์ค๋‹ˆ๋‹ค : ) 

ํด๋ฆญ ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ์ฐฝ์ด ๋œจ๋Š”๋ฐ ์ด๋•Œ, ํ—ˆ์šฉ์„ ๋ˆŒ๋Ÿฌ์ฃผ์„ธ์š”!

 

ํ—ˆ์šฉ์„ ๋ˆ„๋ฅด์‹œ๋ฉด Bot User OAuth Token์ด ์ƒ์„ฑ ๋ฉ๋‹ˆ๋‹ค !!

์ด ๊ฐ’์€ github secrets ์— ๋“ฑ๋ก์ด ํ•„์š”ํ•œ ๊ฐ’ ์ค‘ ํ•˜๋‚˜ ์ž…๋‹ˆ๋‹ค!

 

Webhooks Token ๋ฐœ๊ธ‰ ๋ฐ›๊ธฐ

์Šฌ๋ž™์— ์ƒ์„ฑํ•œ app์ด ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด๋‚ด๋ ค๋ฉด Activate Incoming Webhooks๊ฐ€ ON ์ƒํƒœ๊ฐ€ ๋˜์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.

Features -> IncomingWebhooks ํŽ˜์ด์ง€๋ฅผ ๋ˆ„๋ฅด๋ฉด ์ดˆ๊ธฐ์—๋Š” Off ์ƒํƒœ๋กœ ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

On์œผ๋กœ ๋ฐ”๊ฟ”์ฃผ์„ธ์š”!

 

On์œผ๋กœ ๋ฐ”๊พธ๊ฒŒ ๋˜๋ฉด ์ƒ๋‹จ์— ๊ฒฝ๊ณ ์ฐฝ์ด ๋œจ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค! ๊ฒฝ๊ณ ์ฐฝ์— reinstall your app์„ ๋ˆŒ๋Ÿฌ์ฃผ์„ธ์š”!!

 

reinstall your app์„ ๋ˆ„๋ฅด๊ฒŒ ๋˜๋ฉด ์•„๋ž˜์— ์ฑ„๋„์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ! 

์›ํ•˜๋Š” ์ฑ„๋„์„ ์„ ํƒ ํ›„, ํ—ˆ์šฉ์„ ๋ˆ„๋ฅด๊ณ  ์Šฌ๋ž™ ํ•ด๋‹น ์ฑ„๋„์— ๋“ค์–ด๊ฐ€๋ณด๋ฉด, ์•„๋ž˜์™€ ๊ฐ™์ด ์ฑ„๋„์— apk_deploy๊ฐ€ ์ถ”๊ฐ€ ๋œ ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!!

์Šคํฌ๋กค ํ•˜๋ฉด, ์•„๋ž˜์— WebhookUrl ๊ฐ’์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฐ’ ๋˜ํ•œ, github secrets์— ์ถ”๊ฐ€ํ•ด์•ผ๋  ๊ฐ’์ž…๋‹ˆ๋‹ค : ) 

 

์Šฌ๋ž™์— apk_deploy ์—ฐ๊ฒฐํ•˜๊ธฐ

์œ„์—์„œ ์ถ”๊ฐ€๋Š” ๋˜์—ˆ์ง€๋งŒ ์—ฐ๊ฒฐ์ด ๋œ ์ƒํƒœ๋Š” ์•„๋‹™๋‹ˆ๋‹ค. ๊ผญ! apk๋ฅผ ๋ณด๋‚ด๋Š” ์ž‘์—…์„ ํ•˜์‹œ๋ ค๋ฉด apk_deploy์™€ ์Šฌ๋ž™ ์—ฐ๊ฒฐ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์ด ์ž‘์—…์„ ํ•˜์ง€ ์•Š๊ณ  ๊ทธ๋ƒฅ ๋„˜์–ด๊ฐ€์‹œ๋ฉด ๋’ค์— github action ์ฝ”๋“œ์—์„œ apk๋ฅผ ์Šฌ๋ž™์— ๋ณด๋‚ผ๋•Œ channel not in ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค!!

 

์Šฌ๋ž™ ํ•ด๋‹น ์›Œํฌ์ŠคํŽ˜์ด์Šค์— ๋“ค์–ด๊ฐ€๋ฉด ์•„๋ž˜ ์•ฑ ์ด๋ผ๋Š” ์นดํ…Œ๊ณ ๋ฆฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์•ฑ ์ถ”๊ฐ€๋ฅผ ๋ˆŒ๋Ÿฌ ์ฃผ์„ธ์š” !!

์•ฑ ์ถ”๊ฐ€๋ฅผ ๋ˆ„๋ฅด์‹œ๋ฉด, ์•ฑ์„ ๊ฒ€์ƒ‰ํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๊นŒ ์œ„์—์„œ ๋งŒ๋“ค์–ด์ค€ ์•ฑ ์ด๋ฆ„์ธ apk_deploy๋ฅผ ๊ฒ€์ƒ‰ํ•˜์—ฌ, ์ถ”๊ฐ€ํ•ด์ฃผ์„ธ์š”!

์•„๋ž˜์™€ ๊ฐ™์ด ์ถ”๊ฐ€๋œ ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค : )

 

apk_deploy๋ฅผ ์„ ํƒํ•œ ๋’ค ์›ํ•˜๋Š” ์Šฌ๋ž™ ์ฑ„๋„์„ ์ถ”๊ฐ€ํ•ด์ฃผ์„ธ์š”!

์ถ”๊ฐ€ ํ›„, ํ•ด๋‹น ์ฑ„๋„์— ๋“ค์–ด๊ฐ€๋ณด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฉ”์„ธ์ง€๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

์Šฌ๋ž™์— apk๋ฅผ ์ „๋‹ฌํ•˜๋Š” app์„ ์ƒ์„ฑํ›„ ์—ฐ๊ฒฐํ•˜๋Š” ๋ชจ๋“  ๊ณผ์ •์€ ๋๋‚ฌ์Šต๋‹ˆ๋‹ค!!

์ด์ œ github action์„ ๋งŒ๋“ค์–ด ๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!!

 

 

Github Action Secret ๊ฐ’ ์ถ”๊ฐ€ํ•˜๊ธฐ

Github Actions๋ฅผ ์„ค์ •ํ•  ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋กœ ์ด๋™ํ•ด์ฃผ์„ธ์š”!

์ด๋™ํ›„, Settings -> Secrets ์— New repository secret์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์›ํ•˜๋Š” ์ด๋ฆ„์œผ๋กœ ์œ„์—์„œ ์ƒ์„ฑํ•œ ๊ฐ’์„ ์ถ”๊ฐ€ํ•ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค !!

SLACK_CHANNEL_DEPOLY : ํ•ด๋‹น ์ฑ„๋„ ๋ช… ๋˜๋Š” ์ฑ„๋„ id ๊ฐ’

์ €๋Š” ์œ„์—์„œ apk_deploy ์•ฑ์„ ์—ฐ๊ฒฐํ•œ ์ฑ„๋„๋ช…์ด apk ์ด๋ฏ€๋กœ apk๋ฅผ ๋„ฃ์–ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค!

SLACK_READ_WRITE_TOKEN : ์œ„์—์„œ ๋งŒ๋“  Bot์˜ ํ† ํฐ ๊ฐ’

SLACK_WEBHOOK_URL : ์œ„์—์„œ ๋งŒ๋“ค์–ด์ค€ WebHook Url ์ฃผ์†Œ ๊ฐ’

 

Github Action ์ฝ”๋“œ ์ž‘์„ฑํ•ด์ฃผ๊ธฐ

์ด์ œ ์ง„์งœ ๋งˆ์ง€๋ง‰ ๋‹จ๊ณ„์ธ Github actions๋ฅผ ๋งŒ๋“ค์–ด์ฃผ๋ฉด ๋์ž…๋‹ˆ๋‹ค!

Actions -> New workflow๋ฅผ ํ†ตํ•ด github actions๋ฅผ ๋งŒ๋“ค์–ด apk ๋ฅผ ์ถ”์ถœํ•˜๊ณ , slack์— ๋ณด๋‚ด๋Š” workflow๋ฅผ ์ž‘์„ฑํ•ด ๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์•„๋ž˜์™€ ๊ฐ™์€ ํ…œํ”Œ๋ฆฟ์œผ๋กœ workflows ์ฝ”๋“œ๊ฐ€ ๋ฏธ๋ฆฌ ์ž‘์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

name : ํ•ด๋‹น github action ์ด๋ฆ„

on:
  # Trigger the workflow on push or pull request,
  # but only for the main branch
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

push ๋˜๋Š” pull_request์— branch ๋ช…์„ ์ถ”๊ฐ€ํ•˜์—ฌ ํ•ด๋‹น branch๋ช…์—์„œ push, pull_request๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์ž‘์„ฑํ•œ github action workflow๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

 

steps: ์›ํ•˜๋Š” ์ž‘์—… (์ˆœ์ฐจ์ ์œผ๋กœ ์ž‘์„ฑ)

 

 

- Java JDK ์„ค์น˜

 - name: Set up JDK 1.8
      uses: actions/setup-java@v1
      with:
       java-version: 1.8

- ํ˜„์žฌ ๋‚ ์งœ ๊ตฌํ•˜๊ธฐ

 - name: Get current date
      id: date
      run: echo "::set-output name=date::$(date +'%Y-%m-%d')"

- Build ํ•˜๊ธฐ

  - name: Build APK
      run: bash ./gradlew assembleRelease --stacktrace

 

- apk ํŒŒ์ผ slack์— ์ „๋‹ฌํ•˜๊ธฐ

์•„๋ž˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ™œ์šฉํ•˜์—ฌ apk๋ฅผ ์ถ”์ถœํ•˜๊ณ  slack์— ๋ณด๋‚ด๋Š” ์ž‘์—…์„ ์ง„ํ–‰ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค : )

 

MeilCli/slack-upload-file

upload file to slack action. Contribute to MeilCli/slack-upload-file development by creating an account on GitHub.

github.com

 - run: './gradlew assembleRelease'
    - uses: MeilCli/slack-upload-file@v1
      with:
        slack_token: ${{ secrets.SLACK_READ_WRITE_TOKEN }}
        channels: ${{ secrets.SLACK_CHANNEL_DEPLOY }}
        file_path: 'app/build/outputs/apk/release/app-release-unsigned.apk'
        file_name: 'app-release-unsigned.apk'
        file_type: 'apk'
        initial_comment: '${{ github.ref }} ํ…Œ์ŠคํŠธ ์•ฑ ์Šฌ๋ž™ ๋ฐฐํฌ ์„ฑ๊ณต'

slack_token : secretsํŒŒ์ผ๋กœ ๋งŒ๋“ค์–ด์ค€ Bot Token๊ฐ’ ๋„ฃ์–ด์ฃผ๊ธฐ

channels : ์ฑ„๋„๋ช… or ์ฑ„๋„ id๊ฐ’

file_path : ๋นŒ๋“œํ›„ ์ƒ์„ฑ๋˜๋Š” apk ๊ฐ’ ๊ฒฝ๋กœ

file_name : ํ•ด๋‹น ํŒŒ์ผ ๋ช…

file_type : apk

initial_comment : ์›ํ•˜๋Š” commet ๋ฉ”์„ธ์ง€ 

 

file_path, file_name ์•Œ์•„๋ณด๊ธฐ

file_path์™€ file_name์€ ํ„ฐ๋ฏธ๋„์— ๋“ค์–ด๊ฐ€ ํ•ด๋‹น Android Project ํŒŒ์ผ ๋ช…์œผ๋กœ ์ด๋™ํ•˜์—ฌ 

./gradlew assembleRelease๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์ƒ๊ธฐ๋Š” app/build/outputs/apk/realease์— ๋“ค์–ด๊ฐ€๋ณด๋ฉด ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

apk ๋ช…์ด ๋‹ค ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ผญ ํ™•์ธํ•ด์ฃผ์„ธ์š”!!

 

- apk artifact ์—…๋กœ๋“œ ํ•˜๊ธฐ

    - name: ํ…Œ์ŠคํŠธ์šฉ apk artifact ์—…๋กœ๋“œ
      uses: actions/upload-artifact@v2
      with:
        name: app-release-unsigned.apk
        path: app/build/outputs/apk/release/app-release-unsigned.apk
        

- slack์— message ์ „์†กํ•˜๊ธฐ

        
    - name: action-slack
      uses: 8398a7/action-slack@v3.8.0
      with:
        status: ${{ job.status }}
        author_name: ๋นŒ๋“œ ์•Œ๋ฆผ
      env:
         SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}

 

 

github actions ์ „์ฒด ์ฝ”๋“œ

# This workflow will build a Java project with Gradle
# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-gradle

name: Android CD

on:
  push:
    branches: master
    
  pull_request:
    branches: master
    
jobs:
  build:
    runs-on: ubuntu-16.04
    steps:
    - uses: actions/checkout@v1
    - name: Set up JDK 1.8
      uses: actions/setup-java@v1
      with:
       java-version: 1.8
       
    - name: Get current date
      id: date
      run: echo "::set-output name=date::$(date +'%Y-%m-%d')"
     
     
    - name: Build APK
      run: bash ./gradlew assembleRelease --stacktrace
     
     
    - run: './gradlew assembleRelease'
    - uses: MeilCli/slack-upload-file@v1
      with:
        slack_token: ${{ secrets.SLACK_READ_WRITE_TOKEN }}
        channels: ${{ secrets.SLACK_CHANNEL_DEPLOY }}
        file_path: 'app/build/outputs/apk/release/app-release-unsigned.apk'
        file_name: 'app-release-unsigned.apk'
        file_type: 'apk'
        initial_comment: '${{ github.ref }} ํ…Œ์ŠคํŠธ ์•ฑ ์Šฌ๋ž™ ๋ฐฐํฌ ์„ฑ๊ณต'

       
    - name: ํ…Œ์ŠคํŠธ์šฉ apk artifact ์—…๋กœ๋“œ
      uses: actions/upload-artifact@v2
      with:
        name: app-release-unsigned.apk
        path: app/build/outputs/apk/release/app-release-unsigned.apk

 

 

 

 

์œ„์™€ ๊ฐ™์ด github actions ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜์—ฌ ์ถ”๊ฐ€ํ•ด์ค€๋’ค, push๋‚˜ pull request๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ํ•ด๋‹น github actions workflow ์ž‘์—…์„ ์ง„ํ–‰ํ•˜๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค !!

 

 

์‹คํ–‰ ๋’ค, ํ•ด๋‹น github actions workflow๊ฐ€ ์„ฑ๊ณตํ•˜๋ฉด, ์•„๋ž˜์™€ ๊ฐ™์ด ์Šฌ๋ž™์— apk๊ฐ€ ์ž๋™ ๋ฐฐํฌ๋˜์–ด ์ „๋‹ฌ๋˜์–ด์ง‘๋‹ˆ๋‹ค !!!

 

 

Github actions์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค.

์ž˜ ์ด์šฉํ•˜๋ฉด ๋‹ค์–‘ํ•œ CI๋„ workflows ์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ์•„์ฃผ ๊ฐ•๋ ฅํ•œ ์ž๋™ํ™” ๋„๊ตฌ์ธ ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค !

๊ฐ„๋‹จํ•˜๊ฒŒ apk๋ฅผ ์ž๋™ ๋ฐฐํฌ ํ•ด๋ณด์„ธ์š” !! ์ฝ์–ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค : )

 

 

์ฐธ๊ณ  ์ž๋ฃŒ

 

 

Github Actions ๋‹ฌ๊ธฐ (Slack)

 

gurumee92.github.io

 

Github Action์œผ๋กœ APK ์ž๋™๋ฐฐํฌํ•˜๊ธฐ - To infinity and beyond

[TOC] Bitriste๋กœ APK ์ž๋™ ๋ฐฐํฌํ•˜๊ธฐ ์— ์ด์–ด์„œ Github์˜ ์‹ ๊ธฐ๋Šฅ Github Action์œผ๋กœ ์•ˆ๋“œ๋กœ์ด๋“œ APK๋ฅผ ์ž๋™๋นŒ๋“œํ•˜๋Š” ๊ฒƒ์„ ๋งŒ๋“ค์–ด ๋ณด์•˜๋‹ค. Github Action์€ ์‚ฌ์šฉ๋Ÿ‰์— ๋”ฐ๋ผ ๊ณผ๊ธˆ๋˜๋Š”๋ฐ ๊ฐœ์ธ์ด ์‚ฌ์šฉํ•˜๋Š” ์ •๋„๋Š” ๋ฌด

coooldoggy.github.io

 

 

 

๋ฐ˜์‘ํ˜•