-
Notifications
You must be signed in to change notification settings - Fork 1
130 lines (111 loc) · 3.91 KB
/
deploy_resources.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
name: Build and deploy Python code to Azure Function App
on:
push:
branches:
- prod
workflow_dispatch:
permissions:
id-token: write
contents: read
env:
RESOURCE_GROUP_NAME: "{UPDATE-ME}"
FUNCTION_APP_NAME: "{UPDATE-ME}"
FUNCTION_APP_SLOT: "{UPDATE-ME}" # default = Production
AZURE_FUNCTION_APP_PACKAGE_PATH: "." # set this to the path to your web app project, defaults to the repository root
PYTHON_VERSION: "3.11" # set this to the python version to use (supports 3.6, 3.7, 3.8)
jobs:
deploy_function_app_resources:
name: Deploy Function App resources
runs-on: ubuntu-latest
steps:
- name: Authenticate to Azure
uses: azure/login@v1
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
- name: Checkout repository
uses: actions/checkout@v4
- name: Deploy Function App ARM Template
uses: azure/arm-deploy@v1
with:
resourceGroupName: ${{ env.RESOURCE_GROUP_NAME }}
template: functionAppArmTemplate.json
parameters: functionAppArmParameters.json
build_function_app_code:
name: Build Function App Code
runs-on: ubuntu-latest
needs: deploy_function_app_resources
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Python version
uses: actions/setup-python@v5
with:
python-version: ${{ env.PYTHON_VERSION }}
- name: Create and start virtual environment
run: |
python -m venv venv
source venv/bin/activate
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r api/requirements.txt
- name: Zip artifact for deployment
run: zip -r -j release.zip api/*
- name: Upload artifact for deployment job
uses: actions/upload-artifact@v3
with:
name: python-app
path: |
release.zip
!venv/
if-no-files-found: error
deploy_function_app_code:
name: Deploy Function App Code
runs-on: ubuntu-latest
needs: build_function_app_code
steps:
- name: Authenticate to Azure
uses: azure/login@v1
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
- name: Download artifact from build job
uses: actions/download-artifact@v3
with:
name: python-app
- name: Unzip artifact for deployment
run: |
unzip release.zip
ls -a
- name: Deploy to Azure Functions
uses: Azure/functions-action@v1
id: deploy-to-function
with:
app-name: "${{ env.FUNCTION_APP_NAME }}"
slot-name: "${{ env.FUNCTION_APP_SLOT }}"
package: ${{ env.AZURE_FUNCTION_APP_PACKAGE_PATH }}
scm-do-build-during-deployment: true
enable-oryx-build: true
deploy_logic_app:
name: Deploy Logic App
runs-on: ubuntu-latest
needs: deploy_function_app_code
steps:
- name: Authenticate to Azure
uses: azure/login@v1
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
- name: Checkout repository
uses: actions/checkout@v4
- name: Deploy Logic App ARM Template
uses: azure/arm-deploy@v1
with:
subscriptionId: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
resourceGroupName: ${{ env.RESOURCE_GROUP_NAME }}
template: logicAppArmTemplate.json
parameters: logicAppArmParameters.json