Skip to content

Commit 0d5fdbe

Browse files
authored
Update build.yml
1 parent 26cf684 commit 0d5fdbe

1 file changed

Lines changed: 25 additions & 53 deletions

File tree

.github/workflows/build.yml

Lines changed: 25 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
name: CI/CD Pipeline
1+
name: CI/CD
22

33
on:
44
push:
55
branches:
6-
- main # or specify your branch here
6+
- main
77

88
jobs:
99
build-and-test:
@@ -16,89 +16,61 @@ jobs:
1616
- name: Set up Python
1717
uses: actions/setup-python@v2
1818
with:
19-
python-version: '3.8' # Change the Python version if needed
19+
python-version: '3.8'
2020

2121
- name: Install dependencies
2222
run: |
2323
python -m pip install --upgrade pip
2424
pip install -r requirements.txt
2525
26-
build-and-push-image:
26+
deploy_to_production:
2727
runs-on: ubuntu-latest
2828
needs: build-and-test
29+
2930
steps:
3031
- name: Checkout code
3132
uses: actions/checkout@v2
3233

33-
- name: Set up AWS Credentials
34+
- name: Configure AWS credentials
3435
run: |
35-
echo "${{ secrets.AWS_ACCESS_KEY_ID }}" > aws_access_key_id
36-
echo "${{ secrets.AWS_SECRET_ACCESS_KEY }}" > aws_secret_access_key
3736
aws configure set aws_access_key_id ${{ secrets.AWS_ACCESS_KEY_ID }}
3837
aws configure set aws_secret_access_key ${{ secrets.AWS_SECRET_ACCESS_KEY }}
39-
aws configure set region ${{ secrets.AWS_REGION }} # Ensure AWS_REGION is set as a secret in GitHub
38+
aws configure set region ${{ vars.AWS_REGION }}
4039
41-
- name: Install kubectl and AWS CLI
40+
- name: Install AWS CLI & kubectl
4241
run: |
4342
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
4443
chmod +x ./kubectl
4544
sudo mv ./kubectl /usr/local/bin/kubectl
46-
pip install awscli --upgrade
45+
pip install --upgrade awscli
4746
aws --version
4847
4948
- name: Log in to AWS ECR
5049
run: |
51-
aws ecr get-login-password --region ${{ secrets.AWS_REGION }} | docker login --username AWS --password-stdin ${{ secrets.IMAGE_REGISTRY }}
50+
aws ecr get-login-password --region ${{ vars.AWS_REGION }} | docker login --username AWS --password-stdin ${{ vars.IMAGE_REGISTRY }}
51+
52+
- name: Update kubeconfig for EKS
53+
run: |
54+
aws eks update-kubeconfig --name eks-code2cloud-test --region ${{ vars.AWS_REGION }}
5255
5356
- name: Build Docker image
5457
run: |
5558
LATEST_SHA=$(git rev-parse HEAD)
56-
echo "LATEST_SHA: $LATEST_SHA"
57-
if [[ -z "$LATEST_SHA" ]]; then
58-
echo "Error: LATEST_SHA is empty, aborting."
59-
exit 1
60-
fi
61-
docker build -t ${{ secrets.IMAGE_REGISTRY }}:$LATEST_SHA .
62-
docker tag ${{ secrets.IMAGE_REGISTRY }}:$LATEST_SHA ${{ secrets.IMAGE_REGISTRY }}:latest
59+
echo "LATEST_SHA=$LATEST_SHA" >> $GITHUB_ENV
60+
docker build -t ${{ vars.IMAGE_REGISTRY }}:$LATEST_SHA .
61+
docker tag ${{ vars.IMAGE_REGISTRY }}:$LATEST_SHA ${{ vars.IMAGE_REGISTRY }}:latest
6362
6463
- name: Push Docker image to AWS ECR
6564
run: |
66-
echo "Pushing image to AWS ECR..."
67-
docker push ${{ secrets.IMAGE_REGISTRY }}:$LATEST_SHA
68-
docker push ${{ secrets.IMAGE_REGISTRY }}:latest
69-
70-
deploy-to-eks:
71-
runs-on: ubuntu-latest
72-
needs: build-and-push-image
73-
steps:
74-
- name: Checkout code
75-
uses: actions/checkout@v2
76-
77-
- name: Set up AWS Credentials for EKS deployment
78-
run: |
79-
echo "${{ secrets.AWS_ACCESS_KEY_ID }}" > aws_access_key_id
80-
echo "${{ secrets.AWS_SECRET_ACCESS_KEY }}" > aws_secret_access_key
81-
aws configure set aws_access_key_id ${{ secrets.AWS_ACCESS_KEY_ID }}
82-
aws configure set aws_secret_access_key ${{ secrets.AWS_SECRET_ACCESS_KEY }}
83-
aws configure set region ${{ secrets.AWS_REGION }}
84-
85-
- name: Update kubeconfig for EKS
86-
run: |
87-
aws eks update-kubeconfig --name ${{ secrets.EKS_CLUSTER_NAME }} --region ${{ secrets.AWS_REGION }}
88-
89-
- name: Check if the deployment exists
90-
id: deployment
91-
run: |
92-
DEPLOYMENT_EXISTS=$(kubectl get deployment ${{ secrets.DEPLOYMENT_NAME }} -n default --ignore-not-found)
93-
echo "Deployment exists: $DEPLOYMENT_EXISTS"
94-
echo "::set-output name=exists::$DEPLOYMENT_EXISTS"
65+
docker push ${{ vars.IMAGE_REGISTRY }}:$LATEST_SHA
66+
docker push ${{ vars.IMAGE_REGISTRY }}:latest
9567
96-
- name: Create or update deployment in EKS
68+
- name: Deploy to EKS
9769
run: |
98-
if [[ "${{ steps.deployment.outputs.exists }}" == "null" ]]; then
99-
echo "Deployment does not exist. Creating deployment."
100-
kubectl create deployment ${{ secrets.DEPLOYMENT_NAME }} --image=${{ secrets.IMAGE_REGISTRY }}:$LATEST_SHA -n default
70+
if ! kubectl get deployment ${{ vars.DEPLOYMENT_NAME }} -n default &> /dev/null; then
71+
echo "Deployment does not exist. Creating..."
72+
kubectl create deployment ${{ vars.DEPLOYMENT_NAME }} --image=${{ vars.IMAGE_REGISTRY }}:$LATEST_SHA -n default
10173
else
102-
echo "Deployment exists. Updating deployment."
103-
kubectl set image deployment/${{ secrets.DEPLOYMENT_NAME }} ${{ secrets.DEPLOYMENT_NAME }}=${{ secrets.IMAGE_REGISTRY }}:$LATEST_SHA -n default
74+
echo "Deployment exists. Updating..."
75+
kubectl set image deployment/${{ vars.DEPLOYMENT_NAME }} ${{ vars.DEPLOYMENT_NAME }}=${{ vars.IMAGE_REGISTRY }}:$LATEST_SHA -n default
10476
fi

0 commit comments

Comments
 (0)