diff --git a/.github/workflows/deploy_functions.yml b/.github/workflows/deploy_functions.yml new file mode 100644 index 0000000..a85c0b7 --- /dev/null +++ b/.github/workflows/deploy_functions.yml @@ -0,0 +1,59 @@ +name: Deploy to Firebase Functions + +on: + push: + branches: + - stg + workflow_dispatch: + +env: + FIREBASE_PROJECT_ID: "schemessg-v3-dev" + SERVICE_ACCOUNT_KEY: ${{ secrets.FIREBASE_SERVICE_ACCOUNT_SCHEMESSG_V3_DEV }} + +jobs: + deploy: + name: Deploy Functions + runs-on: ubuntu-latest + + steps: + # Step 1: Checkout the code + - name: Checkout Repository + uses: actions/checkout@v3 + + # Step 2: Set up Node.js environment + - name: Setup Node.js + uses: actions/setup-node@v3 + with: + node-version: 18 + + # Step 3: Set up Python environment (since your backend relies on Python as well) + - name: Setup Python + uses: actions/setup-python@v4 + with: + python-version: 3.10 + + # Step 4: Install Dependencies + - name: Install Dependencies + run: | + npm install -g firebase-tools@13.25.0 + cd functions + python -m venv venv + source venv/bin/activate + pip install --no-cache-dir -r requirements.txt + + # Step 5: Authenticate Firebase CLI + - name: Authenticate Firebase CLI + env: + FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN_SCHEMES_V3_DEV }} + run: | + echo "$SERVICE_ACCOUNT_KEY" > ${HOME}/serviceAccountKey.json + firebase auth:login:ci --project $FIREBASE_PROJECT_ID --token $FIREBASE_TOKEN + firebase use --add $FIREBASE_PROJECT_ID --token $FIREBASE_TOKEN + + # Step 6: Deploy All Functions + - name: Deploy Firebase Functions + run: | + firebase deploy --only functions --project $FIREBASE_PROJECT_ID + env: + FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }} + GOOGLE_APPLICATION_CREDENTIALS: ${HOME}/serviceAccountKey.json