Merge pull request #282 from gradle/dd/summary

Use GHA Job Summary to summarize Gradle build results
This commit is contained in:
Daz DeBoer 2022-05-24 07:05:16 -06:00 committed by GitHub
commit c21b4ec861
WARNING! Although there is a key with this ID in the database it does not verify this commit! This commit is SUSPICIOUS.
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 28 additions and 34 deletions

View file

@ -8,6 +8,18 @@ env:
jobs: jobs:
failing-build:
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v2
- name: Test build failure
uses: ./
continue-on-error: true
with:
build-root-directory: .github/workflow-samples/groovy-dsl
arguments: not-a-valid-task
wrapper-missing: wrapper-missing:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:

16
dist/main/index.js vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

2
dist/post/index.js vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -264,22 +264,20 @@ if (isTopLevelBuild) {
def registerCallbacks(buildScanExtension, rootProjectName) { def registerCallbacks(buildScanExtension, rootProjectName) {
buildScanExtension.with { buildScanExtension.with {
def scanFile = new File("gradle-build-scan.txt")
def buildFailed = false def buildFailed = false
buildFinished { result -> buildFinished { result ->
buildFailed = (result.failure != null) buildFailed = (result.failure != null)
} }
buildScanPublished { buildScan -> buildScanPublished { buildScan ->
scanFile.text = buildScan.buildScanUri
// Send commands directly to GitHub Actions via STDOUT. // Send commands directly to GitHub Actions via STDOUT.
def gradleCommand = rootProjectName + " " + gradle.startParameter.taskNames.join(" ") def gradleCommand = rootProjectName + " " + gradle.startParameter.taskNames.join(" ")
def githubSummaryFile = new File(System.getenv("GITHUB_STEP_SUMMARY"))
if (buildFailed) { if (buildFailed) {
println("::warning ::Gradle build '\${gradleCommand}' FAILED - \${buildScan.buildScanUri}") githubSummaryFile << "❌ Gradle Build \`\${gradleCommand}\` [![Gradle Enterprise Build Scan](https://img.shields.io/badge/Gradle%20Enterprise%20Build%20Scan%E2%84%A2-FAILED-red?logo=Gradle)](\${buildScan.buildScanUri})"
} else { } else {
println("::notice ::Gradle build '\${gradleCommand}' - \${buildScan.buildScanUri}") githubSummaryFile << "✅ Gradle Build \`\${gradleCommand}\` [![Gradle Enterprise Build Scan](https://img.shields.io/badge/Gradle%20Enterprise%20Build%20Scan%E2%84%A2-SUCCESS-brightgreen?logo=Gradle)](\${buildScan.buildScanUri})"
} }
println("::set-output name=build-scan-url::\${buildScan.buildScanUri}") println("::set-output name=build-scan-url::\${buildScan.buildScanUri}")
} }

View file

@ -1,17 +1,9 @@
import * as core from '@actions/core' import * as core from '@actions/core'
import * as exec from '@actions/exec' import * as exec from '@actions/exec'
import fs from 'fs' import fs from 'fs'
import path from 'path'
import * as gradlew from './gradlew' import * as gradlew from './gradlew'
export async function executeGradleBuild(executable: string | undefined, root: string, args: string[]): Promise<void> { export async function executeGradleBuild(executable: string | undefined, root: string, args: string[]): Promise<void> {
let buildScanUrl: string | undefined
const buildScanFile = path.resolve(root, 'gradle-build-scan.txt')
if (fs.existsSync(buildScanFile)) {
fs.unlinkSync(buildScanFile)
}
// Use the provided executable, or look for a Gradle wrapper script to run // Use the provided executable, or look for a Gradle wrapper script to run
const toExecute = executable ?? gradlew.locateGradleWrapperScript(root) const toExecute = executable ?? gradlew.locateGradleWrapperScript(root)
verifyIsExecutableScript(toExecute) verifyIsExecutableScript(toExecute)
@ -20,16 +12,8 @@ export async function executeGradleBuild(executable: string | undefined, root: s
ignoreReturnCode: true ignoreReturnCode: true
}) })
if (fs.existsSync(buildScanFile)) {
buildScanUrl = fs.readFileSync(buildScanFile, 'utf-8')
}
if (status !== 0) { if (status !== 0) {
if (buildScanUrl) { core.setFailed(`Gradle build failed: see console output for details`)
core.setFailed(`Gradle build failed: ${buildScanUrl}`)
} else {
core.setFailed(`Gradle build failed: process exited with status ${status}`)
}
} }
} }