Add and use getFeaturePrefix for dependency caching

This commit is contained in:
Michael B. Gale
2025-11-05 16:33:21 +00:00
parent 0cbd930deb
commit 03b2dc2a3f
5 changed files with 183 additions and 30 deletions

36
lib/analyze-action.js generated
View File

@@ -88183,9 +88183,10 @@ async function getTotalCacheSize(paths, logger, quiet = false) {
function shouldStoreCache(kind) {
return kind === "full" /* Full */ || kind === "store" /* Store */;
}
var cacheKeyHashLength = 16;
function createCacheKeyHash(components) {
const componentsJson = JSON.stringify(components);
return crypto.createHash("sha256").update(componentsJson).digest("hex").substring(0, 16);
return crypto.createHash("sha256").update(componentsJson).digest("hex").substring(0, cacheKeyHashLength);
}
// src/config/db-config.ts
@@ -91204,6 +91205,29 @@ async function cacheKey2(codeql, features, language, patterns) {
const hash2 = await glob.hashFiles(patterns.join("\n"));
return `${await cachePrefix2(codeql, features, language)}${hash2}`;
}
async function getFeaturePrefix(codeql, features, language) {
const enabledFeatures = [];
const addFeatureIfEnabled = async (feature) => {
if (await features.getValue(feature, codeql)) {
enabledFeatures.push(feature);
}
};
if (language === "java" /* java */) {
const minimizeJavaJars = await features.getValue(
"java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */,
codeql
);
if (minimizeJavaJars) {
return "minify-";
}
} else if (language === "csharp" /* csharp */) {
await addFeatureIfEnabled("csharp_new_cache_key" /* CsharpNewCacheKey */);
}
if (enabledFeatures.length > 0) {
return `${createCacheKeyHash(enabledFeatures)}-`;
}
return "";
}
async function cachePrefix2(codeql, features, language) {
const runnerOs = getRequiredEnvParam("RUNNER_OS");
const customPrefix = process.env["CODEQL_ACTION_DEPENDENCY_CACHE_PREFIX" /* DEPENDENCY_CACHING_PREFIX */];
@@ -91211,14 +91235,8 @@ async function cachePrefix2(codeql, features, language) {
if (customPrefix !== void 0 && customPrefix.length > 0) {
prefix = `${prefix}-${customPrefix}`;
}
const minimizeJavaJars = await features.getValue(
"java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */,
codeql
);
if (language === "java" /* java */ && minimizeJavaJars) {
prefix = `minify-${prefix}`;
}
return `${prefix}-${CODEQL_DEPENDENCY_CACHE_VERSION}-${runnerOs}-${language}-`;
const featurePrefix = await getFeaturePrefix(codeql, features, language);
return `${featurePrefix}${prefix}-${CODEQL_DEPENDENCY_CACHE_VERSION}-${runnerOs}-${language}-`;
}
// src/diagnostics.ts

36
lib/init-action.js generated
View File

@@ -85266,9 +85266,10 @@ function getCachingKind(input) {
return "none" /* None */;
}
}
var cacheKeyHashLength = 16;
function createCacheKeyHash(components) {
const componentsJson = JSON.stringify(components);
return crypto.createHash("sha256").update(componentsJson).digest("hex").substring(0, 16);
return crypto.createHash("sha256").update(componentsJson).digest("hex").substring(0, cacheKeyHashLength);
}
function getDependencyCachingEnabled() {
const dependencyCaching = getOptionalInput("dependency-caching") || process.env["CODEQL_ACTION_DEPENDENCY_CACHING" /* DEPENDENCY_CACHING */];
@@ -87379,6 +87380,29 @@ async function cacheKey2(codeql, features, language, patterns) {
const hash = await glob.hashFiles(patterns.join("\n"));
return `${await cachePrefix2(codeql, features, language)}${hash}`;
}
async function getFeaturePrefix(codeql, features, language) {
const enabledFeatures = [];
const addFeatureIfEnabled = async (feature) => {
if (await features.getValue(feature, codeql)) {
enabledFeatures.push(feature);
}
};
if (language === "java" /* java */) {
const minimizeJavaJars = await features.getValue(
"java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */,
codeql
);
if (minimizeJavaJars) {
return "minify-";
}
} else if (language === "csharp" /* csharp */) {
await addFeatureIfEnabled("csharp_new_cache_key" /* CsharpNewCacheKey */);
}
if (enabledFeatures.length > 0) {
return `${createCacheKeyHash(enabledFeatures)}-`;
}
return "";
}
async function cachePrefix2(codeql, features, language) {
const runnerOs = getRequiredEnvParam("RUNNER_OS");
const customPrefix = process.env["CODEQL_ACTION_DEPENDENCY_CACHE_PREFIX" /* DEPENDENCY_CACHING_PREFIX */];
@@ -87386,14 +87410,8 @@ async function cachePrefix2(codeql, features, language) {
if (customPrefix !== void 0 && customPrefix.length > 0) {
prefix = `${prefix}-${customPrefix}`;
}
const minimizeJavaJars = await features.getValue(
"java_minimize_dependency_jars" /* JavaMinimizeDependencyJars */,
codeql
);
if (language === "java" /* java */ && minimizeJavaJars) {
prefix = `minify-${prefix}`;
}
return `${prefix}-${CODEQL_DEPENDENCY_CACHE_VERSION}-${runnerOs}-${language}-`;
const featurePrefix = await getFeaturePrefix(codeql, features, language);
return `${featurePrefix}${prefix}-${CODEQL_DEPENDENCY_CACHE_VERSION}-${runnerOs}-${language}-`;
}
// src/diagnostics.ts