name: CI - Build & Test on: push: branches: [main, develop] pull_request: branches: [main] jobs: test: runs-on: ubuntu-latest services: redis: image: redis:7-alpine ports: [6379:6379] mysql: image: mysql:8.0 env: MYSQL_ROOT_PASSWORD: test MYSQL_DATABASE: wbx_spring_test ports: [3306:3306] options: >- --health-cmd="mysqladmin ping -h localhost" --health-interval=10s --health-timeout=5s --health-retries=3 steps: - uses: actions/checkout@v4 - uses: actions/setup-java@v4 with: java-version: '21' distribution: 'temurin' cache: 'gradle' - name: Grant execute permission run: chmod +x gradlew - name: Run Tests run: ./gradlew test env: SPRING_DATASOURCE_URL: jdbc:mysql://localhost:3306/wbx_spring_test?useSSL=false&allowPublicKeyRetrieval=true SPRING_DATASOURCE_USERNAME: root SPRING_DATASOURCE_PASSWORD: test - name: Upload Test Report if: always() uses: actions/upload-artifact@v4 with: name: test-report path: build/reports/tests/ build: needs: test runs-on: ubuntu-latest if: github.ref == 'refs/heads/main' steps: - uses: actions/checkout@v4 - uses: actions/setup-java@v4 with: java-version: '21' distribution: 'temurin' cache: 'gradle' - name: Build JAR run: chmod +x gradlew && ./gradlew bootJar - name: Upload JAR uses: actions/upload-artifact@v4 with: name: app-jar path: build/libs/*.jar