Hello world
This commit is contained in:
parent
9e2ec6e427
commit
c2309d72bd
15 changed files with 130920 additions and 0 deletions
121
config.js
Normal file
121
config.js
Normal file
|
|
@ -0,0 +1,121 @@
|
|||
const fs = require('fs')
|
||||
const os = require('os')
|
||||
const yaml = require('yaml')
|
||||
const core = require('@actions/core')
|
||||
|
||||
const cacheVersion = core.getInput('cache-version')
|
||||
const externalCacheConfig = yaml.parse(core.getInput('external-cache'))
|
||||
|
||||
const homeDir = os.homedir()
|
||||
const platform = os.platform()
|
||||
|
||||
let bazelDisk = core.toPosixPath(`${homeDir}/.cache/bazel-disk`)
|
||||
let bazelRepository = core.toPosixPath(`${homeDir}/.cache/bazel-repo`)
|
||||
let bazelOutputBase = `${homeDir}/.bazel`
|
||||
let userCacheDir = `${homeDir}/.cache`
|
||||
|
||||
switch (platform) {
|
||||
case 'darwin':
|
||||
userCacheDir = `${homeDir}/Library/Caches`
|
||||
break
|
||||
case 'win32':
|
||||
bazelDisk = 'D:/_bazel-disk'
|
||||
bazelRepository = 'D:/_bazel-repo'
|
||||
bazelOutputBase = 'D:/_bazel'
|
||||
userCacheDir = `${homeDir}/AppData/Local`
|
||||
break
|
||||
}
|
||||
|
||||
const baseCacheKey = `setup-bazel-${cacheVersion}-${platform}`
|
||||
const bazelrc = core.getMultilineInput('bazelrc')
|
||||
|
||||
const diskCacheConfig = core.getInput('disk-cache')
|
||||
const diskCacheEnabled = diskCacheConfig.length > 0
|
||||
let diskCacheName = 'disk'
|
||||
if (diskCacheEnabled) {
|
||||
bazelrc.push(`build --disk_cache=${bazelDisk}`)
|
||||
diskCacheName = `${diskCacheName}-${diskCacheConfig}`
|
||||
}
|
||||
|
||||
const repositoryCacheEnabled = core.getBooleanInput('repository-cache')
|
||||
if (repositoryCacheEnabled) {
|
||||
bazelrc.push(`build --repository_cache=${bazelRepository}`)
|
||||
}
|
||||
|
||||
const googleCredentials = core.getInput('google-credentials')
|
||||
const googleCredentialsSaved = (core.getState('google-credentials-path').length > 0)
|
||||
if (googleCredentials.length > 0 && !googleCredentialsSaved) {
|
||||
const tmpDir = core.toPosixPath(fs.mkdtempSync(os.tmpdir()))
|
||||
const googleCredentialsPath = `${tmpDir}/key.json`
|
||||
fs.writeFileSync(googleCredentialsPath, googleCredentials)
|
||||
bazelrc.push(`build --google_credentials=${googleCredentialsPath}`)
|
||||
core.saveState('google-credentials-path', googleCredentialsPath)
|
||||
}
|
||||
|
||||
const bazelExternal = core.toPosixPath(`${bazelOutputBase}/external`)
|
||||
const externalCache = {}
|
||||
if (externalCacheConfig) {
|
||||
externalCache.enabled = true
|
||||
externalCache.minSize = 10 // MB
|
||||
externalCache.baseCacheKey = `${baseCacheKey}-external-`
|
||||
externalCache.regexp = `^${baseCacheKey}-external-(?<name>.+)-[a-z0-9]+$`
|
||||
externalCache.default = {
|
||||
files: [
|
||||
'WORKSPACE.bazel',
|
||||
'WORKSPACE'
|
||||
]
|
||||
}
|
||||
externalCache.name = (name) => {
|
||||
return `external-${name}`
|
||||
}
|
||||
externalCache.paths = (name) => {
|
||||
return [
|
||||
`${bazelExternal}/@${name}.marker`,
|
||||
`${bazelExternal}/${name}`
|
||||
]
|
||||
}
|
||||
|
||||
for (const name in externalCacheConfig) {
|
||||
externalCache[name] = {
|
||||
files: Array(externalCacheConfig[name]).flat()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
baseCacheKey,
|
||||
bazeliskCache: {
|
||||
enabled: core.getBooleanInput('bazelisk-cache'),
|
||||
files: ['.bazelversion'],
|
||||
name: 'bazelisk',
|
||||
paths: [core.toPosixPath(`${userCacheDir}/bazelisk`)]
|
||||
},
|
||||
bazelrc,
|
||||
diskCache: {
|
||||
enabled: diskCacheEnabled,
|
||||
files: [
|
||||
'**/BUILD.bazel',
|
||||
'**/BUILD'
|
||||
],
|
||||
name: diskCacheName,
|
||||
paths: [bazelDisk]
|
||||
},
|
||||
externalCache,
|
||||
paths: {
|
||||
bazelExternal,
|
||||
bazelOutputBase: core.toPosixPath(bazelOutputBase),
|
||||
bazelrc: core.toPosixPath(`${homeDir}/.bazelrc`)
|
||||
},
|
||||
platform,
|
||||
repositoryCache: {
|
||||
enabled: repositoryCacheEnabled,
|
||||
files: [
|
||||
'WORKSPACE.bazel',
|
||||
'WORKSPACE'
|
||||
],
|
||||
name: 'repository',
|
||||
paths: [bazelRepository]
|
||||
},
|
||||
token: core.getInput('token'),
|
||||
useGnuTarOnWindows: core.getBooleanInput('use-gnu-tar-on-windows')
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue