Create azure_pipeline.yaml

This commit is contained in:
Oli Passey
2025-01-27 16:50:16 +00:00
parent b8129538c3
commit ae49dbdc1d

71
azure_pipeline.yaml Normal file
View File

@@ -0,0 +1,71 @@
trigger:
- main
pool:
vmImage: 'ubuntu-latest'
variables:
- group: MyVariableGroup
stages:
- stage: DeployInfrastructure
displayName: 'Deploy Infrastructure'
jobs:
- job: Deploy
displayName: 'Deploy Resources'
steps:
- task: AzureCLI@2
inputs:
azureSubscription: $(azureServiceConnection)
scriptType: 'bash'
scriptLocation: 'inlineScript'
inlineScript: |
# Create resource group
az group create --name $(resourceGroupName) --location $(location)
# Create storage account
az storage account create --name $(storageAccountName) --location $(location) --resource-group $(resourceGroupName) --sku Standard_LRS
# Create App Service Plan
az appservice plan create --name $(appServicePlanName) --resource-group $(resourceGroupName) --location $(location) --sku Y1 --is-linux
# Create Function App
az functionapp create --name $(functionAppName) --storage-account $(storageAccountName) --resource-group $(resourceGroupName) --plan $(appServicePlanName) --runtime python --runtime-version 3.9 --functions-version 3
# Create Application Insights
az monitor app-insights component create --app $(appInsightsName) --location $(location) --resource-group $(resourceGroupName)
# Configure Application Insights for Function App
appInsightsKey=$(az monitor app-insights component show --app $(appInsightsName) --resource-group $(resourceGroupName) --query "instrumentationKey" --output tsv)
az functionapp config appsettings set --name $(functionAppName) --resource-group $(resourceGroupName) --settings "APPINSIGHTS_INSTRUMENTATIONKEY=$appInsightsKey"
- stage: DeployCode
displayName: 'Deploy Code'
dependsOn: DeployInfrastructure
jobs:
- job: Deploy
displayName: 'Deploy Function App Code'
steps:
- checkout: self
- task: UsePythonVersion@0
inputs:
versionSpec: '3.x'
addToPath: true
- script: |
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
displayName: 'Install dependencies'
- task: ArchiveFiles@2
inputs:
rootFolderOrFile: '$(System.DefaultWorkingDirectory)'
includeRootFolder: false
archiveType: 'zip'
archiveFile: '$(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip'
replaceExistingArchive: true
- task: AzureWebApp@1
inputs:
azureSubscription: $(azureServiceConnection)
appType: 'functionapp'
appName: $(functionAppName)
package: '$(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip'