mirror of
https://github.com/gradle/actions.git
synced 2026-06-12 22:50:40 +00:00
Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| e0fc67aa64 |
@@ -27,6 +27,8 @@ export type CacheCleanupStatus =
|
|||||||
| 'disabled-config-cache-hit'
|
| 'disabled-config-cache-hit'
|
||||||
| 'disabled-readonly'
|
| 'disabled-readonly'
|
||||||
|
|
||||||
|
export type ConfigurationCacheStatus = 'not-active' | 'restored' | 'not-restored' | 'restore-incomplete'
|
||||||
|
|
||||||
export interface CacheEntryReport {
|
export interface CacheEntryReport {
|
||||||
entryName: string
|
entryName: string
|
||||||
requestedKey?: string
|
requestedKey?: string
|
||||||
@@ -47,6 +49,7 @@ export interface CacheEntryReport {
|
|||||||
export interface CacheReport {
|
export interface CacheReport {
|
||||||
status: CacheStatus
|
status: CacheStatus
|
||||||
cleanup?: CacheCleanupStatus
|
cleanup?: CacheCleanupStatus
|
||||||
|
configurationCache?: ConfigurationCacheStatus
|
||||||
entries: CacheEntryReport[]
|
entries: CacheEntryReport[]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import {CacheCleanupStatus, CacheEntryReport, CacheReport, CacheStatus} from './cache-service'
|
import {CacheCleanupStatus, CacheEntryReport, CacheReport, CacheStatus, ConfigurationCacheStatus} from './cache-service'
|
||||||
|
|
||||||
const DOCS = 'https://github.com/gradle/actions/blob/main/docs/setup-gradle.md'
|
const DOCS = 'https://github.com/gradle/actions/blob/main/docs/setup-gradle.md'
|
||||||
const DISTRIBUTION = 'https://github.com/gradle/actions/blob/main/DISTRIBUTION.md'
|
const DISTRIBUTION = 'https://github.com/gradle/actions/blob/main/DISTRIBUTION.md'
|
||||||
@@ -28,6 +28,13 @@ const CLEANUP_COPY: Record<CacheCleanupStatus, string> = {
|
|||||||
'disabled-readonly': `[Cache cleanup](${DOCS}#configuring-cache-cleanup) is always disabled when the cache is read-only.`
|
'disabled-readonly': `[Cache cleanup](${DOCS}#configuring-cache-cleanup) is always disabled when the cache is read-only.`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const CONFIG_CACHE_COPY: Record<ConfigurationCacheStatus, string> = {
|
||||||
|
'not-active': `Configuration cache state was not cached — set a [cache-encryption-key](${DOCS}#cache-encryption-key) to enable configuration-cache caching.`,
|
||||||
|
restored: `Configuration cache state was restored from the cache.`,
|
||||||
|
'not-restored': `Configuration cache state was not restored — no cached data was available (e.g. the first run for this cache key).`,
|
||||||
|
'restore-incomplete': `Configuration cache state was not restored — the Gradle User Home was not fully restored.`
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Renders a cache report into the unified Job Summary markdown, with a consistent
|
* Renders a cache report into the unified Job Summary markdown, with a consistent
|
||||||
* skeleton across every variant: a section heading, a status line, an integrated
|
* skeleton across every variant: a section heading, a status line, an integrated
|
||||||
@@ -69,6 +76,10 @@ function renderCleanupLine(cleanup?: CacheCleanupStatus): string | undefined {
|
|||||||
return cleanup ? CLEANUP_COPY[cleanup] : undefined
|
return cleanup ? CLEANUP_COPY[cleanup] : undefined
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function renderConfigCacheLine(configurationCache?: ConfigurationCacheStatus): string | undefined {
|
||||||
|
return configurationCache ? CONFIG_CACHE_COPY[configurationCache] : undefined
|
||||||
|
}
|
||||||
|
|
||||||
function renderProviderNote(providerNote?: ProviderNote): string | undefined {
|
function renderProviderNote(providerNote?: ProviderNote): string | undefined {
|
||||||
if (!providerNote) {
|
if (!providerNote) {
|
||||||
return undefined
|
return undefined
|
||||||
@@ -88,9 +99,10 @@ function renderDetails(report: CacheReport): string {
|
|||||||
: `Entries: ${restored} restored, ${saved} saved - Expand for more details`
|
: `Entries: ${restored} restored, ${saved} saved - Expand for more details`
|
||||||
|
|
||||||
const cleanup = report.status === 'enabled' ? renderCleanupLine(report.cleanup) : undefined
|
const cleanup = report.status === 'enabled' ? renderCleanupLine(report.cleanup) : undefined
|
||||||
|
const configCache = renderConfigCacheLine(report.configurationCache)
|
||||||
const table = renderEntryTable(report.entries)
|
const table = renderEntryTable(report.entries)
|
||||||
const pre = `<pre>\n${renderEntryDetails(report.entries)}</pre>`
|
const pre = `<pre>\n${renderEntryDetails(report.entries)}</pre>`
|
||||||
const body = [STATUS_COPY[report.status], cleanup, table, pre].filter(Boolean).join('\n\n')
|
const body = [STATUS_COPY[report.status], cleanup, configCache, table, pre].filter(Boolean).join('\n\n')
|
||||||
|
|
||||||
return `<details>
|
return `<details>
|
||||||
<summary>${summary}</summary>
|
<summary>${summary}</summary>
|
||||||
|
|||||||
@@ -79,6 +79,39 @@ describe('renderCachingReport', () => {
|
|||||||
expect(md).toContain('<summary>Entries: 1 restored, 0 saved - Expand for more details</summary>')
|
expect(md).toContain('<summary>Entries: 1 restored, 0 saved - Expand for more details</summary>')
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it('renders the configuration-cache status line inside the details', () => {
|
||||||
|
const report: CacheReport = {
|
||||||
|
status: 'enabled',
|
||||||
|
cleanup: 'enabled',
|
||||||
|
configurationCache: 'restored',
|
||||||
|
entries: [entry()]
|
||||||
|
}
|
||||||
|
const md = renderCachingReport(report, ENHANCED)
|
||||||
|
|
||||||
|
const detailsBody = md.slice(md.indexOf('</summary>'))
|
||||||
|
expect(detailsBody).toContain('Configuration cache state was restored from the cache.')
|
||||||
|
})
|
||||||
|
|
||||||
|
it('explains an inactive configuration cache with a link to the encryption key docs', () => {
|
||||||
|
const report: CacheReport = {
|
||||||
|
status: 'enabled',
|
||||||
|
cleanup: 'enabled',
|
||||||
|
configurationCache: 'not-active',
|
||||||
|
entries: [entry()]
|
||||||
|
}
|
||||||
|
const md = renderCachingReport(report, ENHANCED)
|
||||||
|
|
||||||
|
expect(md).toContain('Configuration cache state was not cached')
|
||||||
|
expect(md).toContain('#cache-encryption-key')
|
||||||
|
})
|
||||||
|
|
||||||
|
it('omits the configuration-cache line when the status is absent', () => {
|
||||||
|
const report: CacheReport = {status: 'enabled', cleanup: 'enabled', entries: [entry()]}
|
||||||
|
const md = renderCachingReport(report, ENHANCED)
|
||||||
|
|
||||||
|
expect(md).not.toContain('Configuration cache state')
|
||||||
|
})
|
||||||
|
|
||||||
it('renders a compact disabled report with no note and no details', () => {
|
it('renders a compact disabled report with no note and no details', () => {
|
||||||
const report: CacheReport = {status: 'disabled', entries: []}
|
const report: CacheReport = {status: 'disabled', entries: []}
|
||||||
const md = renderCachingReport(report, undefined)
|
const md = renderCachingReport(report, undefined)
|
||||||
|
|||||||
Reference in New Issue
Block a user