name: Backend CI/CD on: push: pull_request: workflow_dispatch: jobs: build: runs-on: ubuntu-latest # Service containers to run with `container-job` services: # Label used to access the service container postgres: # Docker Hub image image: postgres # Provide the password for postgres env: POSTGRES_PASSWORD: ${{ secrets.EHAYVAN_SPRING_DATASOURCE_PASSWORD }} # Set health checks to wait until postgres has started options: >- --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 ports: # Maps tcp port 5432 on service container to the host - 5432:5432 steps: - uses: actions/checkout@v3 - name: Set Environment Variables run: | echo "EHAYVAN_SPRING_DATASOURCE_URL=${{ secrets.EHAYVAN_SPRING_DATASOURCE_URL }}" >> $GITHUB_ENV echo "EHAYVAN_SPRING_DATASOURCE_USERNAME=${{ secrets.EHAYVAN_SPRING_DATASOURCE_USERNAME }}" >> $GITHUB_ENV echo "EHAYVAN_SPRING_DATASOURCE_PASSWORD=${{ secrets.EHAYVAN_SPRING_DATASOURCE_PASSWORD }}" >> $GITHUB_ENV - name: Set up JDK 21 uses: actions/setup-java@v3 with: java-version: '21' distribution: 'temurin' cache: maven - name: Build Spring Boot Project run: mvn clean install -DskipTests - name: Run tests with Maven for Spring Boot Project run: mvn -B test --file pom.xml coverage: needs: build runs-on: ubuntu-latest # Service containers to run with `container-job` services: # Label used to access the service container postgres: # Docker Hub image image: postgres # Provide the password for postgres env: POSTGRES_PASSWORD: ${{ secrets.EHAYVAN_SPRING_DATASOURCE_PASSWORD }} # Set health checks to wait until postgres has started options: >- --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 ports: # Maps tcp port 5432 on service container to the host - 5432:5432 steps: - uses: actions/checkout@v3 - name: Set Environment Variables run: | echo "EHAYVAN_SPRING_DATASOURCE_URL=${{ secrets.EHAYVAN_SPRING_DATASOURCE_URL }}" >> $GITHUB_ENV echo "EHAYVAN_SPRING_DATASOURCE_USERNAME=${{ secrets.EHAYVAN_SPRING_DATASOURCE_USERNAME }}" >> $GITHUB_ENV echo "EHAYVAN_SPRING_DATASOURCE_PASSWORD=${{ secrets.EHAYVAN_SPRING_DATASOURCE_PASSWORD }}" >> $GITHUB_ENV - name: Set up JDK 21 uses: actions/setup-java@v3 with: java-version: '21' distribution: 'temurin' cache: maven - name: Run maven for coverage report run: mvn -B verify -P coverage --no-transfer-progress - name: Upload coverage reports to Codecov uses: codecov/codecov-action@v3 env: file: ./**/target/site/jacoco/jacoco.xml CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}