Skip to content

chore: remove data display #16

chore: remove data display

chore: remove data display #16

Workflow file for this run

# Docs for the Azure Web Apps Deploy action: https://github.com/azure/functions-action
# More GitHub Actions for Azure: https://github.com/Azure/actions
name: Build and deploy Node.js project to Azure Function App - ubiquity-os
on:
push:
branches:
- development
- main
workflow_dispatch:
env:
AZURE_FUNCTIONAPP_PACKAGE_PATH: "." # set this to the path to your web app project, defaults to the repository root
NODE_VERSION: "20.10.0"
FUNCTION_NAME: ${{ github.ref == 'refs/heads/main' && 'ubiquity-os' || 'ubiquity-os-beta' }}
jobs:
build:
environment: ${{ github.ref == 'refs/heads/main' && 'main' || 'development' }}
runs-on: ubuntu-latest
steps:
- name: "Checkout GitHub Action"
uses: actions/checkout@v4
- name: Setup Node ${{ env.NODE_VERSION }} Environment
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
- uses: oven-sh/setup-bun@v2
- name: "Resolve Project Dependencies Using Bun"
shell: pwsh
run: |
pushd './${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }}'
bun install --frozen-lockfile
bun run jest:test
bun run build
bun rimraf node_modules
bun install --frozen-lockfile --production
popd
- 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
update-environment:
environment: ${{ github.ref == 'refs/heads/main' && 'main' || 'development' }}
runs-on: ubuntu-latest
needs: build
permissions:
id-token: write
steps:
- name: Generate local.settings.json
env:
GITHUB_SECRETS: ${{ toJson(secrets) }}
shell: bash
run: |
# Parse the JSON secrets
secrets=$(echo "$GITHUB_SECRETS" | jq -c '.')
# Create the base settings object
settings=$(jq -n '{
"IsEncrypted": false,
"Values": {}
}')
# Define excluded prefixes
excluded_prefixes=("GITHUB_" "ACTIONS_" "AZUREAPPSERVICE_")
# Iterate through secrets and add non-excluded ones
for secret_name in $(echo "$secrets" | jq -r 'keys[]'); do
# Check if the secret should be included
include=true
for prefix in "${excluded_prefixes[@]}"; do
if [[ "$secret_name" == "$prefix"* ]]; then
include=false
break
fi
done
# Add the secret if it passes the filter
if [ "$include" = true ]; then
secret_value=$(echo "$secrets" | jq -r ".[\"$secret_name\"]")
settings=$(echo "$settings" | jq --arg name "$secret_name" --arg value "$secret_value" '.[$name] = $value')
fi
done
# Output the final settings to local.settings.json
echo "$settings" | jq '.' > local.settings.json
- uses: azure/login@v2
with:
client-id: ${{ secrets.AZUREAPPSERVICE_CLIENTID }}
tenant-id: ${{ secrets.AZUREAPPSERVICE_TENANTID }}
subscription-id: ${{ secrets.AZUREAPPSERVICE_SUBSCRIPTIONID }}
- name: Azure CLI script to upload environment
uses: azure/cli@v2
with:
azcliversion: latest
inlineScript: |
az account show
az functionapp config appsettings set \
--name ${{ env.FUNCTION_NAME }} \
--resource-group ubiquity-os_group \
--settings @local.settings.json
deploy:
environment: ${{ github.ref == 'refs/heads/main' && 'main' || 'development' }}
runs-on: ubuntu-latest
needs: build
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 }}
tenant-id: ${{ secrets.AZUREAPPSERVICE_TENANTID }}
subscription-id: ${{ secrets.AZUREAPPSERVICE_SUBSCRIPTIONID }}
- name: "Run Azure Functions Action"
uses: Azure/functions-action@v1
id: fa
with:
app-name: "${{ env.FUNCTION_NAME }}"
slot-name: "Production"
package: ${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }}