mirror of
https://github.com/gradle/actions.git
synced 2025-12-08 17:15:46 +08:00
If the user supplies no 'arguments' parameter, the action will function as a 'setup-gradle' action, adding Gradle to the PATH and enabling other features without actually running a Gradle build. Any subsequent Gradle invocations in the workflow will benefit from: - Save/restore of Gradle User Home - Save/restore of configuration-cache data - Capture of build-scan URLs These features are enabled via Gradle User Home, so any Gradle invocation that uses the same Gradle User Home will be included.
34 lines
1.1 KiB
TypeScript
34 lines
1.1 KiB
TypeScript
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)
|
|
const status: number = await exec.exec(toExecute, args, {
|
|
cwd: root,
|
|
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}`)
|
|
}
|
|
}
|
|
}
|