Skip to content

Commit 239e113

Browse files
committed
Added Actions for Test and Prod
1 parent 217532a commit 239e113

File tree

4 files changed

+184
-0
lines changed

4 files changed

+184
-0
lines changed

.github/workflows/deploy-prod.yml

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
name: Deploy LearningHub-Moodle to Prod
2+
on:
3+
push:
4+
branches:
5+
- main
6+
7+
permissions:
8+
id-token: write
9+
contents: read
10+
11+
jobs:
12+
build_and_push_docker_image:
13+
runs-on: ubuntu-latest
14+
environment: prod
15+
name: Build and push learninghub moodle cron docker image
16+
env:
17+
AZURE_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
18+
AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
19+
AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }}
20+
AZURE_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }}
21+
22+
steps:
23+
- uses: actions/checkout@v2
24+
25+
- name: Replace values in appsettings.json
26+
run : |
27+
sed -i -e 's|CRON-URL|${{ vars.CRON_URL }}|g' appsettings.json
28+
sed -i -e 's/CRON-PASSWORD/${{ secrets.CRON_PASSWORD }}/g' appsettings.json
29+
30+
- name: 'Az CLI login'
31+
uses: azure/login@v1
32+
with:
33+
client-id: ${{ secrets.AZURE_CLIENT_ID }}
34+
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
35+
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
36+
37+
- name: Log in to Azure Container Registry
38+
run: az acr login --name ${{ vars.AZURE_CONTAINER_REGISTRY_NAME }}
39+
40+
- name: Build and push Docker image
41+
run: |
42+
docker build -t ${{ vars.AZURE_CONTAINER_REGISTRY_NAME }}.azurecr.io/${{ vars.DOCKER_IMAGE_NAME }}:latest .
43+
docker push ${{ vars.AZURE_CONTAINER_REGISTRY_NAME }}.azurecr.io/${{ vars.DOCKER_IMAGE_NAME }}:latest
44+
45+
deploy_learninghubmoodlecron_to_cluster:
46+
needs: build_and_push_docker_image
47+
runs-on: ubuntu-latest
48+
environment: prod
49+
name: 'Deploy learninghub moodle cron to AKS cluster'
50+
env:
51+
AZURE_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
52+
AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
53+
AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }}
54+
AZURE_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }}
55+
56+
steps:
57+
- uses: actions/checkout@v2
58+
59+
- name: 'Az CLI login'
60+
uses: azure/login@v1
61+
with:
62+
client-id: ${{ secrets.AZURE_CLIENT_ID }}
63+
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
64+
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
65+
66+
- name: Get AKS credentials
67+
run: az aks get-credentials --resource-group ${{ vars.AZURE_RESOURCE_GROUP_NAME }} --name ${{ vars.AZURE_CLUSTER_NAME }}
68+
69+
- name: Get Storage Account Key
70+
id: get-storage-key
71+
run: |
72+
STORAGE_KEY=$(az storage account keys list --resource-group ${{ vars.AZURE_RESOURCE_GROUP_NAME }} --account-name ${{ vars.AZURE_STORAGE_ACCOUNT_NAME }} --query [0].value -o tsv)
73+
echo "storage_key=$STORAGE_KEY" >> $GITHUB_OUTPUT
74+
75+
- name: Deploy cronjob to AKS cluster
76+
run: kubectl apply -f kubectl/deployment-prod.yml

