Search
🎆

Cloud Function 배포 자동화 with Github Action

생성일
2020/11/20 16:05
태그
Firebase
Firebase Cloud Function
속성
속성 1
속성 2
2021/01/30 08:56
모바일 앱에서 open API 를 직접 호출하던 부분을 하나씩 Firebase Cloud function 으로 옮기고 있습니다.
참고로, 공공데이터 API등 OpenAPI를 이용할 때 모바일에서 API Key, Client Key 등을 이용해 직접 호출하는 것은 바람직 하지 않습니다.
OpenAPI 기능을 제공하는 회사, 공공기관은 우리가 제어할 수 없는 영역입니다. OpenAPI 에서 장애가 발생하는 경우 Risk 를 감당해야 하는 쪽은 제가 되기 때문입니다. (적지 않아요... 공공기관 API 는 트래픽이 몰리면 잘 터지고.. API Key limit 제한이 걸리기도 하고..)
이 Risk 를 감당할 수 있는 영역으로 가져오는 방법이 본인이 운영하는 서버에서 OpenAPI 를 호출하도록 하는 부분입니다.
외부 에러 발생시 서비스에서 감당할 수 있는 오류코드로 변환 가능
API key 다수 개 활용 Shuffling 하여 Call limit 우회
무튼, Firebase Cloud functiion 에 작업이 많아지면서 배포도 자주 하게 되었습니다.
firebase deploy
Bash
복사
터미널에 위 명령어만 치면 배포가 됩니다....만! 개발자는 이마저도 귀찮습니다.
어짜피 cloud function 도 Github으로 관리하는데, Github의 main 브랜치를 기준으로 하여 항상 최신의 main 브랜치로 배포하도록 설정하도록 하겠습니다.

1. Firebase Token 발급

Github Action 이 내 Firebase deploy 하기 위해서 Firebase token 을 전달해야합니다.
firebase login:ci
Bash
복사
위 명령어를 터미널에 실행합니다.
Chrome 혹은 기본 설정된 웹브라우저에서 Google 로그인창이 뜨고 로그인을 하면 Terminal 에서 Firebase Token 을 얻을 수 있습니다.

2. Github Repository 에 Secret 등록

3. Github Action Flow Setting

name: Build and Deploy on: push: branches: - main jobs: deploy: name: Deploy runs-on: ubuntu-latest steps: - name: Checkout Repo uses: actions/checkout@main - name: Install Dependency run: npm install working-directory: ./functions - name: Deploy uses: w9jds/firebase-action@master with: args: deploy --only functions env: FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }} PROJECT_ID: mosi-ac123
YAML
복사
{Git root directory}/.github/workflows/firebase-deploy.yml