Merge pull request #1 from gopinathsjsu/authService-initial-commit #1
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Spring Boot CI/CD | |
on: | |
push: | |
branches: [ main ] | |
paths: [ 'backend/bookTable/**' ] # Trigger only when backend files change | |
jobs: | |
build-test-coverage: | |
name: Build, Test, Coverage | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v4 | |
- name: Set Up Java 17 | |
uses: actions/setup-java@v4 | |
with: | |
java-version: 17 | |
distribution: temurin | |
- name: Grant Gradle Wrapper Permissions | |
run: chmod +x ./gradlew | |
working-directory: ./backend/bookTable | |
- name: Build, Test, and Check Coverage | |
run: ./gradlew clean build test jacocoTestReport jacocoTestCoverageVerification | |
working-directory: ./backend/bookTable | |
- name: Upload Coverage Report | |
uses: actions/upload-artifact@v3 | |
with: | |
name: jacoco-coverage-report | |
path: backend/bookTable/build/reports/jacoco/test/html/ | |
- name: Upload JAR Artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: spring-boot-jar | |
path: backend/bookTable/build/libs/*.jar | |
deploy-to-aws: | |
needs: build-test-coverage | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v4 | |
- name: Set Up Java 17 | |
uses: actions/setup-java@v4 | |
with: | |
java-version: 17 | |
distribution: temurin | |
- name: Download JAR Artifact | |
uses: actions/download-artifact@v3 | |
with: | |
name: spring-boot-jar | |
path: backend/bookTable/build/libs/ | |
- name: Set Up Docker Buildx | |
uses: docker/setup-buildx-action@v2 | |
- name: Configure AWS Credentials | |
uses: aws-actions/configure-aws-credentials@v4 | |
with: | |
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
aws-region: us-west-1 | |
- name: Login to Amazon ECR | |
run: | | |
aws ecr get-login-password --region us-west-1 | docker login --username AWS --password-stdin 061039807046.dkr.ecr.us-west-1.amazonaws.com | |
- name: Build, Tag, and Push to ECR | |
working-directory: ./backend/bookTable | |
run: | | |
docker build -t booktable-app . | |
docker tag booktable-app:latest 061039807046.dkr.ecr.us-west-1.amazonaws.com/booktable-app:latest | |
docker push 061039807046.dkr.ecr.us-west-1.amazonaws.com/booktable-app:latest | |
- name: Install EB CLI | |
run: pip install awsebcli --upgrade | |
- name: Deploy to Elastic Beanstalk | |
working-directory: ./backend/bookTable | |
run: | | |
echo '{"AWSEBDockerrunVersion": "1", "Image": {"Name": "061039807046.dkr.ecr.us-west-1.amazonaws.com/booktable-app:latest", "Update": "true"}, "Ports": [{"ContainerPort": 8080, "HostPort": 80}]}' > Dockerrun.aws.json | |
zip -r app.zip Dockerrun.aws.json | |
eb deploy booktable-app-env |