From 0ab6a8af32a29f9f55e8f294e1fc0a7cbd53cee2 Mon Sep 17 00:00:00 2001 From: Rashidi Zin Date: Sat, 30 Aug 2025 10:45:57 +0800 Subject: [PATCH 1/2] Separate Sonar checks --- .github/workflows/gradle-build.yml | 50 +++++++++++++++++++++++++----- 1 file changed, 42 insertions(+), 8 deletions(-) diff --git a/.github/workflows/gradle-build.yml b/.github/workflows/gradle-build.yml index 471f990d..8e235e51 100644 --- a/.github/workflows/gradle-build.yml +++ b/.github/workflows/gradle-build.yml @@ -29,6 +29,7 @@ jobs: runs-on: ubuntu-latest outputs: build-changes: ${{ steps.filter.outputs.build }} + source-changes: ${{ steps.filter.outputs.java }} steps: - uses: actions/checkout@v5 with: @@ -42,13 +43,50 @@ jobs: - '**/*.gradle.kts' - '**/gradle-build.yml' - 'gradle.properties' + java: - '**/*.java' - + gradle-build: name: Build project with Gradle needs: check-changes if: ${{ needs.check-changes.outputs.build-changes == 'true' }} runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v5 + with: + fetch-depth: 0 + - name: Set up JDK + uses: actions/setup-java@v5 + with: + java-version: '21' + distribution: 'temurin' + cache: 'gradle' + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v4 + with: + add-job-summary-as-pr-comment: on-failure + build-scan-publish: true + build-scan-terms-of-use-url: "https://gradle.com/terms-of-service" + build-scan-terms-of-use-agree: "yes" + cache-encryption-key: ${{ secrets.GRADLE_ENCRYPTION_KEY }} + - name: Setup Testcontainers Cloud Client + uses: atomicjar/testcontainers-cloud-setup-action@v1 + with: + token: ${{ secrets.TC_CLOUD_TOKEN }} + - name: Run CI build + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: ./gradlew check --configuration-cache + - name: Terminate Testcontainers Cloud Client active sessions + uses: atomicjar/testcontainers-cloud-setup-action@v1 + with: + action: terminate + + code-quality: + name: Code Quality with Sonar + needs: check-changes + if: ${{ needs.check-changes.outputs.source-changes == 'true' }} + runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 with: @@ -76,16 +114,12 @@ jobs: - name: Setup Testcontainers Cloud Client uses: atomicjar/testcontainers-cloud-setup-action@v1 with: - token: ${{ secrets.TC_CLOUD_TOKEN }} - - name: Run CI build - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: ./gradlew check --configuration-cache + token: ${{ secrets.TC_CLOUD_TOKEN }} - name: Publish Sonar report env: SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} - run: ./gradlew sonar + run: ./gradlew check sonar - name: Terminate Testcontainers Cloud Client active sessions uses: atomicjar/testcontainers-cloud-setup-action@v1 with: - action: terminate + action: terminate From d3842a05a3f6d047f6bddcf78d0d69e67c0a3191 Mon Sep 17 00:00:00 2001 From: Rashidi Zin Date: Sat, 30 Aug 2025 10:52:58 +0800 Subject: [PATCH 2/2] Polish --- .../data/mongodb/tc/dataload/user/UserRepositoryTests.java | 2 -- .../java/zin/rashidi/boot/graphql/book/BookResourceTests.java | 1 - .../zin/rashidi/boot/modulith/subscription/Subscription.java | 2 +- .../boot/test/user/UserDeletionTestExecutionListener.java | 2 +- .../java/zin/rashidi/boot/test/user/UserRepositoryTests.java | 1 - 5 files changed, 2 insertions(+), 6 deletions(-) diff --git a/data-mongodb-tc-data-load/src/test/java/zin/rashidi/data/mongodb/tc/dataload/user/UserRepositoryTests.java b/data-mongodb-tc-data-load/src/test/java/zin/rashidi/data/mongodb/tc/dataload/user/UserRepositoryTests.java index db38c432..c1a647d7 100644 --- a/data-mongodb-tc-data-load/src/test/java/zin/rashidi/data/mongodb/tc/dataload/user/UserRepositoryTests.java +++ b/data-mongodb-tc-data-load/src/test/java/zin/rashidi/data/mongodb/tc/dataload/user/UserRepositoryTests.java @@ -7,9 +7,7 @@ import org.springframework.boot.test.context.TestConfiguration; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.ComponentScan.Filter; -import org.springframework.context.annotation.FilterType; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; import org.springframework.data.repository.init.Jackson2RepositoryPopulatorFactoryBean; diff --git a/graphql/src/test/java/zin/rashidi/boot/graphql/book/BookResourceTests.java b/graphql/src/test/java/zin/rashidi/boot/graphql/book/BookResourceTests.java index b9ebf73e..d9ba40dd 100644 --- a/graphql/src/test/java/zin/rashidi/boot/graphql/book/BookResourceTests.java +++ b/graphql/src/test/java/zin/rashidi/boot/graphql/book/BookResourceTests.java @@ -10,7 +10,6 @@ import org.springframework.stereotype.Repository; import static org.springframework.context.annotation.FilterType.ANNOTATION; -import static org.springframework.context.annotation.FilterType.ASSIGNABLE_TYPE; /** * @author Rashidi Zin diff --git a/modulith/src/main/java/zin/rashidi/boot/modulith/subscription/Subscription.java b/modulith/src/main/java/zin/rashidi/boot/modulith/subscription/Subscription.java index 7c451e22..61f46d0c 100644 --- a/modulith/src/main/java/zin/rashidi/boot/modulith/subscription/Subscription.java +++ b/modulith/src/main/java/zin/rashidi/boot/modulith/subscription/Subscription.java @@ -13,7 +13,7 @@ class Subscription { private Long id; private final Long studentId; private final Long courseId; - private Status status; + private final Status status; public Subscription(Long studentId, Long courseId) { this.studentId = studentId; diff --git a/test-execution-listeners/src/test/java/zin/rashidi/boot/test/user/UserDeletionTestExecutionListener.java b/test-execution-listeners/src/test/java/zin/rashidi/boot/test/user/UserDeletionTestExecutionListener.java index 956350d2..48e16cbf 100644 --- a/test-execution-listeners/src/test/java/zin/rashidi/boot/test/user/UserDeletionTestExecutionListener.java +++ b/test-execution-listeners/src/test/java/zin/rashidi/boot/test/user/UserDeletionTestExecutionListener.java @@ -11,7 +11,7 @@ */ class UserDeletionTestExecutionListener extends AbstractTestExecutionListener { - private static Logger log = LoggerFactory.getLogger(UserDeletionTestExecutionListener.class); + private static final Logger log = LoggerFactory.getLogger(UserDeletionTestExecutionListener.class); @Override public void afterTestClass(TestContext testContext) { diff --git a/test-execution-listeners/src/test/java/zin/rashidi/boot/test/user/UserRepositoryTests.java b/test-execution-listeners/src/test/java/zin/rashidi/boot/test/user/UserRepositoryTests.java index 6b40e639..0a96596d 100644 --- a/test-execution-listeners/src/test/java/zin/rashidi/boot/test/user/UserRepositoryTests.java +++ b/test-execution-listeners/src/test/java/zin/rashidi/boot/test/user/UserRepositoryTests.java @@ -13,7 +13,6 @@ import org.testcontainers.containers.MongoDBContainer; import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Testcontainers; -import org.testcontainers.utility.DockerImageName; /** * @author Rashidi Zin