Skip to content
Merged
52 changes: 39 additions & 13 deletions .github/workflows/build-validation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,10 +42,14 @@ jobs:
uses: gradle/gradle-build-action@v2

- name: Build with Gradle
run: ./gradlew build -x test
run: |
export JAVA_HOME=$JDK_11

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reading https://github.com/actions/setup-java?tab=readme-ov-file#install-multiple-jdks looks like there might be a better way to manage the multiple distributions of java?

Also wonder if JDK 8 is even needed?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good catch! Simplified in commit 45316b1 - removed JDK 8 entirely and now only setup JDK 11 with setup-java@v4. No more JDK_11 environment variable workaround needed.

./gradlew build -x test

- name: Run SpotBugs
run: ./gradlew spotbugsMain spotbugsTest
run: |
export JAVA_HOME=$JDK_11
./gradlew spotbugsMain spotbugsTest
continue-on-error: false

- name: Upload SpotBugs reports
Expand Down Expand Up @@ -77,14 +81,36 @@ jobs:
run: docker run --name durabletask-emulator -p 4001:8080 -d mcr.microsoft.com/dts/dts-emulator:latest

- name: Display Durable Task Emulator Logs
run: nohup docker logs --since=0 durabletask-emulator > durabletask-emulator.log 2>&1 &
run: nohup docker logs -f durabletask-emulator > durabletask-emulator.log 2>&1 &

# wait for 10 seconds, so sidecar container can be fully up, this will avoid intermittent failing issues for integration tests causing by failed to connect to sidecar
- name: Wait for 10 seconds
run: sleep 10
- name: Wait for Durable Task Emulator to be ready
run: |
echo "Waiting for Durable Task Emulator to be ready on port 4001..."
# Maximum wait time of 60 seconds for emulator startup
MAX_WAIT_SECONDS=60
attempt=0
# Use bash's /dev/tcp for portability instead of nc
while ! (echo > /dev/tcp/localhost/4001) 2>/dev/null; do
attempt=$((attempt + 1))
if [ $attempt -ge $MAX_WAIT_SECONDS ]; then
echo "ERROR: Emulator not ready after $MAX_WAIT_SECONDS seconds"
echo "Docker container status:"
docker ps -a
echo "Container logs:"
docker logs durabletask-emulator 2>&1 | tail -50
exit 1
fi
echo "Attempt $attempt/$MAX_WAIT_SECONDS - waiting for emulator..."
sleep 1
done
echo "Durable Task Emulator is ready on port 4001"
# Give additional time for gRPC service to fully initialize after port is open
sleep 5

- name: Integration Tests with Gradle
run: ./gradlew integrationTest || echo "TEST_FAILED=true" >> $GITHUB_ENV
run: |
export JAVA_HOME=$JDK_11
./gradlew integrationTest || echo "TEST_FAILED=true" >> $GITHUB_ENV
continue-on-error: true

- name: Kill Durable Task Emulator
Expand Down Expand Up @@ -120,11 +146,11 @@ jobs:
steps:
- uses: actions/checkout@v2

- name: Set up JDK 8
- name: Set up JDK 11
uses: actions/setup-java@v2
with:
java-version: '8'
distribution: 'temurin'
java-version: '11'
distribution: 'microsoft'

- name: Setup Gradle
uses: gradle/gradle-build-action@v2
Expand Down Expand Up @@ -159,11 +185,11 @@ jobs:
steps:
- uses: actions/checkout@v2

- name: Set up JDK 8
- name: Set up JDK 11
uses: actions/setup-java@v2
with:
java-version: '8'
distribution: 'temurin'
java-version: '11'
distribution: 'microsoft'

- name: Setup Gradle
uses: gradle/gradle-build-action@v2
Expand Down
3 changes: 1 addition & 2 deletions endtoendtests/build.gradle
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
plugins {
id 'java'
id "com.microsoft.azure.azurefunctions" version "1.11.1"
}
apply plugin: 'java'
apply plugin: "com.microsoft.azure.azurefunctions"

group 'com.durabletask.endtoend'
version '0.0.0-SNAPSHOT'
Expand Down
3 changes: 1 addition & 2 deletions samples-azure-functions/build.gradle
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
plugins {
id 'java'
id "com.microsoft.azure.azurefunctions" version "1.11.1"
}
apply plugin: 'java'
apply plugin: "com.microsoft.azure.azurefunctions"

group 'com.functions'
version '0.1.0-SNAPSHOT'
Expand Down
Loading