From a5ff174b9b02f254156569e3d1d338bd91e10c78 Mon Sep 17 00:00:00 2001 From: Queen Ediri Jessa Date: Fri, 12 Dec 2025 15:46:13 +0100 Subject: [PATCH] Refactor CI/CD pipeline configuration This is to enable me configure github actions pipeline that builds,test and pushes the backend container image to ecr on every PR and merged --- .github/workflows/cicd.yml | 138 +++++++++++++++---------------------- 1 file changed, 55 insertions(+), 83 deletions(-) diff --git a/.github/workflows/cicd.yml b/.github/workflows/cicd.yml index fd5d982..39a81da 100644 --- a/.github/workflows/cicd.yml +++ b/.github/workflows/cicd.yml @@ -1,83 +1,55 @@ - -# name: Bank Backend Pipeline. - -# on: -# push: -# branches: -# - main -# # pull_request: -# # branches: -# # - cicd - -# jobs: -# Continues-Integration_build_and_push: -# runs-on: ubuntu-latest -# env: -# REGISTRY_NAME: ${{ secrets.REGISTRY_NAME }} -# AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} -# AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} -# AWS_REGION: us-east-1 - -# steps: -# - name: Checkout repository -# uses: actions/checkout@v3 -# with: -# repository: digitalwitchdemo/main_bank_app_backend -# ref: main - - -# - name: Log in to awscli -# uses: aws-actions/configure-aws-credentials@v3 -# with: -# aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} -# aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} -# aws-region: us-east-1 - - -# - name: Build container image -# run: docker build -t bank-app-backend:latest . - -# - name: Log in to ECR with short-lived credentials -# run: | -# aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin ${{ vars.ECR_REPO }} - -# - name: Tag Docker image -# run: docker tag bank-app-backend:latest ${{ vars.ECR_REPO }}/bank-backendapi:${{ github.run_number }} - -# - name: Push image to ECR -# run: docker push ${{ vars.ECR_REPO }}/bank-backendapi:${{ github.run_number }} - - -# - name: Clean up Docker image locally -# run: | -# docker rmi bank-app-backend:latest -# docker rmi ${{ vars.ECR_REPO }}/bank-backendapi:${{ github.run_number }} - -# - name: Clean up GitHub repo on runner -# run: rm -rf ./* - - - -# Continues-Update_k8s_manifest: -# runs-on: ubuntu-latest -# needs: Continues-Integration_build_and_push -# steps: -# - name: Checkout repository -# env: -# GIT_USERNAME: ${{ secrets.GIT_USERNAME }} -# GIT_PASSWORD: ${{ secrets.GIT_PASSWORD }} -# run: | -# git clone https://${GIT_USERNAME}:${GIT_PASSWORD}@github.com/digitalwitchdemo/kubernetes-manifest.git - -# cd kubernetes-manifest -# git config --global user.email "chukwunonsosmartagbawo@gmail.com" -# git config --global user.name "smartcloud2023" - -# sed -i "s+${{ vars.ECR_REPO }}/bank-backendapi:.*+${{ vars.ECR_REPO }}/bank-backendapi:${{ github.run_number }}+g" ./bank-project/backendapi.yaml - -# cat ./bank-project/backendapi.yaml | grep -q "${{ vars.ECR_REPO }}/bank-backendapi:${{ github.run_number }}" - -# git add bank-project/backendapi.yaml -# git commit -m "Update. backendapi image to version ${{ github.run_number }}" -# git push origin main - +name: Bank Backend Pipeline + +on: + push: + branches: + - main + - develop + pull_request: + branches: + - main + - develop + +jobs: + build-and-test: + runs-on: ubuntu-latest + env: + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + AWS_REGION: us-east-1 + + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Set up JDK 11 + uses: actions/setup-java@v3 + with: + java-version: '11' + distribution: 'temurin' + + - name: Run tests + run: mvn clean test + + - name: Build with Maven + run: mvn clean package -DskipTests + + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v2 + with: + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + aws-region: us-east-1 + + - name: Build Docker image + run: docker build -t bank-app-backend:latest . + + - name: Login to ECR + run: aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin ${{ secrets.ECR_REGISTRY }} + + - name: Tag Docker image + run: docker tag bank-app-backend:latest ${{ secrets.ECR_REGISTRY }}/bank-backendapi:${{ github.run_number }} + + - name: Push to ECR (only on main branch) + if: github.event_name == 'push' && github.ref == 'refs/heads/main' + run: docker push ${{ secrets.ECR_REGISTRY }}/bank-backendapi:${{ github.run_number }}