mirror of
https://github.com/gradle/gradle-build-action.git
synced 2025-07-12 10:15:51 +02:00
Always initialize Gradle User Home with init script
The generated gradle.properties file and init script are not cached, so need to be generated even when restoring from cache.
This commit is contained in:
parent
a72af0b6a6
commit
45ef022607
4 changed files with 55 additions and 61 deletions
|
@ -7,7 +7,6 @@ import * as exec from '@actions/exec'
|
|||
|
||||
import {AbstractCache, CacheEntryListener, CacheListener} from './cache-base'
|
||||
import {getCacheKeyPrefix, hashFileNames, tryDelete} from './cache-utils'
|
||||
import {writeBuildScanCaptureInitScript} from './build-scan-capture'
|
||||
|
||||
const META_FILE_DIR = '.gradle-build-action'
|
||||
|
||||
|
@ -23,20 +22,9 @@ export class GradleUserHomeCache extends AbstractCache {
|
|||
this.gradleUserHome = this.determineGradleUserHome(rootDir)
|
||||
}
|
||||
|
||||
async initializeState(): Promise<void> {
|
||||
this.initializeGradleUserHome(this.gradleUserHome)
|
||||
}
|
||||
|
||||
private initializeGradleUserHome(gradleUserHome: string): void {
|
||||
fs.mkdirSync(gradleUserHome, {recursive: true})
|
||||
|
||||
const propertiesFile = path.resolve(gradleUserHome, 'gradle.properties')
|
||||
this.debug(`Initializing gradle.properties to disable daemon: ${propertiesFile}`)
|
||||
fs.writeFileSync(propertiesFile, 'org.gradle.daemon=false')
|
||||
|
||||
const initScript = path.resolve(gradleUserHome, 'init.gradle')
|
||||
this.debug(`Adding init script to capture build scans: ${initScript}`)
|
||||
writeBuildScanCaptureInitScript(initScript)
|
||||
init(): void {
|
||||
this.debug(`Initializing Gradle User Home with properties and init script: ${this.gradleUserHome}`)
|
||||
initializeGradleUserHome(this.gradleUserHome)
|
||||
}
|
||||
|
||||
async afterRestore(listener: CacheListener): Promise<void> {
|
||||
|
@ -271,3 +259,49 @@ export class GradleUserHomeCache extends AbstractCache {
|
|||
core.info('-----------------------')
|
||||
}
|
||||
}
|
||||
|
||||
function initializeGradleUserHome(gradleUserHome: string): void {
|
||||
fs.mkdirSync(gradleUserHome, {recursive: true})
|
||||
|
||||
const propertiesFile = path.resolve(gradleUserHome, 'gradle.properties')
|
||||
fs.writeFileSync(propertiesFile, 'org.gradle.daemon=false')
|
||||
|
||||
const initScript = path.resolve(gradleUserHome, 'init.gradle')
|
||||
fs.writeFileSync(
|
||||
initScript,
|
||||
`
|
||||
import org.gradle.util.GradleVersion
|
||||
|
||||
// Don't run against the included builds (if the main build has any).
|
||||
def isTopLevelBuild = gradle.getParent() == null
|
||||
if (isTopLevelBuild) {
|
||||
def version = GradleVersion.current().baseVersion
|
||||
def atLeastGradle4 = version >= GradleVersion.version("4.0")
|
||||
def atLeastGradle6 = version >= GradleVersion.version("6.0")
|
||||
|
||||
if (atLeastGradle6) {
|
||||
settingsEvaluated { settings ->
|
||||
if (settings.pluginManager.hasPlugin("com.gradle.enterprise")) {
|
||||
registerCallbacks(settings.extensions["gradleEnterprise"].buildScan, settings.rootProject.name)
|
||||
}
|
||||
}
|
||||
} else if (atLeastGradle4) {
|
||||
projectsEvaluated { gradle ->
|
||||
if (gradle.rootProject.pluginManager.hasPlugin("com.gradle.build-scan")) {
|
||||
registerCallbacks(gradle.rootProject.extensions["buildScan"], gradle.rootProject.name)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
def registerCallbacks(buildScanExtension, rootProjectName) {
|
||||
buildScanExtension.with {
|
||||
def scanFile = new File("gradle-build-scan.txt")
|
||||
buildScanPublished { buildScan ->
|
||||
scanFile.text = buildScan.buildScanUri
|
||||
}
|
||||
}
|
||||
}
|
||||
`
|
||||
)
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue