mirror of
				https://github.com/gradle/gradle-build-action.git
				synced 2025-11-04 18:08:57 +08:00 
			
		
		
		
	Merge pull request #282 from gradle/dd/summary
Use GHA Job Summary to summarize Gradle build results
This commit is contained in:
		
							
								
								
									
										12
									
								
								.github/workflows/failure-cases.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										12
									
								
								.github/workflows/failure-cases.yml
									
									
									
									
										vendored
									
									
								
							@@ -8,6 +8,18 @@ env:
 | 
			
		||||
 | 
			
		||||
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:
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    steps:
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										16
									
								
								dist/main/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										16
									
								
								dist/main/index.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										2
									
								
								dist/main/index.js.map
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								dist/main/index.js.map
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										2
									
								
								dist/post/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								dist/post/index.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										2
									
								
								dist/post/index.js.map
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								dist/post/index.js.map
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							@@ -264,22 +264,20 @@ if (isTopLevelBuild) {
 | 
			
		||||
 | 
			
		||||
def registerCallbacks(buildScanExtension, rootProjectName) {
 | 
			
		||||
    buildScanExtension.with {
 | 
			
		||||
        def scanFile = new File("gradle-build-scan.txt")
 | 
			
		||||
        def buildFailed = false
 | 
			
		||||
 | 
			
		||||
        buildFinished { result ->
 | 
			
		||||
            buildFailed = (result.failure != null)
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        buildScanPublished { buildScan ->
 | 
			
		||||
            scanFile.text = buildScan.buildScanUri
 | 
			
		||||
 | 
			
		||||
            // Send commands directly to GitHub Actions via STDOUT.
 | 
			
		||||
            def gradleCommand = rootProjectName + " " + gradle.startParameter.taskNames.join(" ")
 | 
			
		||||
 | 
			
		||||
            def githubSummaryFile = new File(System.getenv("GITHUB_STEP_SUMMARY"))
 | 
			
		||||
            if (buildFailed) {
 | 
			
		||||
                println("::warning ::Gradle build '\${gradleCommand}' FAILED - \${buildScan.buildScanUri}")
 | 
			
		||||
                githubSummaryFile << "❌ Gradle Build \`\${gradleCommand}\` [](\${buildScan.buildScanUri})"
 | 
			
		||||
            } else {
 | 
			
		||||
                println("::notice ::Gradle build '\${gradleCommand}' - \${buildScan.buildScanUri}")
 | 
			
		||||
                githubSummaryFile << "✅ Gradle Build \`\${gradleCommand}\` [](\${buildScan.buildScanUri})"
 | 
			
		||||
            }
 | 
			
		||||
            println("::set-output name=build-scan-url::\${buildScan.buildScanUri}")
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
@@ -1,17 +1,9 @@
 | 
			
		||||
import * as core from '@actions/core'
 | 
			
		||||
import * as exec from '@actions/exec'
 | 
			
		||||
import fs from 'fs'
 | 
			
		||||
import path from 'path'
 | 
			
		||||
import * as gradlew from './gradlew'
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
    const toExecute = executable ?? gradlew.locateGradleWrapperScript(root)
 | 
			
		||||
    verifyIsExecutableScript(toExecute)
 | 
			
		||||
@@ -20,16 +12,8 @@ export async function executeGradleBuild(executable: string | undefined, root: s
 | 
			
		||||
        ignoreReturnCode: true
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
    if (fs.existsSync(buildScanFile)) {
 | 
			
		||||
        buildScanUrl = fs.readFileSync(buildScanFile, 'utf-8')
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (status !== 0) {
 | 
			
		||||
        if (buildScanUrl) {
 | 
			
		||||
            core.setFailed(`Gradle build failed: ${buildScanUrl}`)
 | 
			
		||||
        } else {
 | 
			
		||||
            core.setFailed(`Gradle build failed: process exited with status ${status}`)
 | 
			
		||||
        }
 | 
			
		||||
        core.setFailed(`Gradle build failed: see console output for details`)
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user