From ee2f0a37e5aba8caf01df5b8fddb06a8cb816720 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 15 Aug 2023 17:55:07 +0000 Subject: [PATCH] [CheckCompatibility] Prevent interleaving of log output (#9280) Signed-off-by: Peter Nied (cherry picked from commit 23fd9a5d94a17459c8953ccd3e089770dc1d1700) Signed-off-by: github-actions[bot] --- .github/workflows/check-compatibility.yml | 10 ++++++---- .../gradle/CheckCompatibilityTask.groovy | 18 +++++++++++++----- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/.github/workflows/check-compatibility.yml b/.github/workflows/check-compatibility.yml index b208fe38a581f..18d800faee129 100644 --- a/.github/workflows/check-compatibility.yml +++ b/.github/workflows/check-compatibility.yml @@ -11,13 +11,15 @@ jobs: - uses: actions/checkout@v3 - name: Run compatibility task - run: ./gradlew checkCompatibility | tee $HOME/gradlew-check.out + run: ./gradlew checkCompatibility -i | tee $HOME/gradlew-check.out - name: Get results run: | - echo 'Compatibility status:' > ${{ github.workspace }}/results.txt && echo '```' >> ${{ github.workspace }}/results.txt - grep -e 'Compatible components' -e 'Incompatible components' -e 'Components skipped' -A 2 -B 3 $HOME/gradlew-check.out >> "${{ github.workspace }}/results.txt" - echo '```' >> ${{ github.workspace }}/results.txt + echo '## Compatibility status:' > "${{ github.workspace }}/results.txt" + echo "Checks if related components are compatible with change $(git rev-parse --short HEAD)" >> "${{ github.workspace }}/results.txt" + echo "### Incompatible components" >> "${{ github.workspace }}/results.txt" && grep -e 'Incompatible component' $HOME/gradlew-check.out | sed -e 's/Incompatible component: \[\(.*\)\]/- \1/' >> "${{ github.workspace }}/results.txt" + echo "### Skipped components" >> "${{ github.workspace }}/results.txt" && grep -e 'Skipped component' $HOME/gradlew-check.out | sed -e 's/Skipped component: \[\(.*\)\]/- \1/' >> "${{ github.workspace }}/results.txt" + echo "### Compatible components" >> "${{ github.workspace }}/results.txt" && grep -e 'Compatible component' $HOME/gradlew-check.out | sed -e 's/Compatible component: \[\(.*\)\]/- \1/' >> "${{ github.workspace }}/results.txt" - name: GitHub App token id: github_app_token diff --git a/buildSrc/src/main/groovy/org/opensearch/gradle/CheckCompatibilityTask.groovy b/buildSrc/src/main/groovy/org/opensearch/gradle/CheckCompatibilityTask.groovy index 8d2ba51572def..cfd3d04ecd16c 100644 --- a/buildSrc/src/main/groovy/org/opensearch/gradle/CheckCompatibilityTask.groovy +++ b/buildSrc/src/main/groovy/org/opensearch/gradle/CheckCompatibilityTask.groovy @@ -43,6 +43,9 @@ class CheckCompatibilityTask extends DefaultTask { repositoryUrls.parallelStream().forEach { repositoryUrl -> logger.lifecycle("Checking compatibility for: $repositoryUrl with ref: $ref") def tempDir = File.createTempDir() + def stdout = new ByteArrayOutputStream() + def errout = new ByteArrayOutputStream() + def skipped = false; try { if (cloneAndCheckout(repositoryUrl, tempDir)) { if (repositoryUrl.toString().endsWithAny('notifications', 'notifications.git')) { @@ -50,29 +53,34 @@ class CheckCompatibilityTask extends DefaultTask { } project.exec { workingDir = tempDir - def stdout = new ByteArrayOutputStream() executable = (OperatingSystem.current().isWindows()) ? 'gradlew.bat' : './gradlew' - args 'assemble' + args ('assemble') standardOutput stdout + errorOutput errout } compatibleComponents.add(repositoryUrl) } else { - logger.lifecycle("Skipping compatibility check for $repositoryUrl") + skipped = true } } catch (ex) { failedComponents.add(repositoryUrl) logger.info("Gradle assemble failed for $repositoryUrl", ex) } finally { + if (skipped) { + logger.lifecycle("Skipping compatibility check for $repositoryUrl") + } else { + logger.lifecycle("Finished compatibility check for $repositoryUrl") + logger.info("Standard output for $repositoryUrl build:\n\n" + stdout.toString()) + logger.error("Error output for $repositoryUrl build:\n\n" + errout.toString()) + } tempDir.deleteDir() } } if (!failedComponents.isEmpty()) { logger.lifecycle("Incompatible components: $failedComponents") - logger.info("Compatible components: $compatibleComponents") } if (!gitFailedComponents.isEmpty()) { logger.lifecycle("Components skipped due to git failures: $gitFailedComponents") - logger.info("Compatible components: $compatibleComponents") } if (!compatibleComponents.isEmpty()) { logger.lifecycle("Compatible components: $compatibleComponents")