Skip to content

Commit 304799c

Browse files
authored
Update build.yml
1 parent f79f436 commit 304799c

1 file changed

Lines changed: 43 additions & 35 deletions

File tree

.github/workflows/build.yml

Lines changed: 43 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@ name: CI/CD
33
on:
44
push:
55
branches:
6-
- main
6+
- main # or specify your branch here
77

88
jobs:
9-
build-and-test:
9+
build-and-push:
1010
runs-on: ubuntu-latest
1111

1212
steps:
@@ -23,54 +23,62 @@ jobs:
2323
python -m pip install --upgrade pip
2424
pip install -r requirements.txt
2525
26-
deploy_to_production:
26+
- name: Set up AWS Credentials
27+
run: |
28+
echo "${{ secrets.AWS_ACCESS_KEY_ID }}" > aws_access_key_id
29+
echo "${{ secrets.AWS_SECRET_ACCESS_KEY }}" > aws_secret_access_key
30+
aws configure set aws_access_key_id ${{ secrets.AWS_ACCESS_KEY_ID }}
31+
aws configure set aws_secret_access_key ${{ secrets.AWS_SECRET_ACCESS_KEY }}
32+
aws configure set region ${{ secrets.AWS_REGION }}
33+
34+
- name: Log in to AWS ECR
35+
run: |
36+
aws ecr get-login-password --region ${{ secrets.AWS_REGION }} | docker login --username AWS --password-stdin ${{ secrets.IMAGE_REGISTRY }}
37+
38+
- name: Build Docker image
39+
run: |
40+
LATEST_SHA=$(git rev-parse HEAD)
41+
docker build -t ${{ secrets.IMAGE_REGISTRY }}:$LATEST_SHA .
42+
docker tag ${{ secrets.IMAGE_REGISTRY }}:$LATEST_SHA ${{ secrets.IMAGE_REGISTRY }}:latest
43+
44+
- name: Push Docker image to AWS ECR
45+
run: |
46+
docker push ${{ secrets.IMAGE_REGISTRY }}:$LATEST_SHA
47+
docker push ${{ secrets.IMAGE_REGISTRY }}:latest
48+
49+
deploy:
2750
runs-on: ubuntu-latest
28-
needs: build-and-test
51+
needs: build-and-push # Ensures the deploy job runs only after the build-and-push job
2952

3053
steps:
3154
- name: Checkout code
3255
uses: actions/checkout@v2
3356

34-
- name: Configure AWS credentials
57+
- name: Set up AWS Credentials
3558
run: |
59+
echo "${{ secrets.AWS_ACCESS_KEY_ID }}" > aws_access_key_id
60+
echo "${{ secrets.AWS_SECRET_ACCESS_KEY }}" > aws_secret_access_key
3661
aws configure set aws_access_key_id ${{ secrets.AWS_ACCESS_KEY_ID }}
3762
aws configure set aws_secret_access_key ${{ secrets.AWS_SECRET_ACCESS_KEY }}
38-
aws configure set region ${{ vars.AWS_REGION }}
39-
40-
- name: Install AWS CLI & kubectl
41-
run: |
42-
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
43-
chmod +x ./kubectl
44-
sudo mv ./kubectl /usr/local/bin/kubectl
45-
pip install --upgrade awscli
46-
aws --version
47-
48-
- name: Log in to AWS ECR
49-
run: |
50-
aws ecr get-login-password --region ${{ vars.AWS_REGION }} | docker login --username AWS --password-stdin ${{ vars.IMAGE_REGISTRY }}
63+
aws configure set region ${{ secrets.AWS_REGION }}
5164
5265
- name: Update kubeconfig for EKS
5366
run: |
54-
aws eks update-kubeconfig --name eks-code2cloud-test --region ${{ vars.AWS_REGION }}
55-
56-
- name: Build Docker image
57-
run: |
58-
LATEST_SHA=$(git rev-parse HEAD)
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
67+
aws eks update-kubeconfig --name ${{ secrets.CLUSTER_NAME }} --region ${{ secrets.AWS_REGION }}
6268
63-
- name: Push Docker image to AWS ECR
69+
- name: Check if the deployment exists
70+
id: deployment
6471
run: |
65-
docker push ${{ vars.IMAGE_REGISTRY }}:$LATEST_SHA
66-
docker push ${{ vars.IMAGE_REGISTRY }}:latest
72+
DEPLOYMENT_EXISTS=$(kubectl get deployment ${{ secrets.DEPLOYMENT_NAME }} -n default --ignore-not-found)
73+
echo "Deployment exists: $DEPLOYMENT_EXISTS"
74+
echo "::set-output name=exists::$DEPLOYMENT_EXISTS"
6775
68-
- name: Deploy to EKS
76+
- name: Create or update deployment in EKS
6977
run: |
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
78+
if [[ "${{ steps.deployment.outputs.exists }}" == "null" ]]; then
79+
echo "Deployment does not exist. Creating deployment."
80+
kubectl create deployment ${{ secrets.DEPLOYMENT_NAME }} --image=${{ secrets.IMAGE_REGISTRY }}:$LATEST_SHA -n default
7381
else
74-
echo "Deployment exists. Updating..."
75-
kubectl set image deployment/${{ vars.DEPLOYMENT_NAME }} ${{ vars.DEPLOYMENT_NAME }}=${{ vars.IMAGE_REGISTRY }}:$LATEST_SHA -n default
82+
echo "Deployment exists. Updating deployment."
83+
kubectl set image deployment/${{ secrets.DEPLOYMENT_NAME }} ${{ secrets.DEPLOYMENT_NAME }}=${{ secrets.IMAGE_REGISTRY }}:$LATEST_SHA -n default
7684
fi

0 commit comments

Comments
 (0)