From 2cd869e2e5d60c89e80b1404e76e174701b6e056 Mon Sep 17 00:00:00 2001
From: Sebin Benjamin <sebinbenjamin@gmail.com>
Date: Mon, 18 Nov 2024 19:19:26 +1300
Subject: [PATCH] Add or update the Azure App Service build and deployment
 workflow config

---
 .github/workflows/main_world-apis.yml | 71 +++++++++++++++++++++++++++
 1 file changed, 71 insertions(+)
 create mode 100644 .github/workflows/main_world-apis.yml

diff --git a/.github/workflows/main_world-apis.yml b/.github/workflows/main_world-apis.yml
new file mode 100644
index 0000000..c1c0a5c
--- /dev/null
+++ b/.github/workflows/main_world-apis.yml
@@ -0,0 +1,71 @@
+# Docs for the Azure Web Apps Deploy action: https://github.com/Azure/webapps-deploy
+# More GitHub Actions for Azure: https://github.com/Azure/actions
+
+name: Build and deploy Node.js app to Azure Web App - world-apis
+
+on:
+  push:
+    branches:
+      - main
+  workflow_dispatch:
+
+jobs:
+  build:
+    runs-on: ubuntu-latest
+
+    steps:
+      - uses: actions/checkout@v4
+
+      - name: Set up Node.js version
+        uses: actions/setup-node@v3
+        with:
+          node-version: '20.x'
+
+      - name: npm install, build, and test
+        run: |
+          npm install
+          npm run build --if-present
+          npm run test --if-present
+
+      - name: Zip artifact for deployment
+        run: zip release.zip ./* -r
+
+      - name: Upload artifact for deployment job
+        uses: actions/upload-artifact@v4
+        with:
+          name: node-app
+          path: release.zip
+
+  deploy:
+    runs-on: ubuntu-latest
+    needs: build
+    environment:
+      name: 'Production'
+      url: ${{ steps.deploy-to-webapp.outputs.webapp-url }}
+    permissions:
+      id-token: write #This is required for requesting the JWT
+
+    steps:
+      - name: Download artifact from build job
+        uses: actions/download-artifact@v4
+        with:
+          name: node-app
+
+      - name: Unzip artifact for deployment
+        run: unzip release.zip
+      
+      - name: Login to Azure
+        uses: azure/login@v2
+        with:
+          client-id: ${{ secrets.AZUREAPPSERVICE_CLIENTID_223D478706BB4E87991401D1E29C0CA6 }}
+          tenant-id: ${{ secrets.AZUREAPPSERVICE_TENANTID_C344A9B47EBB495284ECDA0CB9766A08 }}
+          subscription-id: ${{ secrets.AZUREAPPSERVICE_SUBSCRIPTIONID_8DDAA1743A844AA3BBFA937EA35BF151 }}
+
+      - name: 'Deploy to Azure Web App'
+        id: deploy-to-webapp
+        uses: azure/webapps-deploy@v3
+        with:
+          app-name: 'world-apis'
+          slot-name: 'Production'
+          package: .
+          
\ No newline at end of file