104 lines (100 loc) · 3.25 KB
/
push-main.yaml
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
name: Push main build
on:
push:
branches:
- main
jobs:
build-image:
runs-on: ubuntu-latest
env:
REPOSITORY: ${{ vars.REGISTRY_NAME }}.azurecr.io
IMAGE: graphql-server
steps:
- uses: actions/checkout@v3
- name: Log in to Azure
uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: Log in to Azure Container Registry
env:
ACR_NAME: ${{ vars.REGISTRY_NAME }}
run: az acr login --name $ACR_NAME
- name: Run Docker build
run: docker build -t $REPOSITORY/$IMAGE:main .
- name: Push image to repository
run: docker push $REPOSITORY/$IMAGE:main
deploy:
name: Deploy Helm upgrade on test namespace
needs:
- build-image
runs-on: ubuntu-latest
env:
K8S_CLUSTER_NAME: ${{ vars.AKS_CLUSTER_NAME }}
K8S_CLUSTER_RG: ${{ vars.AKS_CLUSTER_RG }}
K8S_NAMESPACE: pbotapps-test
REPOSITORY: ${{ vars.REGISTRY_NAME }}.azurecr.io
IMAGE: graphql-server
RELEASE_NAME: ${{ vars.HELM_RELEASE_NAME }}
steps:
- uses: actions/checkout@v3
- uses: azure/setup-kubectl@v3
- uses: azure/setup-helm@v3
- name: Create Kubernetes secrets
env:
PORTLANDMAPS_API_KEY: ${{ secrets.PORTLANDMAPS_API_KEY }}
CALE_WEBOFFICE_HOST: ${{ secrets.CALE_WEBOFFICE_HOST }}
AREA_PERMIT_CALE_USERNAME: ${{ secrets.AREA_PERMIT_CALE_USERNAME }}
AREA_PERMIT_CALE_PASSWORD: ${{ secrets.AREA_PERMIT_CALE_PASSWORD }}
run: |
mkdir -p chart/.secret
echo -n "$PORTLANDMAPS_API_KEY" > chart/.secret/PORTLANDMAPS_API_KEY
echo -n "$CALE_WEBOFFICE_HOST" > chart/.secret/CALE_WEBOFFICE_HOST
echo -n "$AREA_PERMIT_CALE_USERNAME" > chart/.secret/AREA_PERMIT_CALE_USERNAME
echo -n "$AREA_PERMIT_CALE_PASSWORD" > chart/.secret/AREA_PERMIT_CALE_PASSWORD
- name: Login via Az module
uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: Log in to AKS
run: |
az aks get-credentials \
--name $K8S_CLUSTER_NAME \
--resource-group $K8S_CLUSTER_RG
- name: Deploy release
run: |
helm \
upgrade \
--namespace $K8S_NAMESPACE \
--install \
$RELEASE_NAME \
chart/ \
-f chart/values-test.yaml
refresh:
name: Refresh pods in test release
needs:
- deploy
runs-on: ubuntu-latest
env:
K8S_CLUSTER_NAME: ${{ vars.AKS_CLUSTER_NAME }}
K8S_CLUSTER_RG: ${{ vars.AKS_CLUSTER_RG }}
K8S_NAMESPACE: pbotapps-test
RELEASE_NAME: ${{ vars.HELM_RELEASE_NAME }}
steps:
- uses: actions/checkout@v3
- uses: azure/setup-kubectl@v3
- uses: azure/setup-helm@v3
- name: Login via Az module
uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: Log in to AKS
run: |
az aks get-credentials \
--name $K8S_CLUSTER_NAME \
--resource-group $K8S_CLUSTER_RG
- name: Delete release's pods
run: |
kubectl \
--namespace='$K8S_NAMESPACE' \
delete pods \
-l app.kubernetes.io/instance=$RELEASE_NAME