66 - main
77
88jobs :
9- build-and-test :
9+ install :
1010 runs-on : ubuntu-latest
1111
1212 steps :
13- - name : π₯ Checkout code
13+ - name : π₯ Checkout Repository
1414 uses : actions/checkout@v2
1515
16- - name : π Set up Python
16+ - name : π Setup Python 3.8
1717 uses : actions/setup-python@v2
1818 with :
1919 python-version : ' 3.8'
2020
21- - name : π¦ Install Python dependencies
21+ - name : π¦ Install Python Dependencies
2222 run : |
2323 python -m pip install --upgrade pip
2424 pip install -r requirements.txt
2525
26- deploy-to-production :
26+ build-and-push-image :
2727 runs-on : ubuntu-latest
28- needs : build-and-test
28+ needs : install
2929
3030 steps :
31- - name : π₯ Checkout code
31+ - name : π₯ Checkout Repository
3232 uses : actions/checkout@v2
3333
34- - name : π Configure AWS credentials
34+ - name : π Configure AWS Credentials
3535 run : |
3636 aws configure set aws_access_key_id ${{ secrets.AWS_ACCESS_KEY_ID }}
3737 aws configure set aws_secret_access_key ${{ secrets.AWS_SECRET_ACCESS_KEY }}
@@ -51,44 +51,53 @@ jobs:
5151 aws ecr get-login-password --region ${{ vars.AWS_REGION }} | \
5252 docker login --username AWS --password-stdin ${{ vars.IMAGE_REGISTRY }}
5353
54- - name : π Update kubeconfig for EKS
55- run : |
56- aws eks update-kubeconfig --name eks-code2cloud-test --region ${{ vars.AWS_REGION }}
57-
58- - name : ποΈ Build Docker image
54+ - name : ποΈ Build Docker Image
5955 run : |
6056 LATEST_SHA=$(git rev-parse HEAD)
6157 echo "LATEST_SHA=$LATEST_SHA" >> $GITHUB_ENV
6258 docker build -t ${{ vars.IMAGE_REGISTRY }}:$LATEST_SHA .
6359 docker tag ${{ vars.IMAGE_REGISTRY }}:$LATEST_SHA ${{ vars.IMAGE_REGISTRY }}:latest
6460
65- - name : π Push Docker image to AWS ECR
61+ - name : π Push Docker Image to AWS ECR
6662 run : |
6763 docker push ${{ vars.IMAGE_REGISTRY }}:$LATEST_SHA
6864 docker push ${{ vars.IMAGE_REGISTRY }}:latest
6965
70- - name : π Check if deployment exists
66+ deploy-to-eks :
67+ runs-on : ubuntu-latest
68+ needs : build-and-push-image
69+
70+ steps :
71+ - name : π₯ Checkout Repository
72+ uses : actions/checkout@v2
73+
74+ - name : π Configure AWS Credentials
75+ run : |
76+ aws configure set aws_access_key_id ${{ secrets.AWS_ACCESS_KEY_ID }}
77+ aws configure set aws_secret_access_key ${{ secrets.AWS_SECRET_ACCESS_KEY }}
78+ aws configure set region ${{ vars.AWS_REGION }}
79+
80+ - name : π Update Kubeconfig for EKS
81+ run : |
82+ aws eks update-kubeconfig --name eks-code2cloud-test --region ${{ vars.AWS_REGION }}
83+
84+ - name : π Check if Kubernetes Deployment Exists
7185 id : check-deployment
7286 run : |
7387 DEPLOYMENT_NAME=${{ vars.DEPLOYMENT_NAME }}
7488 DEPLOYMENT_EXISTS=$(kubectl get deployment $DEPLOYMENT_NAME -n default --ignore-not-found)
75-
7689 echo "deployment_exists=$([ -z "$DEPLOYMENT_EXISTS" ] && echo "false" || echo "true")" >> $GITHUB_OUTPUT
7790
78- - name : π οΈ Create deployment (if not exists)
91+ - name : π Create New Deployment (if not exists)
7992 if : steps.check-deployment.outputs.deployment_exists == 'false'
8093 run : |
81- echo "Creating new deployment: ${{ vars.DEPLOYMENT_NAME }}"
8294 kubectl create deployment ${{ vars.DEPLOYMENT_NAME }} \
8395 --image=${{ vars.IMAGE_REGISTRY }}:$LATEST_SHA -n default
8496
85- - name : π Update deployment image (if exists)
97+ - name : π Update Deployment Image (if exists)
8698 if : steps.check-deployment.outputs.deployment_exists == 'true'
8799 run : |
88100 DEPLOYMENT_NAME=${{ vars.DEPLOYMENT_NAME }}
89- echo "Fetching container name from deployment $DEPLOYMENT_NAME..."
90101 CONTAINER_NAME=$(kubectl get deployment $DEPLOYMENT_NAME -n default -o jsonpath='{.spec.template.spec.containers[0].name}')
91- echo "Container name detected: $CONTAINER_NAME"
92-
93- echo "Updating deployment image..."
102+ echo "Updating container $CONTAINER_NAME in $DEPLOYMENT_NAME to use image ${{ vars.IMAGE_REGISTRY }}:$LATEST_SHA"
94103 kubectl set image deployment/$DEPLOYMENT_NAME $CONTAINER_NAME=${{ vars.IMAGE_REGISTRY }}:$LATEST_SHA -n default
0 commit comments