From ce4c3a6c5e64220081ef4d05b6a4547fb0d4987b Mon Sep 17 00:00:00 2001 From: daz Date: Thu, 1 Aug 2024 08:53:37 -0600 Subject: [PATCH] Move wrapper-validation into common setup code --- .../src/actions/dependency-submission/main.ts | 5 +-- sources/src/actions/setup-gradle/main.ts | 4 +-- sources/src/setup-gradle.ts | 31 +++++-------------- .../wrapper-validation/wrapper-validator.ts | 23 ++++++++++++++ 4 files changed, 35 insertions(+), 28 deletions(-) create mode 100644 sources/src/wrapper-validation/wrapper-validator.ts diff --git a/sources/src/actions/dependency-submission/main.ts b/sources/src/actions/dependency-submission/main.ts index 72221847..8ff3fb1b 100644 --- a/sources/src/actions/dependency-submission/main.ts +++ b/sources/src/actions/dependency-submission/main.ts @@ -10,7 +10,8 @@ import { DependencyGraphConfig, DependencyGraphOption, GradleExecutionConfig, - setActionId + setActionId, + WrapperValidationConfig } from '../../configuration' import {saveDeprecationState} from '../../deprecation-collector' import {handleMainActionError} from '../../errors' @@ -23,7 +24,7 @@ export async function run(): Promise { setActionId('gradle/actions/dependency-submission') // Configure Gradle environment (Gradle User Home) - await setupGradle.setup(new CacheConfig(), new BuildScanConfig()) + await setupGradle.setup(new CacheConfig(), new BuildScanConfig(), new WrapperValidationConfig()) // Capture the enabled state of dependency-graph const originallyEnabled = process.env['GITHUB_DEPENDENCY_GRAPH_ENABLED'] diff --git a/sources/src/actions/setup-gradle/main.ts b/sources/src/actions/setup-gradle/main.ts index b7a20f04..65b05b82 100644 --- a/sources/src/actions/setup-gradle/main.ts +++ b/sources/src/actions/setup-gradle/main.ts @@ -26,10 +26,8 @@ export async function run(): Promise { setActionId('gradle/actions/setup-gradle') - await setupGradle.validateWrappers(new WrapperValidationConfig()) - // Configure Gradle environment (Gradle User Home) - await setupGradle.setup(new CacheConfig(), new BuildScanConfig()) + await setupGradle.setup(new CacheConfig(), new BuildScanConfig(), new WrapperValidationConfig()) // Configure the dependency graph submission await dependencyGraph.setup(new DependencyGraphConfig()) diff --git a/sources/src/setup-gradle.ts b/sources/src/setup-gradle.ts index 792151ee..023d6442 100644 --- a/sources/src/setup-gradle.ts +++ b/sources/src/setup-gradle.ts @@ -17,15 +17,18 @@ import { WrapperValidationConfig, getWorkspaceDirectory } from './configuration' -import {findInvalidWrapperJars} from './wrapper-validation/validate' -import {JobFailure} from './errors' +import * as wrapperValidator from './wrapper-validation/wrapper-validator' const GRADLE_SETUP_VAR = 'GRADLE_BUILD_ACTION_SETUP_COMPLETED' const USER_HOME = 'USER_HOME' const GRADLE_USER_HOME = 'GRADLE_USER_HOME' const CACHE_LISTENER = 'CACHE_LISTENER' -export async function setup(cacheConfig: CacheConfig, buildScanConfig: BuildScanConfig): Promise { +export async function setup( + cacheConfig: CacheConfig, + buildScanConfig: BuildScanConfig, + wrapperValidationConfig: WrapperValidationConfig +): Promise { const userHome = await determineUserHome() const gradleUserHome = await determineGradleUserHome() @@ -43,6 +46,8 @@ export async function setup(cacheConfig: CacheConfig, buildScanConfig: BuildScan core.saveState(USER_HOME, userHome) core.saveState(GRADLE_USER_HOME, gradleUserHome) + await wrapperValidator.validateWrappers(wrapperValidationConfig, getWorkspaceDirectory()) + const cacheListener = new CacheListener() await caches.restore(userHome, gradleUserHome, cacheListener, cacheConfig) @@ -122,23 +127,3 @@ async function determineUserHome(): Promise { core.debug(`Determined user.home from java -version output: '${userHome}'`) return userHome } - -export async function validateWrappers( - config: WrapperValidationConfig, - rootDir = getWorkspaceDirectory() -): Promise { - if (!config.doValidateWrappers()) { - return // Wrapper validation is disabled - } - - const allowedChecksums = process.env['ALLOWED_GRADLE_WRAPPER_CHECKSUMS']?.split(',') || [] - const result = await findInvalidWrapperJars(rootDir, 0, config.allowSnapshotWrappers(), allowedChecksums) - if (result.isValid()) { - core.info(result.toDisplayString()) - } else { - core.info(result.toDisplayString()) - throw new JobFailure( - `Gradle Wrapper Validation Failed!\n See https://github.com/gradle/actions/blob/main/docs/wrapper-validation.md#reporting-failures\n${result.toDisplayString()}` - ) - } -} diff --git a/sources/src/wrapper-validation/wrapper-validator.ts b/sources/src/wrapper-validation/wrapper-validator.ts new file mode 100644 index 00000000..440f7a19 --- /dev/null +++ b/sources/src/wrapper-validation/wrapper-validator.ts @@ -0,0 +1,23 @@ +import * as core from '@actions/core' +import {WrapperValidationConfig} from '../configuration' +import {findInvalidWrapperJars} from './validate' +import {JobFailure} from '../errors' + +export async function validateWrappers(config: WrapperValidationConfig, workspaceRoot: string): Promise { + if (!config.doValidateWrappers()) { + return // Wrapper validation is disabled + } + + const allowedChecksums = process.env['ALLOWED_GRADLE_WRAPPER_CHECKSUMS']?.split(',') || [] + const result = await findInvalidWrapperJars(workspaceRoot, 0, config.allowSnapshotWrappers(), allowedChecksums) + if (result.isValid()) { + await core.group('All Gradle Wrapper jars are valid', async () => { + core.info(result.toDisplayString()) + }) + } else { + core.info(result.toDisplayString()) + throw new JobFailure( + `Gradle Wrapper Validation Failed!\n See https://github.com/gradle/actions/blob/main/docs/wrapper-validation.md#reporting-failures\n${result.toDisplayString()}` + ) + } +}