mirror of
https://github.com/gradle/actions.git
synced 2026-06-13 15:10:38 +00:00
Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 72714db355 | |||
| 54d3208a40 | |||
| e993c93d71 |
@@ -26,7 +26,7 @@ jobs:
|
|||||||
cache-dependency-path: sources/package-lock.json
|
cache-dependency-path: sources/package-lock.json
|
||||||
- name: Setup Gradle
|
- name: Setup Gradle
|
||||||
# Use a released version to avoid breakages
|
# Use a released version to avoid breakages
|
||||||
uses: gradle/actions/setup-gradle@50e97c2cd7a37755bbfafc9c5b7cafaece252f6e # v6.1.0
|
uses: gradle/actions/setup-gradle@3f131e8634966bd73d06cc69884922b02e6faf92 # v6.2.0
|
||||||
env:
|
env:
|
||||||
ALLOWED_GRADLE_WRAPPER_CHECKSUMS: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 # Invalid wrapper jar used for testing
|
ALLOWED_GRADLE_WRAPPER_CHECKSUMS: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 # Invalid wrapper jar used for testing
|
||||||
with:
|
with:
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ jobs:
|
|||||||
- name: Setup Gradle
|
- name: Setup Gradle
|
||||||
if: steps.changes.outputs.any_changed == 'true' || github.event_name != 'pull_request'
|
if: steps.changes.outputs.any_changed == 'true' || github.event_name != 'pull_request'
|
||||||
# Use a released version to avoid breakages
|
# Use a released version to avoid breakages
|
||||||
uses: gradle/actions/setup-gradle@50e97c2cd7a37755bbfafc9c5b7cafaece252f6e # v6.1.0
|
uses: gradle/actions/setup-gradle@3f131e8634966bd73d06cc69884922b02e6faf92 # v6.2.0
|
||||||
env:
|
env:
|
||||||
ALLOWED_GRADLE_WRAPPER_CHECKSUMS: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 # Invalid wrapper jar used for testing
|
ALLOWED_GRADLE_WRAPPER_CHECKSUMS: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 # Invalid wrapper jar used for testing
|
||||||
- name: Run integration tests
|
- name: Run integration tests
|
||||||
|
|||||||
@@ -12,6 +12,6 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||||
- uses: gradle/actions/wrapper-validation@50e97c2cd7a37755bbfafc9c5b7cafaece252f6e # v6.1.0
|
- uses: gradle/actions/wrapper-validation@3f131e8634966bd73d06cc69884922b02e6faf92 # v6.2.0
|
||||||
with:
|
with:
|
||||||
allow-checksums: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
|
allow-checksums: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
|
||||||
|
|||||||
+54
-54
File diff suppressed because one or more lines are too long
+3
-3
File diff suppressed because one or more lines are too long
+92
-92
File diff suppressed because one or more lines are too long
+3
-3
File diff suppressed because one or more lines are too long
Vendored
+54
-54
File diff suppressed because one or more lines are too long
Vendored
+3
-3
File diff suppressed because one or more lines are too long
Vendored
+101
-101
File diff suppressed because one or more lines are too long
Vendored
+3
-3
File diff suppressed because one or more lines are too long
@@ -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