From 33905401453c01bf1ce3a85e7daaf097076abb90 Mon Sep 17 00:00:00 2001 From: Daz DeBoer Date: Sun, 12 Sep 2021 14:26:38 -0600 Subject: [PATCH] Simplify setting caches to disabled or read-only --- .github/workflows/failure-cases.yml | 2 +- .github/workflows/integration-testing.yml | 12 ++++++------ action.yml | 12 ++++++------ src/cache-utils.ts | 23 ++++------------------- src/caches.ts | 8 ++++---- src/provision.ts | 6 +++--- 6 files changed, 24 insertions(+), 39 deletions(-) diff --git a/.github/workflows/failure-cases.yml b/.github/workflows/failure-cases.yml index a3e0779..fa91cd4 100644 --- a/.github/workflows/failure-cases.yml +++ b/.github/workflows/failure-cases.yml @@ -34,4 +34,4 @@ jobs: with: build-root-directory: __tests__/samples/no-wrapper arguments: help - gradle-cache-enabled: no + cache-disabled: yes diff --git a/.github/workflows/integration-testing.yml b/.github/workflows/integration-testing.yml index dfc2614..90d8951 100644 --- a/.github/workflows/integration-testing.yml +++ b/.github/workflows/integration-testing.yml @@ -51,21 +51,21 @@ jobs: gradle-version: 6.9 build-root-directory: __tests__/samples/no-wrapper arguments: help -DgradleVersionCheck=6.9 - gradle-cache-enabled: read-only + cache-read-only: true - name: Test use Gradle version alias uses: ./ with: gradle-version: release-candidate build-root-directory: __tests__/samples/no-wrapper arguments: help -DgradleVersionCheck=7.2 - gradle-cache-enabled: read-only + cache-read-only: true - name: Test use defined Gradle executable uses: ./ with: gradle-executable: __tests__/samples/basic/gradlew${{ matrix.script-suffix }} build-root-directory: __tests__/samples/no-wrapper arguments: help -DgradleVersionCheck=7.1.1 - gradle-cache-enabled: read-only + cache-read-only: true # Test that the gradle-user-home cache will cache dependencies, by running build with --offline dependencies-cache: @@ -82,7 +82,7 @@ jobs: with: build-root-directory: __tests__/samples/basic arguments: test --offline - gradle-cache-enabled: read-only + cache-read-only: true # Test that the gradle-user-home cache will cache and restore local build-cache build-cache: @@ -99,7 +99,7 @@ jobs: with: build-root-directory: __tests__/samples/basic arguments: test -DverifyCachedBuild=true - gradle-cache-enabled: read-only + cache-read-only: true # Test that the project-dot-gradle cache will cache and restore configuration-cache configuration-cache: @@ -118,4 +118,4 @@ jobs: with: build-root-directory: __tests__/samples/basic arguments: test --configuration-cache - gradle-cache-enabled: read-only + cache-read-only: true diff --git a/action.yml b/action.yml index 081f151..8e6c5c3 100644 --- a/action.yml +++ b/action.yml @@ -16,14 +16,14 @@ inputs: arguments: description: Gradle command line arguments, see gradle --help required: false - distributions-cache-enabled: - description: Whether caching downloaded Gradle distributions is enabled or not. Valid values are 'true' (default), 'false', and 'read-only'. + cache-disabled: + description: When 'true', all caching is disabled. No entries will be written to or read from the cache. required: false - default: true - gradle-cache-enabled: - description: Whether caching of Gradle User Home and project .gradle directory is enabled. Valid values are 'true' (default), 'false', and 'read-only'. + default: false + cache-read-only: + description: When 'true', existing entries will be read from the cache but no entries will be written required: false - default: true + default: false workflow-job-context: description: Used to uniquely identify the current job invocation. Defaults to the matrix values for this job; this should not be overridden by users. required: false diff --git a/src/cache-utils.ts b/src/cache-utils.ts index c5346c1..3ba2ae2 100644 --- a/src/cache-utils.ts +++ b/src/cache-utils.ts @@ -3,27 +3,12 @@ import * as cache from '@actions/cache' import * as github from '@actions/github' import * as crypto from 'crypto' -export function isCacheReadEnabled(cacheName: string): boolean { - const configValue = getCacheEnabledValue(cacheName) - return configValue === 'true' || configValue === 'read-only' +export function isCacheDisabled(): boolean { + return core.getBooleanInput('cache-disabled') } -export function isCacheSaveEnabled(cacheName: string): boolean { - const configValue = getCacheEnabledValue(cacheName) - return configValue === 'true' -} - -function getCacheEnabledValue(cacheName: string): string { - const configValue = core - .getInput(`${cacheName}-cache-enabled`) - .toLowerCase() - - if (['true', 'false', 'read-only'].includes(configValue)) { - return configValue - } - throw new Error( - `Invalid cache-enabled parameter '${configValue}'. Valid values are ['true', 'false', 'read-only']` - ) +export function isCacheReadOnly(): boolean { + return core.getBooleanInput('cache-read-only') } export function isCacheDebuggingEnabled(): boolean { diff --git a/src/caches.ts b/src/caches.ts index 562bc55..39fe7e4 100644 --- a/src/caches.ts +++ b/src/caches.ts @@ -1,12 +1,12 @@ import {GradleUserHomeCache} from './cache-gradle-user-home' import {ProjectDotGradleCache} from './cache-project-dot-gradle' import * as core from '@actions/core' -import {isCacheReadEnabled, isCacheSaveEnabled} from './cache-utils' +import {isCacheDisabled, isCacheReadOnly} from './cache-utils' const BUILD_ROOT_DIR = 'BUILD_ROOT_DIR' export async function restore(buildRootDirectory: string): Promise { - if (!isCacheReadEnabled('gradle')) { + if (isCacheDisabled()) { core.debug('Cache read disabled') return } @@ -21,8 +21,8 @@ export async function restore(buildRootDirectory: string): Promise { } export async function save(): Promise { - if (!isCacheSaveEnabled('gradle')) { - core.debug('Cache save disabled') + if (isCacheReadOnly()) { + core.debug('Cache is read-only: not saving cache entry') return } diff --git a/src/provision.ts b/src/provision.ts index d487acf..6cbbd9c 100644 --- a/src/provision.ts +++ b/src/provision.ts @@ -7,7 +7,7 @@ import * as cache from '@actions/cache' import * as toolCache from '@actions/tool-cache' import * as gradlew from './gradlew' -import {isCacheReadEnabled, isCacheSaveEnabled} from './cache-utils' +import {isCacheDisabled, isCacheReadOnly} from './cache-utils' const gradleVersionsBaseUrl = 'https://services.gradle.org/versions' @@ -120,7 +120,7 @@ async function downloadAndCacheGradleDistribution( `gradle-installations/downloads/gradle-${versionInfo.version}-bin.zip` ) - if (!isCacheReadEnabled('distributions')) { + if (isCacheDisabled()) { await downloadGradleDistribution(versionInfo, downloadPath) return downloadPath } @@ -138,7 +138,7 @@ async function downloadAndCacheGradleDistribution( ) await downloadGradleDistribution(versionInfo, downloadPath) - if (isCacheSaveEnabled('distributions')) { + if (!isCacheReadOnly()) { try { await cache.saveCache([downloadPath], cacheKey) } catch (error) {