1
+ name : ' K8: Edit'
2
+
3
+ on :
4
+ workflow_call :
5
+
6
+ # Special permissions required for OIDC authentication
7
+ permissions :
8
+ id-token : write
9
+ contents : read
10
+ actions : read
11
+
12
+ jobs :
13
+ k8-edit :
14
+ name : ' K8: Edit'
15
+ runs-on : ubuntu-latest
16
+ environment : ${{ github.ref_name }}
17
+ env :
18
+ KUBELOGIN_VERSION : " v0.0.25"
19
+ KUBERNETES_CLUSTER_REPO_NAME : " ${{ vars.KUBERNETES_CLUSTER_REPO_NAME }}"
20
+ KUBERNETES_CLUSTER_NAME : " ${{ vars.KUBERNETES_CLUSTER_NAME }}"
21
+ KUBERNETES_NAMESPACE : " ${{ vars.KUBERNETES_NAMESPACE }}"
22
+ KUBERNETES_MANIFEST_PATH : " ${{ vars.KUBERNETES_MANIFEST_PATH }}"
23
+ KUBERNETES_MANIFEST_FILE_PATH : " ${{ vars.KUBERNETES_MANIFEST_PATH }}/deployment.yml"
24
+ AZURE_RESOURCE_GROUP : " ${{ vars.AZURE_RESOURCE_GROUP }}"
25
+ AZURE_CONTAINER_REGISTRY : " ${{ vars.AZURE_CONTAINER_REGISTRY }}"
26
+ IMAGE_TAG : ${{ github.event_name == 'release' && github.event.release.tag_name || github.sha }}
27
+ steps :
28
+ # Checkout the repository to the GitHub Actions runner
29
+ - name : Checkout
30
+ uses : actions/checkout@v4
31
+ with :
32
+ token : ${{ secrets.GH_TOKEN }}
33
+ repository : ${{ github.repository_owner }}/${{ env.KUBERNETES_CLUSTER_REPO_NAME }}
34
+ ref : refs/heads/dev
35
+
36
+ - name : GitHub Configuration
37
+ run : git config --global url."https://oauth2:${{ secrets.GH_TOKEN }}@github.com".insteadOf https://github.com
38
+
39
+ - name : Clone cicd-deployment-scripts
40
+ run : git clone https://github.com/code-kern-ai/cicd-deployment-scripts.git
41
+
42
+ # Install the latest version of Kubernetes CLI and configure the Kubernetes CLI configuration file with a Kubernetes Cloud user API token
43
+ - name : Azure Cloud Login
44
+ uses : azure/login@v2
45
+ with :
46
+ client-id : ${{ secrets.AZURE_CLIENT_ID }}
47
+ tenant-id : ${{ secrets.AZURE_TENANT_ID }}
48
+ subscription-id : ${{ secrets.AZURE_SUBSCRIPTION_ID }}
49
+
50
+ # Use kubelogin to configure your kubeconfig for Azure auth
51
+ - name : Set up kubelogin for non-interactive login
52
+ uses : azure/use-kubelogin@v1
53
+ with :
54
+ kubelogin-version : ${{ env.KUBELOGIN_VERSION }}
55
+
56
+ - uses : azure/aks-set-context@v3
57
+ with :
58
+ resource-group : ${{ env.AZURE_RESOURCE_GROUP }}
59
+ cluster-name : ${{ env.KUBERNETES_CLUSTER_NAME }}
60
+ admin : ' false'
61
+ use-kubelogin : ' true'
62
+
63
+ - name : Run Edit
64
+ shell : bash
65
+ run : |
66
+ bash cicd-deployment-scripts/k8s/edit.sh \
67
+ -n ${{ env.KUBERNETES_NAMESPACE }} \
68
+ -d ${{ github.event.repository.name }} \
69
+ -f ${{ env.KUBERNETES_MANIFEST_FILE_PATH }} \
70
+ -r ${{ env.AZURE_CONTAINER_REGISTRY }} \
71
+ -t ${{ env.IMAGE_TAG }}
72
+
73
+ - name : Commit changes
74
+ shell : bash
75
+ run : |
76
+ AUTOMATED_RELEASE_BRANCH="automated-release-${{ github.event_name == 'release' && 'prod' || 'dev' }}"
77
+ KUBERNETES_POD_NEW_IMAGE="${{ env.AZURE_CONTAINER_REGISTRY }}/${{ github.event.repository.name }}:${{ env.IMAGE_TAG }}"
78
+
79
+ git fetch origin
80
+ git checkout $AUTOMATED_RELEASE_BRANCH || git checkout -b $AUTOMATED_RELEASE_BRANCH
81
+
82
+ git add ${{ env.KUBERNETES_MANIFEST_FILE_PATH }}
83
+ git commit -m "ci(${{ github.event.repository.name }}): $KUBERNETES_POD_NEW_IMAGE"
84
+ git push origin $AUTOMATED_RELEASE_BRANCH
0 commit comments