Skip to content

Deploy Azure Function #3

Deploy Azure Function

Deploy Azure Function #3

name: Deploy Azure Function
on:
push:
branches:
- main
paths:
- 'azure_webhook/**'
- 'moon_reader/**'
workflow_dispatch:
env:
PYTHON_VERSION: '3.14'
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install uv
uses: astral-sh/setup-uv@v5
- name: Setup Python ${{ env.PYTHON_VERSION }}
uses: actions/setup-python@v5
with:
python-version: ${{ env.PYTHON_VERSION }}
- name: Build dependencies
shell: bash
run: |
cd azure_webhook
# Export requirements, avoiding editable installs for production
uv export --no-dev --no-editable --format requirements-txt > requirements.txt
# Install dependencies directly into the Azure Functions package format
uv pip install --target=".python_packages/lib/site-packages" -r requirements.txt
# Clean up any cached files to reduce deployment size
find .python_packages -type d -name "__pycache__" -exec rm -rf {} + || true
- name: Create ZIP Deployment Package
shell: bash
run: |
cd azure_webhook
zip -r ../deploy.zip . -x "wheels/*" "requirements.txt"
- name: Azure Login
uses: azure/login@v2
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: Deploy via Azure CLI
uses: azure/cli@v2
with:
azcliversion: latest
inlineScript: |
az functionapp deployment source config-zip -g ${{ vars.AZURE_RESOURCE_GROUP }} -n ${{ vars.AZURE_FUNCTIONAPP_NAME }} --src deploy.zip