From 500493f97d6094ffb86a37b545e5849e14660c35 Mon Sep 17 00:00:00 2001 From: Rujun Chen Date: Fri, 12 Jun 2026 09:37:07 +0800 Subject: [PATCH 01/16] Segregate Docker-dependent tests to GitHub Actions workflow ## Problem Azure DevOps network policies block Microsoft Container Registry (MCR) image pulls, causing Docker-dependent tests to fail in the default CI pipeline. ## Solution - Tag Docker-dependent tests with @Tag("docker") in JUnit 5 - Configure Maven surefire to exclude docker-tagged tests from default CI - Create dedicated GitHub Actions workflow on ubuntu-24.04 with Docker support - Use docker-tests Maven profile to selectively run only tagged tests in GitHub Actions ## Changes 1. Add @Tag("docker") to 9 Docker-dependent test classes: - 5 in spring-cloud-azure-testcontainers module - 4 in spring-cloud-azure-docker-compose module 2. Update pom.xml in both modules: - Configure surefire excludedGroups for docker tag - Add docker-tests Maven profile to override exclusion 3. Create .github/workflows/spring-docker-tests.yml: - Runs on ubuntu-24.04 with Docker pre-installed - Triggered by changes to spring modules and workflow file - Two-phase build: install deps, then run docker-tests profile - Triggered by pull_request and workflow_dispatch events ## Impact - Docker tests no longer block PR merges in ADO - Docker tests run independently in GitHub Actions on Linux - Default local Maven build excludes docker tests - Developers can opt-in with: mvn test -Pdocker-tests --- .github/workflows/spring-docker-tests.yml | 54 +++++++++++++++++++ .../spring-cloud-azure-docker-compose/pom.xml | 17 ++++++ ...rComposeConnectionDetailsFactoryTests.java | 2 + ...rComposeConnectionDetailsFactoryTests.java | 2 + ...rComposeConnectionDetailsFactoryTests.java | 2 + ...rComposeConnectionDetailsFactoryTests.java | 2 + .../spring-cloud-azure-testcontainers/pom.xml | 17 ++++++ ...ontainerConnectionDetailsFactoryTests.java | 2 + ...ontainerConnectionDetailsFactoryTests.java | 2 + ...ontainerConnectionDetailsFactoryTests.java | 2 + ...ontainerConnectionDetailsFactoryTests.java | 2 + ...ontainerConnectionDetailsFactoryTests.java | 2 + 12 files changed, 106 insertions(+) create mode 100644 .github/workflows/spring-docker-tests.yml diff --git a/.github/workflows/spring-docker-tests.yml b/.github/workflows/spring-docker-tests.yml new file mode 100644 index 000000000000..9b57a5b9c0c3 --- /dev/null +++ b/.github/workflows/spring-docker-tests.yml @@ -0,0 +1,54 @@ +name: Spring Docker Tests + +on: + pull_request: + paths: + - '.github/workflows/spring-docker-tests.yml' + - 'pom.xml' + - 'sdk/spring/**' + - 'sdk/parents/**' + workflow_dispatch: + +permissions: + contents: read + +jobs: + spring-docker-tests: + runs-on: ubuntu-24.04 + timeout-minutes: 45 + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + distribution: temurin + java-version: '17' + cache: maven + + - name: Verify Docker + run: | + docker version + docker info + + - name: Build spring docker test dependencies + run: > + mvn -f sdk/spring/pom.xml + -pl spring-cloud-azure-testcontainers,spring-cloud-azure-docker-compose + -am + install + -DskipTests + -DskipITs + -DfailIfNoTests=false + + - name: Run spring docker-tagged tests + run: > + mvn -f sdk/spring/pom.xml + -pl spring-cloud-azure-testcontainers,spring-cloud-azure-docker-compose + test + -Pdocker-tests + -DfailIfNoTests=false + -DskipITs + -DskipTests=false \ No newline at end of file diff --git a/sdk/spring/spring-cloud-azure-docker-compose/pom.xml b/sdk/spring/spring-cloud-azure-docker-compose/pom.xml index 343791baf6e8..6dfce22a6d59 100644 --- a/sdk/spring/spring-cloud-azure-docker-compose/pom.xml +++ b/sdk/spring/spring-cloud-azure-docker-compose/pom.xml @@ -38,6 +38,8 @@ true 17 17 + + docker https://azuresdkartifacts.blob.core.windows.net/azure-sdk-for-java @@ -196,6 +198,14 @@ + + org.apache.maven.plugins + maven-surefire-plugin + + ${surefire.test.groups} + ${surefire.excluded.test.groups} + + org.apache.maven.plugins maven-jar-plugin @@ -278,6 +288,13 @@ + + docker-tests + + docker + + + below-java-17 diff --git a/sdk/spring/spring-cloud-azure-docker-compose/src/test/java/com/azure/spring/cloud/docker/compose/implementation/service/connection/bus/ServiceBusDockerComposeConnectionDetailsFactoryTests.java b/sdk/spring/spring-cloud-azure-docker-compose/src/test/java/com/azure/spring/cloud/docker/compose/implementation/service/connection/bus/ServiceBusDockerComposeConnectionDetailsFactoryTests.java index 3f1d51308a7d..454c8659c1f4 100644 --- a/sdk/spring/spring-cloud-azure-docker-compose/src/test/java/com/azure/spring/cloud/docker/compose/implementation/service/connection/bus/ServiceBusDockerComposeConnectionDetailsFactoryTests.java +++ b/sdk/spring/spring-cloud-azure-docker-compose/src/test/java/com/azure/spring/cloud/docker/compose/implementation/service/connection/bus/ServiceBusDockerComposeConnectionDetailsFactoryTests.java @@ -12,6 +12,7 @@ import com.azure.spring.cloud.service.servicebus.consumer.ServiceBusErrorHandler; import com.azure.spring.cloud.service.servicebus.consumer.ServiceBusRecordMessageListener; import com.azure.spring.messaging.servicebus.core.ServiceBusTemplate; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.condition.EnabledOnOs; import org.junit.jupiter.api.condition.OS; @@ -42,6 +43,7 @@ "spring.cloud.azure.servicebus.processor.entity-name=queue.1", "spring.cloud.azure.servicebus.processor.entity-type=queue" }) +@Tag("docker") @EnabledOnOs(OS.LINUX) class ServiceBusDockerComposeConnectionDetailsFactoryTests { diff --git a/sdk/spring/spring-cloud-azure-docker-compose/src/test/java/com/azure/spring/cloud/docker/compose/implementation/service/connection/hubs/EventHubsDockerComposeConnectionDetailsFactoryTests.java b/sdk/spring/spring-cloud-azure-docker-compose/src/test/java/com/azure/spring/cloud/docker/compose/implementation/service/connection/hubs/EventHubsDockerComposeConnectionDetailsFactoryTests.java index 1369301024c1..9d38f7ebb433 100644 --- a/sdk/spring/spring-cloud-azure-docker-compose/src/test/java/com/azure/spring/cloud/docker/compose/implementation/service/connection/hubs/EventHubsDockerComposeConnectionDetailsFactoryTests.java +++ b/sdk/spring/spring-cloud-azure-docker-compose/src/test/java/com/azure/spring/cloud/docker/compose/implementation/service/connection/hubs/EventHubsDockerComposeConnectionDetailsFactoryTests.java @@ -8,6 +8,7 @@ import com.azure.spring.cloud.autoconfigure.implementation.context.AzureGlobalPropertiesAutoConfiguration; import com.azure.spring.cloud.autoconfigure.implementation.eventhubs.AzureEventHubsAutoConfiguration; import com.azure.spring.cloud.autoconfigure.implementation.eventhubs.properties.AzureEventHubsConnectionDetails; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.condition.EnabledOnOs; import org.junit.jupiter.api.condition.OS; @@ -30,6 +31,7 @@ "spring.cloud.azure.eventhubs.event-hub-name=eh1", "spring.cloud.azure.eventhubs.producer.event-hub-name=eh1" }) +@Tag("docker") @EnabledOnOs(OS.LINUX) class EventHubsDockerComposeConnectionDetailsFactoryTests { diff --git a/sdk/spring/spring-cloud-azure-docker-compose/src/test/java/com/azure/spring/cloud/docker/compose/implementation/service/connection/storage/StorageBlobDockerComposeConnectionDetailsFactoryTests.java b/sdk/spring/spring-cloud-azure-docker-compose/src/test/java/com/azure/spring/cloud/docker/compose/implementation/service/connection/storage/StorageBlobDockerComposeConnectionDetailsFactoryTests.java index 861401e1957d..310d8e701a20 100644 --- a/sdk/spring/spring-cloud-azure-docker-compose/src/test/java/com/azure/spring/cloud/docker/compose/implementation/service/connection/storage/StorageBlobDockerComposeConnectionDetailsFactoryTests.java +++ b/sdk/spring/spring-cloud-azure-docker-compose/src/test/java/com/azure/spring/cloud/docker/compose/implementation/service/connection/storage/StorageBlobDockerComposeConnectionDetailsFactoryTests.java @@ -6,6 +6,7 @@ import com.azure.spring.cloud.autoconfigure.implementation.context.AzureGlobalPropertiesAutoConfiguration; import com.azure.spring.cloud.autoconfigure.implementation.storage.blob.AzureStorageBlobAutoConfiguration; import com.azure.spring.cloud.autoconfigure.implementation.storage.blob.AzureStorageBlobResourceAutoConfiguration; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.condition.EnabledOnOs; import org.junit.jupiter.api.condition.OS; @@ -28,6 +29,7 @@ "spring.docker.compose.file=classpath:com/azure/spring/cloud/docker/compose/implementation/service/connection/storage/storage-compose.yaml", "spring.docker.compose.stop.command=down" }) +@Tag("docker") @EnabledOnOs(OS.LINUX) class StorageBlobDockerComposeConnectionDetailsFactoryTests { diff --git a/sdk/spring/spring-cloud-azure-docker-compose/src/test/java/com/azure/spring/cloud/docker/compose/implementation/service/connection/storage/StorageQueueDockerComposeConnectionDetailsFactoryTests.java b/sdk/spring/spring-cloud-azure-docker-compose/src/test/java/com/azure/spring/cloud/docker/compose/implementation/service/connection/storage/StorageQueueDockerComposeConnectionDetailsFactoryTests.java index 1e01ed16562b..9287a16a9774 100644 --- a/sdk/spring/spring-cloud-azure-docker-compose/src/test/java/com/azure/spring/cloud/docker/compose/implementation/service/connection/storage/StorageQueueDockerComposeConnectionDetailsFactoryTests.java +++ b/sdk/spring/spring-cloud-azure-docker-compose/src/test/java/com/azure/spring/cloud/docker/compose/implementation/service/connection/storage/StorageQueueDockerComposeConnectionDetailsFactoryTests.java @@ -6,6 +6,7 @@ import com.azure.spring.cloud.autoconfigure.implementation.context.AzureGlobalPropertiesAutoConfiguration; import com.azure.spring.cloud.autoconfigure.implementation.storage.queue.AzureStorageQueueAutoConfiguration; import com.azure.storage.queue.QueueClient; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.condition.EnabledOnOs; import org.junit.jupiter.api.condition.OS; @@ -22,6 +23,7 @@ "spring.docker.compose.stop.command=down", "spring.cloud.azure.storage.queue.queue-name=devstoreaccount1/tc-queue" }) +@Tag("docker") @EnabledOnOs(OS.LINUX) class StorageQueueDockerComposeConnectionDetailsFactoryTests { diff --git a/sdk/spring/spring-cloud-azure-testcontainers/pom.xml b/sdk/spring/spring-cloud-azure-testcontainers/pom.xml index b09c9483eeaf..2c16b2ca2355 100644 --- a/sdk/spring/spring-cloud-azure-testcontainers/pom.xml +++ b/sdk/spring/spring-cloud-azure-testcontainers/pom.xml @@ -38,6 +38,8 @@ true 17 17 + + docker https://azuresdkartifacts.blob.core.windows.net/azure-sdk-for-java @@ -204,6 +206,14 @@ + + org.apache.maven.plugins + maven-surefire-plugin + + ${surefire.test.groups} + ${surefire.excluded.test.groups} + + org.apache.maven.plugins maven-jar-plugin @@ -286,6 +296,13 @@ + + docker-tests + + docker + + + below-java-17 diff --git a/sdk/spring/spring-cloud-azure-testcontainers/src/test/java/com/azure/spring/cloud/testcontainers/implementation/service/connection/bus/ServiceBusContainerConnectionDetailsFactoryTests.java b/sdk/spring/spring-cloud-azure-testcontainers/src/test/java/com/azure/spring/cloud/testcontainers/implementation/service/connection/bus/ServiceBusContainerConnectionDetailsFactoryTests.java index 5a3cd1e173ab..5f4a543a58ed 100644 --- a/sdk/spring/spring-cloud-azure-testcontainers/src/test/java/com/azure/spring/cloud/testcontainers/implementation/service/connection/bus/ServiceBusContainerConnectionDetailsFactoryTests.java +++ b/sdk/spring/spring-cloud-azure-testcontainers/src/test/java/com/azure/spring/cloud/testcontainers/implementation/service/connection/bus/ServiceBusContainerConnectionDetailsFactoryTests.java @@ -12,6 +12,7 @@ import com.azure.spring.cloud.service.servicebus.consumer.ServiceBusErrorHandler; import com.azure.spring.cloud.service.servicebus.consumer.ServiceBusRecordMessageListener; import com.azure.spring.messaging.servicebus.core.ServiceBusTemplate; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.condition.EnabledOnOs; import org.junit.jupiter.api.condition.OS; @@ -41,6 +42,7 @@ @TestPropertySource(properties = { "spring.cloud.azure.servicebus.entity-name=queue.1", "spring.cloud.azure.servicebus.entity-type=queue" }) @Testcontainers +@Tag("docker") @EnabledOnOs(OS.LINUX) class ServiceBusContainerConnectionDetailsFactoryTests { diff --git a/sdk/spring/spring-cloud-azure-testcontainers/src/test/java/com/azure/spring/cloud/testcontainers/implementation/service/connection/cosmos/CosmosContainerConnectionDetailsFactoryTests.java b/sdk/spring/spring-cloud-azure-testcontainers/src/test/java/com/azure/spring/cloud/testcontainers/implementation/service/connection/cosmos/CosmosContainerConnectionDetailsFactoryTests.java index bc938ddd50e2..b97dd6b1c9c7 100644 --- a/sdk/spring/spring-cloud-azure-testcontainers/src/test/java/com/azure/spring/cloud/testcontainers/implementation/service/connection/cosmos/CosmosContainerConnectionDetailsFactoryTests.java +++ b/sdk/spring/spring-cloud-azure-testcontainers/src/test/java/com/azure/spring/cloud/testcontainers/implementation/service/connection/cosmos/CosmosContainerConnectionDetailsFactoryTests.java @@ -10,6 +10,7 @@ import com.azure.spring.data.cosmos.repository.CosmosRepository; import com.azure.spring.data.cosmos.repository.config.EnableCosmosRepositories; import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.condition.EnabledOnOs; import org.junit.jupiter.api.condition.OS; @@ -41,6 +42,7 @@ @SpringJUnitConfig @Testcontainers +@Tag("docker") @EnabledOnOs(OS.LINUX) class CosmosContainerConnectionDetailsFactoryTests { diff --git a/sdk/spring/spring-cloud-azure-testcontainers/src/test/java/com/azure/spring/cloud/testcontainers/implementation/service/connection/hubs/EventHubsContainerConnectionDetailsFactoryTests.java b/sdk/spring/spring-cloud-azure-testcontainers/src/test/java/com/azure/spring/cloud/testcontainers/implementation/service/connection/hubs/EventHubsContainerConnectionDetailsFactoryTests.java index 84c05c2bc6a2..ed2fb7f1556e 100644 --- a/sdk/spring/spring-cloud-azure-testcontainers/src/test/java/com/azure/spring/cloud/testcontainers/implementation/service/connection/hubs/EventHubsContainerConnectionDetailsFactoryTests.java +++ b/sdk/spring/spring-cloud-azure-testcontainers/src/test/java/com/azure/spring/cloud/testcontainers/implementation/service/connection/hubs/EventHubsContainerConnectionDetailsFactoryTests.java @@ -8,6 +8,7 @@ import com.azure.spring.cloud.autoconfigure.implementation.context.AzureGlobalPropertiesAutoConfiguration; import com.azure.spring.cloud.autoconfigure.implementation.eventhubs.AzureEventHubsAutoConfiguration; import com.azure.spring.cloud.autoconfigure.implementation.eventhubs.properties.AzureEventHubsConnectionDetails; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.condition.EnabledOnOs; import org.junit.jupiter.api.condition.OS; @@ -35,6 +36,7 @@ "spring.cloud.azure.eventhubs.event-hub-name=eh1" }) @Testcontainers +@Tag("docker") @EnabledOnOs(OS.LINUX) class EventHubsContainerConnectionDetailsFactoryTests { diff --git a/sdk/spring/spring-cloud-azure-testcontainers/src/test/java/com/azure/spring/cloud/testcontainers/implementation/service/connection/storage/StorageBlobContainerConnectionDetailsFactoryTests.java b/sdk/spring/spring-cloud-azure-testcontainers/src/test/java/com/azure/spring/cloud/testcontainers/implementation/service/connection/storage/StorageBlobContainerConnectionDetailsFactoryTests.java index abcf84118d7f..f0032a109708 100644 --- a/sdk/spring/spring-cloud-azure-testcontainers/src/test/java/com/azure/spring/cloud/testcontainers/implementation/service/connection/storage/StorageBlobContainerConnectionDetailsFactoryTests.java +++ b/sdk/spring/spring-cloud-azure-testcontainers/src/test/java/com/azure/spring/cloud/testcontainers/implementation/service/connection/storage/StorageBlobContainerConnectionDetailsFactoryTests.java @@ -6,6 +6,7 @@ import com.azure.spring.cloud.autoconfigure.implementation.context.AzureGlobalPropertiesAutoConfiguration; import com.azure.spring.cloud.autoconfigure.implementation.storage.blob.AzureStorageBlobAutoConfiguration; import com.azure.spring.cloud.autoconfigure.implementation.storage.blob.AzureStorageBlobResourceAutoConfiguration; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.condition.EnabledOnOs; import org.junit.jupiter.api.condition.OS; @@ -29,6 +30,7 @@ @SpringJUnitConfig @Testcontainers +@Tag("docker") @EnabledOnOs(OS.LINUX) class StorageBlobContainerConnectionDetailsFactoryTests { @Container diff --git a/sdk/spring/spring-cloud-azure-testcontainers/src/test/java/com/azure/spring/cloud/testcontainers/implementation/service/connection/storage/StorageQueueContainerConnectionDetailsFactoryTests.java b/sdk/spring/spring-cloud-azure-testcontainers/src/test/java/com/azure/spring/cloud/testcontainers/implementation/service/connection/storage/StorageQueueContainerConnectionDetailsFactoryTests.java index ebc0783b5fcf..1ded16f94cdb 100644 --- a/sdk/spring/spring-cloud-azure-testcontainers/src/test/java/com/azure/spring/cloud/testcontainers/implementation/service/connection/storage/StorageQueueContainerConnectionDetailsFactoryTests.java +++ b/sdk/spring/spring-cloud-azure-testcontainers/src/test/java/com/azure/spring/cloud/testcontainers/implementation/service/connection/storage/StorageQueueContainerConnectionDetailsFactoryTests.java @@ -6,6 +6,7 @@ import com.azure.spring.cloud.autoconfigure.implementation.context.AzureGlobalPropertiesAutoConfiguration; import com.azure.spring.cloud.autoconfigure.implementation.storage.queue.AzureStorageQueueAutoConfiguration; import com.azure.storage.queue.QueueClient; +import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.condition.EnabledOnOs; import org.junit.jupiter.api.condition.OS; @@ -24,6 +25,7 @@ @SpringJUnitConfig @TestPropertySource(properties = "spring.cloud.azure.storage.queue.queue-name=devstoreaccount1/tc-queue") @Testcontainers +@Tag("docker") @EnabledOnOs(OS.LINUX) class StorageQueueContainerConnectionDetailsFactoryTests { From bbcbe6372f40a616cd7a873368d72c6e3de3ff49 Mon Sep 17 00:00:00 2001 From: Rujun Chen Date: Fri, 12 Jun 2026 10:09:24 +0800 Subject: [PATCH 02/16] Fix surefire plugin version marker for pom scanner --- sdk/spring/spring-cloud-azure-docker-compose/pom.xml | 1 + sdk/spring/spring-cloud-azure-testcontainers/pom.xml | 1 + 2 files changed, 2 insertions(+) diff --git a/sdk/spring/spring-cloud-azure-docker-compose/pom.xml b/sdk/spring/spring-cloud-azure-docker-compose/pom.xml index 6dfce22a6d59..71a771c93a7c 100644 --- a/sdk/spring/spring-cloud-azure-docker-compose/pom.xml +++ b/sdk/spring/spring-cloud-azure-docker-compose/pom.xml @@ -201,6 +201,7 @@ org.apache.maven.plugins maven-surefire-plugin + 3.5.5 ${surefire.test.groups} ${surefire.excluded.test.groups} diff --git a/sdk/spring/spring-cloud-azure-testcontainers/pom.xml b/sdk/spring/spring-cloud-azure-testcontainers/pom.xml index 2c16b2ca2355..32c6e2517241 100644 --- a/sdk/spring/spring-cloud-azure-testcontainers/pom.xml +++ b/sdk/spring/spring-cloud-azure-testcontainers/pom.xml @@ -209,6 +209,7 @@ org.apache.maven.plugins maven-surefire-plugin + 3.5.5 ${surefire.test.groups} ${surefire.excluded.test.groups} From 4305a83a6c46ca09c2b9fe451e25da54713c4dac Mon Sep 17 00:00:00 2001 From: Mike Harder Date: Tue, 16 Jun 2026 13:36:10 -0700 Subject: [PATCH 03/16] Apply suggestion from @mikeharder --- .github/workflows/spring-docker-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/spring-docker-tests.yml b/.github/workflows/spring-docker-tests.yml index 9b57a5b9c0c3..d30743a2b099 100644 --- a/.github/workflows/spring-docker-tests.yml +++ b/.github/workflows/spring-docker-tests.yml @@ -51,4 +51,4 @@ jobs: -Pdocker-tests -DfailIfNoTests=false -DskipITs - -DskipTests=false \ No newline at end of file + -DskipTests=false From 15d59722ecf7ffb156b37f0ea48b5f80285828e8 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 16 Jun 2026 20:38:01 +0000 Subject: [PATCH 04/16] Update workflow actions to latest major versions (checkout@v6, setup-java@v5) Co-authored-by: mikeharder <9459391+mikeharder@users.noreply.github.com> --- .github/workflows/spring-docker-tests.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/spring-docker-tests.yml b/.github/workflows/spring-docker-tests.yml index d30743a2b099..aeb6a3033d7b 100644 --- a/.github/workflows/spring-docker-tests.yml +++ b/.github/workflows/spring-docker-tests.yml @@ -19,10 +19,10 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Set up JDK 17 - uses: actions/setup-java@v4 + uses: actions/setup-java@v5 with: distribution: temurin java-version: '17' From 986471e3cd8907dc74e9ba230429bf986b4b3013 Mon Sep 17 00:00:00 2001 From: Rujun Chen Date: Wed, 17 Jun 2026 09:30:11 +0800 Subject: [PATCH 05/16] Update .github/workflows/spring-docker-tests.yml Co-authored-by: Mike Harder --- .github/workflows/spring-docker-tests.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/spring-docker-tests.yml b/.github/workflows/spring-docker-tests.yml index aeb6a3033d7b..2efe499cf6be 100644 --- a/.github/workflows/spring-docker-tests.yml +++ b/.github/workflows/spring-docker-tests.yml @@ -15,7 +15,6 @@ permissions: jobs: spring-docker-tests: runs-on: ubuntu-24.04 - timeout-minutes: 45 steps: - name: Checkout code From 867a0f2080d8423e0611fae52c06280552d54bee Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 17 Jun 2026 01:44:24 +0000 Subject: [PATCH 06/16] Update maven-surefire-plugin version to 3.5.6 in spring pom.xml files Co-authored-by: rujche <171773178+rujche@users.noreply.github.com> --- sdk/spring/spring-cloud-azure-docker-compose/pom.xml | 2 +- sdk/spring/spring-cloud-azure-testcontainers/pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sdk/spring/spring-cloud-azure-docker-compose/pom.xml b/sdk/spring/spring-cloud-azure-docker-compose/pom.xml index e11203137ca2..7f2cd2acf9d2 100644 --- a/sdk/spring/spring-cloud-azure-docker-compose/pom.xml +++ b/sdk/spring/spring-cloud-azure-docker-compose/pom.xml @@ -201,7 +201,7 @@ org.apache.maven.plugins maven-surefire-plugin - 3.5.5 + 3.5.6 ${surefire.test.groups} ${surefire.excluded.test.groups} diff --git a/sdk/spring/spring-cloud-azure-testcontainers/pom.xml b/sdk/spring/spring-cloud-azure-testcontainers/pom.xml index fd9ac14487d9..a8eb201df5c6 100644 --- a/sdk/spring/spring-cloud-azure-testcontainers/pom.xml +++ b/sdk/spring/spring-cloud-azure-testcontainers/pom.xml @@ -209,7 +209,7 @@ org.apache.maven.plugins maven-surefire-plugin - 3.5.5 + 3.5.6 ${surefire.test.groups} ${surefire.excluded.test.groups} From e7484cba59c83ed2e593178f196c8e264afc29e0 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 17 Jun 2026 02:28:01 +0000 Subject: [PATCH 07/16] Disable parallel execution for Spring docker-tagged tests Co-authored-by: rujche <171773178+rujche@users.noreply.github.com> --- sdk/spring/spring-cloud-azure-docker-compose/pom.xml | 1 + sdk/spring/spring-cloud-azure-testcontainers/pom.xml | 1 + 2 files changed, 2 insertions(+) diff --git a/sdk/spring/spring-cloud-azure-docker-compose/pom.xml b/sdk/spring/spring-cloud-azure-docker-compose/pom.xml index 7f2cd2acf9d2..2ae83f9364a9 100644 --- a/sdk/spring/spring-cloud-azure-docker-compose/pom.xml +++ b/sdk/spring/spring-cloud-azure-docker-compose/pom.xml @@ -292,6 +292,7 @@ docker-tests + same_thread docker diff --git a/sdk/spring/spring-cloud-azure-testcontainers/pom.xml b/sdk/spring/spring-cloud-azure-testcontainers/pom.xml index a8eb201df5c6..e9cd92c0484d 100644 --- a/sdk/spring/spring-cloud-azure-testcontainers/pom.xml +++ b/sdk/spring/spring-cloud-azure-testcontainers/pom.xml @@ -300,6 +300,7 @@ docker-tests + same_thread docker From acbb29219b67917d318c438ba13af9bacd903c2b Mon Sep 17 00:00:00 2001 From: Rujun Chen Date: Wed, 17 Jun 2026 14:04:57 +0800 Subject: [PATCH 08/16] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- .github/workflows/spring-docker-tests.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/spring-docker-tests.yml b/.github/workflows/spring-docker-tests.yml index 2efe499cf6be..fd0b9f9f1c46 100644 --- a/.github/workflows/spring-docker-tests.yml +++ b/.github/workflows/spring-docker-tests.yml @@ -5,8 +5,10 @@ on: paths: - '.github/workflows/spring-docker-tests.yml' - 'pom.xml' - - 'sdk/spring/**' - 'sdk/parents/**' + - 'sdk/spring/pom.xml' + - 'sdk/spring/spring-cloud-azure-testcontainers/**' + - 'sdk/spring/spring-cloud-azure-docker-compose/**' workflow_dispatch: permissions: From 154c419b559d46f031ff1d918483dba52ad1adac Mon Sep 17 00:00:00 2001 From: Rujun Chen Date: Wed, 17 Jun 2026 14:08:24 +0800 Subject: [PATCH 09/16] Update paths which will trigger github action --- .github/workflows/spring-docker-tests.yml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.github/workflows/spring-docker-tests.yml b/.github/workflows/spring-docker-tests.yml index fd0b9f9f1c46..69d4efdcc888 100644 --- a/.github/workflows/spring-docker-tests.yml +++ b/.github/workflows/spring-docker-tests.yml @@ -4,11 +4,7 @@ on: pull_request: paths: - '.github/workflows/spring-docker-tests.yml' - - 'pom.xml' - - 'sdk/parents/**' - - 'sdk/spring/pom.xml' - - 'sdk/spring/spring-cloud-azure-testcontainers/**' - - 'sdk/spring/spring-cloud-azure-docker-compose/**' + - 'sdk/spring/**' workflow_dispatch: permissions: From 308b1a4746244ec9b89f8da1199c2f873b81e4d6 Mon Sep 17 00:00:00 2001 From: Rujun Chen Date: Wed, 17 Jun 2026 14:34:24 +0800 Subject: [PATCH 10/16] fix: improve spring-docker-tests workflow clarity - Remove redundant -DskipITs from docker test execution step (Maven test phase doesn't use Failsafe) - Narrow paths filter to only affected modules and workflow file to reduce unnecessary CI runs - Update GitHub Actions to current stable versions (checkout@v4, setup-java@v4) --- .github/workflows/spring-docker-tests.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/spring-docker-tests.yml b/.github/workflows/spring-docker-tests.yml index 69d4efdcc888..5669467a7363 100644 --- a/.github/workflows/spring-docker-tests.yml +++ b/.github/workflows/spring-docker-tests.yml @@ -4,7 +4,9 @@ on: pull_request: paths: - '.github/workflows/spring-docker-tests.yml' - - 'sdk/spring/**' + - 'sdk/spring/spring-cloud-azure-testcontainers/**' + - 'sdk/spring/spring-cloud-azure-docker-compose/**' + - 'sdk/spring/pom.xml' workflow_dispatch: permissions: @@ -16,10 +18,10 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v6 + uses: actions/checkout@v4 - name: Set up JDK 17 - uses: actions/setup-java@v5 + uses: actions/setup-java@v4 with: distribution: temurin java-version: '17' @@ -47,5 +49,3 @@ jobs: test -Pdocker-tests -DfailIfNoTests=false - -DskipITs - -DskipTests=false From c20b498946211e00a9f1e4722c73a924dee7b70d Mon Sep 17 00:00:00 2001 From: Rujun Chen Date: Wed, 17 Jun 2026 14:36:23 +0800 Subject: [PATCH 11/16] revert: restore broad sdk/spring paths filter The docker-tests workflow needs to be triggered for all spring module changes because other modules may affect dependencies and the build of the docker test modules. Narrowing to specific modules could miss important dependency changes. --- .github/workflows/spring-docker-tests.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/spring-docker-tests.yml b/.github/workflows/spring-docker-tests.yml index 5669467a7363..dbe522b97f05 100644 --- a/.github/workflows/spring-docker-tests.yml +++ b/.github/workflows/spring-docker-tests.yml @@ -4,9 +4,7 @@ on: pull_request: paths: - '.github/workflows/spring-docker-tests.yml' - - 'sdk/spring/spring-cloud-azure-testcontainers/**' - - 'sdk/spring/spring-cloud-azure-docker-compose/**' - - 'sdk/spring/pom.xml' + - 'sdk/spring/**' workflow_dispatch: permissions: From eb1c3e021e37cbf2a679dcbbfa0ee5b6131f4088 Mon Sep 17 00:00:00 2001 From: Rujun Chen Date: Wed, 17 Jun 2026 14:37:22 +0800 Subject: [PATCH 12/16] revert: restore original GitHub Actions versions Do not change actions versions - they were already correct in the original PR. --- .github/workflows/spring-docker-tests.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/spring-docker-tests.yml b/.github/workflows/spring-docker-tests.yml index dbe522b97f05..92b5c3676c7f 100644 --- a/.github/workflows/spring-docker-tests.yml +++ b/.github/workflows/spring-docker-tests.yml @@ -16,10 +16,10 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Set up JDK 17 - uses: actions/setup-java@v4 + uses: actions/setup-java@v5 with: distribution: temurin java-version: '17' From 4f0bb67fd4d37ca52a0e830e695a29e2dfa35b9a Mon Sep 17 00:00:00 2001 From: Rujun Chen Date: Wed, 17 Jun 2026 14:38:25 +0800 Subject: [PATCH 13/16] optimize: add maven flags to speed up spring-docker-tests workflow Add optimization flags to the dependency build step: - Skip checks (checkstyle, spotbugs, jacoco, javadoc, revapi, enforcer) - Skip code snippet processing - Add dev profile - Use parallel threads (-T 4) - Disable transport progress (-ntp) These flags align with the recommended build command in sdk/spring/README.md and significantly reduce build time by skipping unnecessary checks during the dependency preparation phase. --- .github/workflows/spring-docker-tests.yml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/.github/workflows/spring-docker-tests.yml b/.github/workflows/spring-docker-tests.yml index 92b5c3676c7f..737b41258456 100644 --- a/.github/workflows/spring-docker-tests.yml +++ b/.github/workflows/spring-docker-tests.yml @@ -36,8 +36,17 @@ jobs: -pl spring-cloud-azure-testcontainers,spring-cloud-azure-docker-compose -am install + -Dcheckstyle.skip=true + -Dcodesnippet.skip + -Denforcer.skip + -Djacoco.skip=true + -Dmaven.javadoc.skip=true + -Drevapi.skip=true -DskipTests - -DskipITs + -Dspotbugs.skip=true + -Pdev + -T 4 + -ntp -DfailIfNoTests=false - name: Run spring docker-tagged tests From 139018595cb2a751abe27c8cbd211c914af6ef05 Mon Sep 17 00:00:00 2001 From: Rujun Chen Date: Wed, 17 Jun 2026 14:38:57 +0800 Subject: [PATCH 14/16] optimize: add maven flags to spring docker-tagged tests step Add optimization flags to the test execution step: - Skip checks (checkstyle, spotbugs, jacoco, javadoc, enforcer) - Use parallel threads (-T 4) - Disable transport progress (-ntp) These flags speed up test execution without affecting test quality, as checks should be enforced during the build/install phase. --- .github/workflows/spring-docker-tests.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/workflows/spring-docker-tests.yml b/.github/workflows/spring-docker-tests.yml index 737b41258456..cefa2cdbbe23 100644 --- a/.github/workflows/spring-docker-tests.yml +++ b/.github/workflows/spring-docker-tests.yml @@ -55,4 +55,11 @@ jobs: -pl spring-cloud-azure-testcontainers,spring-cloud-azure-docker-compose test -Pdocker-tests + -Dcheckstyle.skip=true + -Denforcer.skip + -Djacoco.skip=true + -Dmaven.javadoc.skip=true + -Dspotbugs.skip=true + -T 4 + -ntp -DfailIfNoTests=false From 9149e644f892e4bcb0c0718f7dcdaf9b33ec0f9e Mon Sep 17 00:00:00 2001 From: Rujun Chen Date: Wed, 17 Jun 2026 14:39:26 +0800 Subject: [PATCH 15/16] cleanup: remove unnecessary -DfailIfNoTests=false from test step The test step explicitly runs docker-tagged tests with -Pdocker-tests. If no tests are found, it should fail to catch configuration issues rather than silently succeeding. This parameter is only needed in the install step where -DskipTests is used. --- .github/workflows/spring-docker-tests.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/spring-docker-tests.yml b/.github/workflows/spring-docker-tests.yml index cefa2cdbbe23..7f8e105b8ec4 100644 --- a/.github/workflows/spring-docker-tests.yml +++ b/.github/workflows/spring-docker-tests.yml @@ -62,4 +62,3 @@ jobs: -Dspotbugs.skip=true -T 4 -ntp - -DfailIfNoTests=false From 0c1cf4a6b9d6a4b4969276322d456ca1877d1efe Mon Sep 17 00:00:00 2001 From: Rujun Chen Date: Wed, 17 Jun 2026 14:41:02 +0800 Subject: [PATCH 16/16] fix: standardize maven property flags format - Add =true to -Dcodesnippet.skip and -Denforcer.skip in install step for consistency - Add -Dcodesnippet.skip=true to test step (was missing) - Add =true to -Denforcer.skip in test step for consistency - All skip properties now use explicit =true format --- .github/workflows/spring-docker-tests.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/spring-docker-tests.yml b/.github/workflows/spring-docker-tests.yml index 7f8e105b8ec4..5d102f28351c 100644 --- a/.github/workflows/spring-docker-tests.yml +++ b/.github/workflows/spring-docker-tests.yml @@ -37,8 +37,8 @@ jobs: -am install -Dcheckstyle.skip=true - -Dcodesnippet.skip - -Denforcer.skip + -Dcodesnippet.skip=true + -Denforcer.skip=true -Djacoco.skip=true -Dmaven.javadoc.skip=true -Drevapi.skip=true @@ -56,7 +56,8 @@ jobs: test -Pdocker-tests -Dcheckstyle.skip=true - -Denforcer.skip + -Dcodesnippet.skip=true + -Denforcer.skip=true -Djacoco.skip=true -Dmaven.javadoc.skip=true -Dspotbugs.skip=true