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
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
+
The aim of this repository is to demonstrate how to deploy a [static website](client/src/App.js) written in React to a [Storage Blob](https://learn.microsoft.com/en-us/azure/storage/blobs/storage-blob-static-website). The
4
+
hosted SPA allows users to upload CSV files containing demographic and financial data about individuals. The files are uploaded to a storage blob by calling an HTTP-triggered Azure Function with the appropriate output bindings.
5
+
Once the CSV has been uploaded to the storage blob, another, blob-triggered Azure Function calculates correlations between various variables, such as experience, state, gender, and income.
6
+
The computed statistics are then stored in a new blob container, which is used to serve the results to the user.
7
+
These two 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
8
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.
9
+
The associated Azure infrastructure is deployed with a script (more on that below).
8
10
11
+
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).
12
+
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.
13
+
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
14
10
15
11
16
## Requirements
@@ -18,8 +23,8 @@ A pipeline has been set up to deploy the function app and the static web app to
18
23
19
24
## Allocate resources
20
25
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
30
@@ -41,20 +46,13 @@ graph TD
41
46
B -->|Contains| F
42
47
```
43
48
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
-

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