.github/workflows/deploy-test.yml

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
name: Deploy LearningHub-Moodle to Test
2+
on:
3+
push:
4+
branches:
5+
- RC
6+
7+
permissions:
8+
id-token: write
9+
contents: read
10+
11+
jobs:
12+
build_and_push_docker_image:
13+
runs-on: ubuntu-latest
14+
environment: test
15+
name: Build and push learninghub moodle cron docker image
16+
env:
17+
AZURE_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
18+
AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
19+
AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }}
20+
AZURE_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }}
21+
22+
steps:
23+
- uses: actions/checkout@v2
24+
25+
- name: Replace values in appsettings.json
26+
run : |
27+
sed -i -e 's|CRON-URL|${{ vars.CRON_URL }}|g' appsettings.json
28+
sed -i -e 's/CRON-PASSWORD/${{ secrets.CRON_PASSWORD }}/g' appsettings.json
29+
30+
- name: 'Az CLI login'
31+
uses: azure/login@v1
32+
with:
33+
client-id: ${{ secrets.AZURE_CLIENT_ID }}
34+
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
35+
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
36+
37+
- name: Log in to Azure Container Registry
38+
run: az acr login --name ${{ vars.AZURE_CONTAINER_REGISTRY_NAME }}
39+
40+
- name: Build and push Docker image
41+
run: |
42+
docker build -t ${{ vars.AZURE_CONTAINER_REGISTRY_NAME }}.azurecr.io/${{ vars.DOCKER_IMAGE_NAME }}:latest .
43+
docker push ${{ vars.AZURE_CONTAINER_REGISTRY_NAME }}.azurecr.io/${{ vars.DOCKER_IMAGE_NAME }}:latest
44+
45+
deploy_learninghubmoodlecron_to_cluster:
46+
needs: build_and_push_docker_image
47+
runs-on: ubuntu-latest
48+
environment: test
49+
name: 'Deploy learninghub moodle cron to AKS cluster'
50+
env:
51+
AZURE_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
52+
AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
53+
AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }}
54+
AZURE_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }}
55+
56+
steps:
57+
- uses: actions/checkout@v2
58+
59+
- name: 'Az CLI login'
60+
uses: azure/login@v1
61+
with:
62+
client-id: ${{ secrets.AZURE_CLIENT_ID }}
63+
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
64+
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
65+
66+
- name: Get AKS credentials
67+
run: az aks get-credentials --resource-group ${{ vars.AZURE_RESOURCE_GROUP_NAME }} --name ${{ vars.AZURE_CLUSTER_NAME }}
68+
69+
- name: Get Storage Account Key
70+
id: get-storage-key
71+
run: |
72+
STORAGE_KEY=$(az storage account keys list --resource-group ${{ vars.AZURE_RESOURCE_GROUP_NAME }} --account-name ${{ vars.AZURE_STORAGE_ACCOUNT_NAME }} --query [0].value -o tsv)
73+
echo "storage_key=$STORAGE_KEY" >> $GITHUB_OUTPUT
74+
75+
- name: Deploy cronjob to AKS cluster
76+
run: kubectl apply -f kubectl/deployment-test.yml

kubectl/deployment-prod.yml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
apiVersion: batch/v1
2+
kind: CronJob
3+
metadata:
4+
name: moodle-prod-cronjob
5+
spec:
6+
schedule: "*/1 * * * *"
7+
jobTemplate:
8+
spec:
9+
template:
10+
spec:
11+
containers:
12+
- name: moodle-prod-cron
13+
image: learninghubmoodlecrprod.azurecr.io/learninghubmoodlecronimage:latest
14+
imagePullPolicy: IfNotPresent
15+
args: [ "dotnet", "Learninghub-Moodle-cron.dll"]
16+
restartPolicy: OnFailure

kubectl/deployment-test.yml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
apiVersion: batch/v1
2+
kind: CronJob
3+
metadata:
4+
name: moodle-test-cronjob
5+
spec:
6+
schedule: "*/1 * * * *"
7+
jobTemplate:
8+
spec:
9+
template:
10+
spec:
11+
containers:
12+
- name: moodle-test-cron
13+
image: learninghubmoodlecrtest.azurecr.io/learninghubmoodlecronimage:latest
14+
imagePullPolicy: IfNotPresent
15+
args: [ "dotnet", "Learninghub-Moodle-cron.dll"]
16+
restartPolicy: OnFailure

0 commit comments

Comments
 (0)