You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Updated pipeline to use service principal with federated credential to authenticate with Azure in order to deploy the static web app instead of using the deprecated approach
Static web app built with the React framework. The [application](client/src/App.js) allows users to upload CSV files to a storage blob via an HTTP-triggered function.
4
-
The uploaded files are then processed by a blob-triggered function, which stores the results in a separate container. Aforementioned functions
5
-
are present in the [function_app.py](hvalfangst_function/function_app.py) python script - which is the main entrypoint of our Azure Function App instance.
3
+
This repository contains a [static web app](client/src/App.js), which enables users to upload CSV files containing demographic and financial data about individuals to a designated storage blob via an HTTP-triggered Azure Function.
4
+
Once uploaded to the blob, another, blob-triggered function calculates correlations between various variables, such as experience, state, gender, and income. The computed statistics are then stored in a separate storage blob.
5
+
These functions are defined in the python script [function_app.py](hvalfangst_function/function_app.py) - which is the main entrypoint of our Azure Function App instance.
6
6
7
-
A pipeline has been set up to deploy the function app and the static web app to Azure using GitHub Actions. The pipeline is triggered by a push to the main branch or by manually running the workflow.
7
+
The associated Azure infrastructure is deployed with a script (more on that below).
8
8
9
+
A branch-triggered pipeline has been set up to deploy our code to the respective Azure resources using a GitHub Actions Workflows [script](.github/workflows/deploy_to_azure.yml).
10
+
The two functions are deployed using the Function App's associated **publish profile**, whereas the static web app is deployed using a service principal configured with a federated credential.
11
+
Note that the static web app is actually hosted directly on a storage blob, which is configured to serve static websites. Thus, deploying the web app is simply a matter of uploading the files to the designated blob container.
9
12
10
13
11
14
## Requirements
@@ -18,8 +21,8 @@ A pipeline has been set up to deploy the function app and the static web app to
18
21
19
22
## Allocate resources
20
23
21
-
The shell script [allocate_resources](infra/allocate_resources.sh) creates Azure resources specified in a
It will create the following hierarchy of resources:
25
28
@@ -41,20 +44,13 @@ graph TD
41
44
B -->|Contains| F
42
45
```
43
46
44
-
## Deallocate resources
45
-
46
-
The shell script [deallocate_resources](infra/deallocate_resources.sh) deletes our Azure resources.
47
-
48
-
# CI/CD
49
-
50
-
A CI/CD pipeline for deploying our [Function App](hvalfangst_function/function_app.py) to Azure has been set up using a GitHub Actions workflows [script](.github/workflows/deploy_to_azure.yml). The pipeline is either triggered by a push to the main branch or by manually running the workflow.
51
-
In order for the pipeline to work, the following secrets must be set in the repository settings:
52
-
53
-

54
-
55
-
The associated values of the aforementioned secret can be retrieved from the Azure portal, under our deployed Function App.
56
-
Click on the **Get publish profile** button and copy/paste the file content into the secret value field.
57
-
58
-

47
+
## GitHub secrets
48
+
Four secrets are required in order for the GitHub Actions Workflow script to deploy the code to the Azure resources.
49
+
As may be observed in the [script](.github/workflows/deploy_to_azure.yml), these are:
59
50
51
+
-**AZURE_CLIENT_ID**: Used to authenticate the service principal in order to deploy the static web app
52
+
-**AZURE_SUBSCRIPTION_ID**: Used to authenticate the service principal in order to deploy the static web app
53
+
-**AZURE_TENANT_ID**: Used to authenticate the service principal in order to deploy the static web app
54
+
-**PUBLISH_PROFILE**: Used to deploy our two functions to the Azure Function App
0 commit comments