From f0ea9e357e1b2137920af707f0b58192f835bec2 Mon Sep 17 00:00:00 2001 From: Esben Sparre Andreasen Date: Thu, 10 Dec 2020 11:08:25 +0100 Subject: [PATCH] move all hash computations to hash-inputs --- {hash-database => hash-inputs}/action.yml | 10 +- lib/hash-inputs-action.js | 106 +++++++++++++++++ lib/hash-inputs-action.js.map | 1 + lib/init-action.js | 11 -- lib/init-action.js.map | 2 +- src/hash-database-action.ts | 90 --------------- src/hash-inputs-action.ts | 134 ++++++++++++++++++++++ src/init-action.ts | 13 +-- 8 files changed, 248 insertions(+), 119 deletions(-) rename {hash-database => hash-inputs}/action.yml (56%) create mode 100644 lib/hash-inputs-action.js create mode 100644 lib/hash-inputs-action.js.map delete mode 100644 src/hash-database-action.ts create mode 100644 src/hash-inputs-action.ts diff --git a/hash-database/action.yml b/hash-inputs/action.yml similarity index 56% rename from hash-database/action.yml rename to hash-inputs/action.yml index be7c9e706..c6928e778 100644 --- a/hash-database/action.yml +++ b/hash-inputs/action.yml @@ -1,18 +1,18 @@ -name: 'CodeQL: Hash Database' -description: 'Hashes the built database, using a stable hash' +name: 'CodeQL: Hash query inputs' +description: 'Hashes the query inputs, such as the database, queries and the cli itself' author: 'GitHub' inputs: token: default: ${{ github.token }} matrix: default: ${{ toJson(matrix) }} - mode: + database-mode: description: The hashing strategy (currently supports ".rel") required: false default: ".rel" outputs: - hash: - description: the stable hash of the database + hashes: + description: A per-language JSON object with hashes for the inputs runs: using: 'node12' main: '../lib/hash-database-action.js' diff --git a/lib/hash-inputs-action.js b/lib/hash-inputs-action.js new file mode 100644 index 000000000..8ecc6859d --- /dev/null +++ b/lib/hash-inputs-action.js @@ -0,0 +1,106 @@ +"use strict"; +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; + result["default"] = mod; + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const core = __importStar(require("@actions/core")); +const fs = __importStar(require("fs")); +const path = __importStar(require("path")); +const crypto = __importStar(require("crypto")); +const actionsUtil = __importStar(require("./actions-util")); +const config_utils = __importStar(require("./config-utils")); +const logging_1 = require("./logging"); +const util = __importStar(require("./util")); +const languages_1 = require("./languages"); +async function getCodeQLHash(_config) { + return "DUMMY_CODEQL_HASH"; +} +async function getQueriesHash(_language, config, logger) { + // Compute hash + const globHash = require("glob-hash"); + const finalHash = await globHash({ + include: [ + // @esbena: isn't this a bit too aggressive? Could we select qlpack directories instead? + `${config.tempDir}/**/.cache/data/**`, + `${config.toolCacheDir}/**/.cache/data/**`, + ], + files: false, + }); + logger.info(`queries-hash: ${finalHash}`); + return finalHash; +} +async function getDatabaseHash(language, config, logger) { + const dbPath = util.getCodeQLDatabasePath(config.tempDir, language); + let relDir = path.join(dbPath, `db-${language}`, "default"); + let combined_all = crypto.createHash("sha256"); + let combined_noExtractionTime = crypto.createHash("sha256"); + let files = {}; + let relFiles = fs + .readdirSync(relDir) + .filter((n) => n.endsWith(".rel")) + .map((n) => path.join(relDir, n)); + if (relFiles.length === 0) { + throw new Error(`No '.rel' files found in ${relDir}. Has the 'create-database' action been called?`); + } + for (const relFile of relFiles) { + let content = fs.readFileSync(relFile); // XXX this ought to be chunked for large tables! + let solo = crypto.createHash("sha256"); + solo.update(content); + files[path.relative(dbPath, relFile)] = solo.digest("hex"); + if (language === languages_1.Language.javascript && + path.basename(relFile) !== "extraction_time.rel") { + combined_noExtractionTime.update(content); + } + combined_all.update(content); + } + let stableHash = combined_noExtractionTime.digest("hex"); + logger.info("database-hash:"); + logger.info(JSON.stringify({ + language, + combined: { + all: combined_all.digest("hex"), + noExtractionTime: stableHash, + files, + }, + }, null, 2)); + return stableHash; +} +async function run() { + const logger = logging_1.getActionsLogger(); + try { + actionsUtil.prepareLocalRunEnvironment(); + const config = await config_utils.getConfig(actionsUtil.getRequiredEnvParam("RUNNER_TEMP"), logger); + if (config === undefined) { + throw new Error("Config file could not be found at expected location. Has the 'init' action been called?"); + } + let hashesByLanguage = {}; + for (const language of config.languages) { + hashesByLanguage /* XXX circumvent aggressive typescript */[language] = { + queries: await getQueriesHash(language, config, logger), + database: await getDatabaseHash(language, config, logger), + codeql: getCodeQLHash(config), + }; + core.setOutput("hashes", JSON.stringify(hashesByLanguage)); + } + } + catch (error) { + core.setFailed(`We were unable to hash the database. ${error.message}`); + console.log(error); + return; + } +} +async function runWrapper() { + try { + await run(); + } + catch (error) { + core.setFailed(`hash-database action failed. ${error}`); + console.log(error); + } +} +void runWrapper(); +//# sourceMappingURL=hash-inputs-action.js.map \ No newline at end of file diff --git a/lib/hash-inputs-action.js.map b/lib/hash-inputs-action.js.map new file mode 100644 index 000000000..3a0a5ee5d --- /dev/null +++ b/lib/hash-inputs-action.js.map @@ -0,0 +1 @@ +{"version":3,"file":"hash-inputs-action.js","sourceRoot":"","sources":["../src/hash-inputs-action.ts"],"names":[],"mappings":";;;;;;;;;AAAA,oDAAsC;AAEtC,uCAAyB;AACzB,2CAA6B;AAC7B,+CAAiC;AAEjC,4DAA8C;AAC9C,6DAA+C;AAC/C,uCAAqD;AACrD,6CAA+B;AAC/B,2CAAuC;AAEvC,KAAK,UAAU,aAAa,CAAC,OAA4B;IACvD,OAAO,mBAAmB,CAAC;AAC7B,CAAC;AAED,KAAK,UAAU,cAAc,CAC3B,SAAmB,EACnB,MAA2B,EAC3B,MAAc;IAEd,eAAe;IACf,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACtC,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC;QAC/B,OAAO,EAAE;YACP,wFAAwF;YACxF,GAAG,MAAM,CAAC,OAAO,oBAAoB;YACrC,GAAG,MAAM,CAAC,YAAY,oBAAoB;SAC3C;QACD,KAAK,EAAE,KAAK;KACb,CAAC,CAAC;IACH,MAAM,CAAC,IAAI,CAAC,iBAAiB,SAAS,EAAE,CAAC,CAAC;IAC1C,OAAO,SAAS,CAAC;AACnB,CAAC;AACD,KAAK,UAAU,eAAe,CAC5B,QAAkB,EAClB,MAA2B,EAC3B,MAAc;IAEd,MAAM,MAAM,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACpE,IAAI,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,QAAQ,EAAE,EAAE,SAAS,CAAC,CAAC;IAC5D,IAAI,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC/C,IAAI,yBAAyB,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC5D,IAAI,KAAK,GAEL,EAAE,CAAC;IACP,IAAI,QAAQ,GAAG,EAAE;SACd,WAAW,CAAC,MAAM,CAAC;SACnB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;SACjC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;IACpC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;QACzB,MAAM,IAAI,KAAK,CACb,4BAA4B,MAAM,iDAAiD,CACpF,CAAC;KACH;IACD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;QAC9B,IAAI,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,iDAAiD;QACzF,IAAI,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACrB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC3D,IACE,QAAQ,KAAK,oBAAQ,CAAC,UAAU;YAChC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,qBAAqB,EAChD;YACA,yBAAyB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;SAC3C;QACD,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;KAC9B;IACD,IAAI,UAAU,GAAG,yBAAyB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACzD,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC9B,MAAM,CAAC,IAAI,CACT,IAAI,CAAC,SAAS,CACZ;QACE,QAAQ;QACR,QAAQ,EAAE;YACR,GAAG,EAAE,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC;YAC/B,gBAAgB,EAAE,UAAU;YAC5B,KAAK;SACN;KACF,EACD,IAAI,EACJ,CAAC,CACF,CACF,CAAC;IACF,OAAO,UAAU,CAAC;AACpB,CAAC;AACD,KAAK,UAAU,GAAG;IAChB,MAAM,MAAM,GAAG,0BAAgB,EAAE,CAAC;IAClC,IAAI;QACF,WAAW,CAAC,0BAA0B,EAAE,CAAC;QAEzC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,SAAS,CACzC,WAAW,CAAC,mBAAmB,CAAC,aAAa,CAAC,EAC9C,MAAM,CACP,CAAC;QACF,IAAI,MAAM,KAAK,SAAS,EAAE;YACxB,MAAM,IAAI,KAAK,CACb,yFAAyF,CAC1F,CAAC;SACH;QACD,IAAI,gBAAgB,GAMhB,EAAE,CAAC;QACP,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,SAAS,EAAE;YACtC,gBAAwB,CAAC,0CAA0C,CAClE,QAAQ,CACT,GAAG;gBACF,OAAO,EAAE,MAAM,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;gBACvD,QAAQ,EAAE,MAAM,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;gBACzD,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC;aAC9B,CAAC;YACF,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC;SAC5D;KACF;IAAC,OAAO,KAAK,EAAE;QACd,IAAI,CAAC,SAAS,CAAC,yCAAyC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACzE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnB,OAAO;KACR;AACH,CAAC;AAED,KAAK,UAAU,UAAU;IACvB,IAAI;QACF,MAAM,GAAG,EAAE,CAAC;KACb;IAAC,OAAO,KAAK,EAAE;QACd,IAAI,CAAC,SAAS,CAAC,gCAAgC,KAAK,EAAE,CAAC,CAAC;QACxD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KACpB;AACH,CAAC;AAED,KAAK,UAAU,EAAE,CAAC"} \ No newline at end of file diff --git a/lib/init-action.js b/lib/init-action.js index 1e7dbea9f..97f864678 100644 --- a/lib/init-action.js +++ b/lib/init-action.js @@ -163,17 +163,6 @@ async function compileQueries(codeql, config, logger) { } } } - // Compute hash - const globHash = require("glob-hash"); - const finalHash = await globHash({ - include: [ - `${config.tempDir}/**/.cache/data/**`, - `${config.toolCacheDir}/**/.cache/data/**`, - ], - files: false, - }); - logger.info(`FinalHash: ${finalHash}`); - return finalHash; } void runWrapper(); //# sourceMappingURL=init-action.js.map \ No newline at end of file diff --git a/lib/init-action.js.map b/lib/init-action.js.map index bab42d2eb..1d9ea9a66 100644 --- a/lib/init-action.js.map +++ b/lib/init-action.js.map @@ -1 +1 @@ -{"version":3,"file":"init-action.js","sourceRoot":"","sources":["../src/init-action.ts"],"names":[],"mappings":";;;;;;;;;AAAA,uCAAyB;AAEzB,oDAAsC;AAEtC,4DAA8C;AAG9C,iCAMgB;AAChB,2CAAuC;AACvC,uCAAqD;AACrD,6CAAkD;AAClD,iCAAqE;AAsBrE,KAAK,UAAU,uBAAuB,CACpC,SAAe,EACf,MAA0B,EAC1B,YAAoB;;IAEpB,MAAM,gBAAgB,GAAG,MAAM,WAAW,CAAC,sBAAsB,CAC/D,MAAM,EACN,SAAS,EACT,SAAS,CACV,CAAC;IAEF,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7C,MAAM,iBAAiB,GAAG,WAAW,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;IACpE,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/D,MAAM,WAAW,GAAG,CAAC,MAAM,CAAC,iBAAiB,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CACvE,GAAG,CACJ,CAAC;IACF,MAAM,qBAAqB,GAAG,MAAM,CAAC,iBAAiB,CACpD,yBAAyB,CAC1B;QACC,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,YAAY,SAAG,WAAW,CAAC,gBAAgB,CAAC,SAAS,CAAC,0CAAE,IAAI,EAAE,CAAC;IACnE,IAAI,YAAY,KAAK,SAAS,IAAI,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;QAC9D,OAAO,CAAC,IAAI,CACV,GAAG,CAAC,MAAM,CAAC,iBAAiB,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAC/D,CAAC;KACH;IACD,IAAI,YAAY,KAAK,SAAS,EAAE;QAC9B,YAAY,GAAG,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC;YACzC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;YACxB,CAAC,CAAC,YAAY,CAAC;QACjB,OAAO,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;KAC1C;IAED,MAAM,YAAY,GAA4B;QAC5C,GAAG,gBAAgB;QACnB,SAAS;QACT,kBAAkB,EAAE,iBAAiB,IAAI,EAAE;QAC3C,KAAK;QACL,YAAY,EAAE,WAAW;QACzB,uBAAuB,EAAE,qBAAqB;QAC9C,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;QAC1B,WAAW,EAAE,WAAW,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,EAAE;QACxD,sBAAsB,EAAE,YAAY;KACrC,CAAC;IAEF,MAAM,WAAW,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;AACnD,CAAC;AAED,KAAK,UAAU,GAAG;IAChB,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;IAC7B,MAAM,MAAM,GAAG,0BAAgB,EAAE,CAAC;IAClC,IAAI,MAA0B,CAAC;IAC/B,IAAI,MAAc,CAAC;IACnB,IAAI,YAAoB,CAAC;IAEzB,MAAM,UAAU,GAAG;QACjB,IAAI,EAAE,WAAW,CAAC,gBAAgB,CAAC,OAAO,CAAC;QAC3C,GAAG,EAAE,WAAW,CAAC,mBAAmB,CAAC,mBAAmB,CAAC;KAC1D,CAAC;IAEF,MAAM,aAAa,GAAG,MAAM,uBAAgB,CAAC,UAAU,CAAC,CAAC;IACzD,IAAI,aAAa,KAAK,SAAS,EAAE;QAC/B,gCAAyB,CAAC,aAAa,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;KAC7D;IAED,IAAI;QACF,WAAW,CAAC,0BAA0B,EAAE,CAAC;QAEzC,MAAM,cAAc,GAAG,MAAM,WAAW,CAAC,iBAAiB,EAAE,CAAC;QAE7D,sDAAsD;QACtD,oEAAoE;QACpE,QAAQ;QACR,MAAM,kBAAkB,GAAG,cAAc,CAAC,MAAM,CAC9C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAC/B,CAAC;QAEF,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE;YACjC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,CAAC,CAAC;SACpE;QAED,IACE,CAAC,CAAC,MAAM,WAAW,CAAC,gBAAgB,CAClC,MAAM,WAAW,CAAC,sBAAsB,CACtC,MAAM,EACN,UAAU,EACV,SAAS,EACT,WAAW,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAChD,CACF,CAAC,EACF;YACA,OAAO;SACR;QAED,MAAM,gBAAgB,GAAG,MAAM,iBAAU,CACvC,WAAW,CAAC,gBAAgB,CAAC,OAAO,CAAC,EACrC,UAAU,EACV,WAAW,CAAC,mBAAmB,CAAC,aAAa,CAAC,EAC9C,WAAW,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,EACpD,SAAS,EACT,MAAM,CACP,CAAC;QACF,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC;QACjC,YAAY,GAAG,gBAAgB,CAAC,YAAY,CAAC;QAE7C,MAAM,GAAG,MAAM,iBAAU,CACvB,WAAW,CAAC,gBAAgB,CAAC,WAAW,CAAC,EACzC,WAAW,CAAC,gBAAgB,CAAC,SAAS,CAAC,EACvC,WAAW,CAAC,gBAAgB,CAAC,aAAa,CAAC,EAC3C,+BAAkB,CAAC,WAAW,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,CAAC,EACxE,WAAW,CAAC,mBAAmB,CAAC,aAAa,CAAC,EAC9C,WAAW,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,EACpD,MAAM,EACN,WAAW,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,EACnD,aAAa,EACb,UAAU,EACV,MAAM,CACP,CAAC;QAEF,uDAAuD;QACvD,uEAAuE;QACvE,MAAM,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAE7C,IACE,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,oBAAQ,CAAC,MAAM,CAAC;YAC1C,WAAW,CAAC,gBAAgB,CAAC,2BAA2B,CAAC,KAAK,MAAM,EACpE;YACA,IAAI;gBACF,MAAM,wBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;aACzC;YAAC,OAAO,GAAG,EAAE;gBACZ,MAAM,CAAC,OAAO,CACZ,GAAG,GAAG,CAAC,OAAO,2FAA2F,CAC1G,CAAC;aACH;SACF;KACF;IAAC,OAAO,CAAC,EAAE;QACV,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACf,MAAM,WAAW,CAAC,gBAAgB,CAChC,MAAM,WAAW,CAAC,sBAAsB,CACtC,MAAM,EACN,SAAS,EACT,SAAS,EACT,CAAC,CAAC,OAAO,CACV,CACF,CAAC;QACF,OAAO;KACR;IAED,IAAI;QACF,mBAAmB;QACnB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvC,IAAI,OAAO,EAAE;YACX,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACxC,IAAI,CAAC,OAAO,CACV,6GAA6G,CAC9G,CAAC;SACH;QAED,mGAAmG;QACnG,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,MAAM,CAAC;QACtD,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;QAE7C,MAAM,YAAY,GAAG,MAAM,cAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACnD,IAAI,YAAY,KAAK,SAAS,EAAE;YAC9B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE;gBAC3D,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;aACjC;YAED,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE;gBAChC,MAAM,0BAAmB,CACvB,mBAAmB,EACnB,SAAS,EACT,MAAM,EACN,MAAM,EACN,YAAY,CACb,CAAC;aACH;SACF;QAED,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;KACjD;IAAC,OAAO,KAAK,EAAE;QACd,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnB,MAAM,WAAW,CAAC,gBAAgB,CAChC,MAAM,WAAW,CAAC,sBAAsB,CACtC,MAAM,EACN,SAAS,EACT,SAAS,EACT,KAAK,CAAC,OAAO,EACb,KAAK,CAAC,KAAK,CACZ,CACF,CAAC;QACF,OAAO;KACR;IACD,MAAM,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;AACjE,CAAC;AAED,KAAK,UAAU,UAAU;IACvB,IAAI;QACF,MAAM,GAAG,EAAE,CAAC;KACb;IAAC,OAAO,KAAK,EAAE;QACd,IAAI,CAAC,SAAS,CAAC,uBAAuB,KAAK,EAAE,CAAC,CAAC;QAC/C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KACpB;AACH,CAAC;AAED,KAAK,UAAU,cAAc,CAC3B,MAAc,EACd,MAA0B,EAC1B,MAAc;IAEd,4CAA4C;IAC5C,8EAA8E;IAC9E,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,SAAS,EAAE;QACvC,MAAM,CAAC,UAAU,CAAC,aAAa,QAAQ,EAAE,CAAC,CAAC;QAE3C,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACzC,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;YAC/D,MAAM,IAAI,KAAK,CACb,qBAAqB,QAAQ,gDAAgD,CAC9E,CAAC;SACH;QAED,KAAK,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE;YAC7B,iEAAiE;YACjE,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC5B,uEAAuE;gBACvE,2EAA2E;gBAC3E,MAAM,cAAc,GAAG,GAAG,QAAQ,YAAY,IAAI,MAAM,CAAC;gBACzD,MAAM,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;qBACrC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC;qBACnC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACd,EAAE,CAAC,aAAa,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;gBACrD,MAAM,CAAC,KAAK,CACV,wBAAwB,QAAQ,QAAQ,kBAAkB,EAAE,CAC7D,CAAC;gBAEF,MAAM,MAAM,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;gBAE1C,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;gBACjC,MAAM,CAAC,QAAQ,EAAE,CAAC;aACnB;SACF;KACF;IACD,eAAe;IACf,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACtC,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC;QAC/B,OAAO,EAAE;YACP,GAAG,MAAM,CAAC,OAAO,oBAAoB;YACrC,GAAG,MAAM,CAAC,YAAY,oBAAoB;SAC3C;QACD,KAAK,EAAE,KAAK;KACb,CAAC,CAAC;IACH,MAAM,CAAC,IAAI,CAAC,cAAc,SAAS,EAAE,CAAC,CAAC;IACvC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,KAAK,UAAU,EAAE,CAAC"} \ No newline at end of file +{"version":3,"file":"init-action.js","sourceRoot":"","sources":["../src/init-action.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/hash-database-action.ts b/src/hash-database-action.ts deleted file mode 100644 index 5b0ea6e07..000000000 --- a/src/hash-database-action.ts +++ /dev/null @@ -1,90 +0,0 @@ -import * as core from "@actions/core"; - -import * as fs from "fs"; -import * as path from "path"; -import * as crypto from "crypto"; - -import * as actionsUtil from "./actions-util"; -import * as config_utils from "./config-utils"; -import { getActionsLogger } from "./logging"; -import * as util from "./util"; - -async function run() { - const logger = getActionsLogger(); - try { - actionsUtil.prepareLocalRunEnvironment(); - - const config = await config_utils.getConfig( - actionsUtil.getRequiredEnvParam("RUNNER_TEMP"), - logger - ); - if (config === undefined) { - throw new Error( - "Config file could not be found at expected location. Has the 'init' action been called?" - ); - } - - for (const language of config.languages) { - const dbPath = util.getCodeQLDatabasePath(config.tempDir, language); - let relDir = path.join(dbPath, `db-${language}`, "default"); - let combined_all = crypto.createHash("sha256"); - let combined_noExtractionTime = crypto.createHash("sha256"); - let files: { - [name: string]: string; - } = {}; - let relFiles = fs - .readdirSync(relDir) - .filter((n) => n.endsWith(".rel")) - .map((n) => path.join(relDir, n)); - if (relFiles.length === 0) { - throw new Error( - `No '.rel' files found in ${relDir}. Has the 'create-database' action been called?` - ); - } - for (const relFile of relFiles) { - let content = fs.readFileSync(relFile); // XXX this ought to be chunked for large tables! - let solo = crypto.createHash("sha256"); - solo.update(content); - files[path.relative(dbPath, relFile)] = solo.digest("hex"); - if ( - language === "javascript" && - path.basename(relFile) !== "extraction_time.rel" - ) { - combined_noExtractionTime.update(content); - } - combined_all.update(content); - } - let stableHash = combined_noExtractionTime.digest("hex"); - logger.info( - JSON.stringify( - { - language, - combined: { - all: combined_all.digest("hex"), - noExtractionTime: stableHash, - files, - }, - }, - null, - 2 - ) - ); - core.setOutput("hash", stableHash); - } - } catch (error) { - core.setFailed(`We were unable to hash the database. ${error.message}`); - console.log(error); - return; - } -} - -async function runWrapper() { - try { - await run(); - } catch (error) { - core.setFailed(`hash-database action failed. ${error}`); - console.log(error); - } -} - -void runWrapper(); diff --git a/src/hash-inputs-action.ts b/src/hash-inputs-action.ts new file mode 100644 index 000000000..7cbd259bc --- /dev/null +++ b/src/hash-inputs-action.ts @@ -0,0 +1,134 @@ +import * as core from "@actions/core"; + +import * as fs from "fs"; +import * as path from "path"; +import * as crypto from "crypto"; + +import * as actionsUtil from "./actions-util"; +import * as config_utils from "./config-utils"; +import { getActionsLogger, Logger } from "./logging"; +import * as util from "./util"; +import { Language } from "./languages"; + +async function getCodeQLHash(_config: config_utils.Config) { + return "DUMMY_CODEQL_HASH"; +} + +async function getQueriesHash( + _language: Language, + config: config_utils.Config, + logger: Logger +): Promise { + // Compute hash + const globHash = require("glob-hash"); + const finalHash = await globHash({ + include: [ + // @esbena: isn't this a bit too aggressive? Could we select qlpack directories instead? + `${config.tempDir}/**/.cache/data/**`, + `${config.toolCacheDir}/**/.cache/data/**`, + ], + files: false, // MG: List matched files for debugging + }); + logger.info(`queries-hash: ${finalHash}`); + return finalHash; +} +async function getDatabaseHash( + language: Language, + config: config_utils.Config, + logger: Logger +): Promise { + const dbPath = util.getCodeQLDatabasePath(config.tempDir, language); + let relDir = path.join(dbPath, `db-${language}`, "default"); + let combined_all = crypto.createHash("sha256"); + let combined_noExtractionTime = crypto.createHash("sha256"); + let files: { + [name: string]: string; + } = {}; + let relFiles = fs + .readdirSync(relDir) + .filter((n) => n.endsWith(".rel")) + .map((n) => path.join(relDir, n)); + if (relFiles.length === 0) { + throw new Error( + `No '.rel' files found in ${relDir}. Has the 'create-database' action been called?` + ); + } + for (const relFile of relFiles) { + let content = fs.readFileSync(relFile); // XXX this ought to be chunked for large tables! + let solo = crypto.createHash("sha256"); + solo.update(content); + files[path.relative(dbPath, relFile)] = solo.digest("hex"); + if ( + language === Language.javascript && + path.basename(relFile) !== "extraction_time.rel" + ) { + combined_noExtractionTime.update(content); + } + combined_all.update(content); + } + let stableHash = combined_noExtractionTime.digest("hex"); + logger.info("database-hash:"); + logger.info( + JSON.stringify( + { + language, + combined: { + all: combined_all.digest("hex"), + noExtractionTime: stableHash, + files, + }, + }, + null, + 2 + ) + ); + return stableHash; +} +async function run() { + const logger = getActionsLogger(); + try { + actionsUtil.prepareLocalRunEnvironment(); + + const config = await config_utils.getConfig( + actionsUtil.getRequiredEnvParam("RUNNER_TEMP"), + logger + ); + if (config === undefined) { + throw new Error( + "Config file could not be found at expected location. Has the 'init' action been called?" + ); + } + let hashesByLanguage: { + [language in keyof typeof Language]?: { + queries: string; + database: string; + codeql: string; + }; + } = {}; + for (const language of config.languages) { + (hashesByLanguage as any) /* XXX circumvent aggressive typescript */[ + language + ] = { + queries: await getQueriesHash(language, config, logger), + database: await getDatabaseHash(language, config, logger), + codeql: getCodeQLHash(config), + }; + core.setOutput("hashes", JSON.stringify(hashesByLanguage)); + } + } catch (error) { + core.setFailed(`We were unable to hash the database. ${error.message}`); + console.log(error); + return; + } +} + +async function runWrapper() { + try { + await run(); + } catch (error) { + core.setFailed(`hash-database action failed. ${error}`); + console.log(error); + } +} + +void runWrapper(); diff --git a/src/init-action.ts b/src/init-action.ts index 0c4ccc9e9..ec11f1985 100644 --- a/src/init-action.ts +++ b/src/init-action.ts @@ -252,7 +252,7 @@ async function compileQueries( codeql: CodeQL, config: configUtils.Config, logger: Logger -): Promise { +): Promise { // MG: This method is based of `runQueries`. // Creating the query suite file could be refactored out of that method. for (const language of config.languages) { @@ -286,17 +286,6 @@ async function compileQueries( } } } - // Compute hash - const globHash = require("glob-hash"); - const finalHash = await globHash({ - include: [ - `${config.tempDir}/**/.cache/data/**`, - `${config.toolCacheDir}/**/.cache/data/**`, - ], - files: false, // MG: List matched files for debugging - }); - logger.info(`FinalHash: ${finalHash}`); - return finalHash; } void runWrapper();