start uploading analysis_key parameter
This commit is contained in:
parent
1cdde3eb41
commit
43de3a9949
6 changed files with 95 additions and 0 deletions
1
lib/shared-environment.js
generated
1
lib/shared-environment.js
generated
|
|
@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
exports.CODEQL_ACTION_CMD = 'CODEQL_ACTION_CMD';
|
exports.CODEQL_ACTION_CMD = 'CODEQL_ACTION_CMD';
|
||||||
exports.CODEQL_ACTION_DATABASE_DIR = 'CODEQL_ACTION_DATABASE_DIR';
|
exports.CODEQL_ACTION_DATABASE_DIR = 'CODEQL_ACTION_DATABASE_DIR';
|
||||||
exports.CODEQL_ACTION_LANGUAGES = 'CODEQL_ACTION_LANGUAGES';
|
exports.CODEQL_ACTION_LANGUAGES = 'CODEQL_ACTION_LANGUAGES';
|
||||||
|
exports.CODEQL_ACTION_ANALYSIS_KEY = 'CODEQL_ACTION_ANALYSIS_KEY';
|
||||||
exports.ODASA_TRACER_CONFIGURATION = 'ODASA_TRACER_CONFIGURATION';
|
exports.ODASA_TRACER_CONFIGURATION = 'ODASA_TRACER_CONFIGURATION';
|
||||||
exports.CODEQL_ACTION_SCANNED_LANGUAGES = 'CODEQL_ACTION_SCANNED_LANGUAGES';
|
exports.CODEQL_ACTION_SCANNED_LANGUAGES = 'CODEQL_ACTION_SCANNED_LANGUAGES';
|
||||||
exports.CODEQL_ACTION_TRACED_LANGUAGES = 'CODEQL_ACTION_TRACED_LANGUAGES';
|
exports.CODEQL_ACTION_TRACED_LANGUAGES = 'CODEQL_ACTION_TRACED_LANGUAGES';
|
||||||
|
|
|
||||||
2
lib/upload-lib.js
generated
2
lib/upload-lib.js
generated
|
|
@ -83,6 +83,7 @@ async function uploadFiles(sarifFiles) {
|
||||||
const commitOid = util.getRequiredEnvParam('GITHUB_SHA');
|
const commitOid = util.getRequiredEnvParam('GITHUB_SHA');
|
||||||
const workflowRunIDStr = util.getRequiredEnvParam('GITHUB_RUN_ID');
|
const workflowRunIDStr = util.getRequiredEnvParam('GITHUB_RUN_ID');
|
||||||
const ref = util.getRequiredEnvParam('GITHUB_REF'); // it's in the form "refs/heads/master"
|
const ref = util.getRequiredEnvParam('GITHUB_REF'); // it's in the form "refs/heads/master"
|
||||||
|
const analysisKey = await util.getAnalysisKey();
|
||||||
const analysisName = util.getRequiredEnvParam('GITHUB_WORKFLOW');
|
const analysisName = util.getRequiredEnvParam('GITHUB_WORKFLOW');
|
||||||
const startedAt = process.env[sharedEnv.CODEQL_ACTION_STARTED_AT];
|
const startedAt = process.env[sharedEnv.CODEQL_ACTION_STARTED_AT];
|
||||||
core.debug("Uploading sarif files: " + JSON.stringify(sarifFiles));
|
core.debug("Uploading sarif files: " + JSON.stringify(sarifFiles));
|
||||||
|
|
@ -104,6 +105,7 @@ async function uploadFiles(sarifFiles) {
|
||||||
const payload = JSON.stringify({
|
const payload = JSON.stringify({
|
||||||
"commit_oid": commitOid,
|
"commit_oid": commitOid,
|
||||||
"ref": ref,
|
"ref": ref,
|
||||||
|
"analysis_key": analysisKey,
|
||||||
"analysis_name": analysisName,
|
"analysis_name": analysisName,
|
||||||
"sarif": zipped_sarif,
|
"sarif": zipped_sarif,
|
||||||
"workflow_run_id": workflowRunID,
|
"workflow_run_id": workflowRunID,
|
||||||
|
|
|
||||||
41
lib/util.js
generated
41
lib/util.js
generated
|
|
@ -149,6 +149,47 @@ async function getLanguages() {
|
||||||
return languages;
|
return languages;
|
||||||
}
|
}
|
||||||
exports.getLanguages = getLanguages;
|
exports.getLanguages = getLanguages;
|
||||||
|
/**
|
||||||
|
* Get the path of the currently executing workflow.
|
||||||
|
*/
|
||||||
|
async function getWorkflowPath() {
|
||||||
|
const repo_nwo = getRequiredEnvParam('GITHUB_REPOSITORY').split("/");
|
||||||
|
const owner = repo_nwo[0];
|
||||||
|
const repo = repo_nwo[1];
|
||||||
|
const run_id = getRequiredEnvParam('GITHUB_RUN_ID');
|
||||||
|
const ok = new octokit.Octokit({
|
||||||
|
auth: core.getInput('token'),
|
||||||
|
userAgent: "CodeQL Action",
|
||||||
|
log: console_log_level_1.default({ level: 'debug' })
|
||||||
|
});
|
||||||
|
const runsResponse = await ok.request('GET /repos/:owner/:repo/actions/runs/:run_id', {
|
||||||
|
owner,
|
||||||
|
repo,
|
||||||
|
run_id
|
||||||
|
});
|
||||||
|
const workflowUrl = runsResponse.data.workflow_url;
|
||||||
|
const workflowResponse = await ok.request('GET ' + workflowUrl);
|
||||||
|
return workflowResponse.data.path;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Get the analysis key paramter for the current job.
|
||||||
|
*
|
||||||
|
* This will combine the workflow path and current job name.
|
||||||
|
* Computing this the first time requires making requests to
|
||||||
|
* the github API, but after that the result will be cached.
|
||||||
|
*/
|
||||||
|
async function getAnalysisKey() {
|
||||||
|
let analysisKey = process.env[sharedEnv.CODEQL_ACTION_ANALYSIS_KEY];
|
||||||
|
if (analysisKey !== undefined) {
|
||||||
|
return analysisKey;
|
||||||
|
}
|
||||||
|
const workflowPath = await getWorkflowPath();
|
||||||
|
const jobName = getRequiredEnvParam('GITHUB_JOB');
|
||||||
|
analysisKey = workflowPath + ' - ' + jobName;
|
||||||
|
core.exportVariable(sharedEnv.CODEQL_ACTION_ANALYSIS_KEY, analysisKey);
|
||||||
|
return analysisKey;
|
||||||
|
}
|
||||||
|
exports.getAnalysisKey = getAnalysisKey;
|
||||||
/**
|
/**
|
||||||
* Compose a StatusReport.
|
* Compose a StatusReport.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
export const CODEQL_ACTION_CMD = 'CODEQL_ACTION_CMD';
|
export const CODEQL_ACTION_CMD = 'CODEQL_ACTION_CMD';
|
||||||
export const CODEQL_ACTION_DATABASE_DIR = 'CODEQL_ACTION_DATABASE_DIR';
|
export const CODEQL_ACTION_DATABASE_DIR = 'CODEQL_ACTION_DATABASE_DIR';
|
||||||
export const CODEQL_ACTION_LANGUAGES = 'CODEQL_ACTION_LANGUAGES';
|
export const CODEQL_ACTION_LANGUAGES = 'CODEQL_ACTION_LANGUAGES';
|
||||||
|
export const CODEQL_ACTION_ANALYSIS_KEY = 'CODEQL_ACTION_ANALYSIS_KEY';
|
||||||
export const ODASA_TRACER_CONFIGURATION = 'ODASA_TRACER_CONFIGURATION';
|
export const ODASA_TRACER_CONFIGURATION = 'ODASA_TRACER_CONFIGURATION';
|
||||||
export const CODEQL_ACTION_SCANNED_LANGUAGES = 'CODEQL_ACTION_SCANNED_LANGUAGES';
|
export const CODEQL_ACTION_SCANNED_LANGUAGES = 'CODEQL_ACTION_SCANNED_LANGUAGES';
|
||||||
export const CODEQL_ACTION_TRACED_LANGUAGES = 'CODEQL_ACTION_TRACED_LANGUAGES';
|
export const CODEQL_ACTION_TRACED_LANGUAGES = 'CODEQL_ACTION_TRACED_LANGUAGES';
|
||||||
|
|
|
||||||
|
|
@ -76,6 +76,7 @@ async function uploadFiles(sarifFiles: string[]) {
|
||||||
const commitOid = util.getRequiredEnvParam('GITHUB_SHA');
|
const commitOid = util.getRequiredEnvParam('GITHUB_SHA');
|
||||||
const workflowRunIDStr = util.getRequiredEnvParam('GITHUB_RUN_ID');
|
const workflowRunIDStr = util.getRequiredEnvParam('GITHUB_RUN_ID');
|
||||||
const ref = util.getRequiredEnvParam('GITHUB_REF'); // it's in the form "refs/heads/master"
|
const ref = util.getRequiredEnvParam('GITHUB_REF'); // it's in the form "refs/heads/master"
|
||||||
|
const analysisKey = await util.getAnalysisKey();
|
||||||
const analysisName = util.getRequiredEnvParam('GITHUB_WORKFLOW');
|
const analysisName = util.getRequiredEnvParam('GITHUB_WORKFLOW');
|
||||||
const startedAt = process.env[sharedEnv.CODEQL_ACTION_STARTED_AT];
|
const startedAt = process.env[sharedEnv.CODEQL_ACTION_STARTED_AT];
|
||||||
|
|
||||||
|
|
@ -103,6 +104,7 @@ async function uploadFiles(sarifFiles: string[]) {
|
||||||
const payload = JSON.stringify({
|
const payload = JSON.stringify({
|
||||||
"commit_oid": commitOid,
|
"commit_oid": commitOid,
|
||||||
"ref": ref,
|
"ref": ref,
|
||||||
|
"analysis_key": analysisKey,
|
||||||
"analysis_name": analysisName,
|
"analysis_name": analysisName,
|
||||||
"sarif": zipped_sarif,
|
"sarif": zipped_sarif,
|
||||||
"workflow_run_id": workflowRunID,
|
"workflow_run_id": workflowRunID,
|
||||||
|
|
|
||||||
48
src/util.ts
48
src/util.ts
|
|
@ -150,6 +150,54 @@ export async function getLanguages(): Promise<string[]> {
|
||||||
return languages;
|
return languages;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the path of the currently executing workflow.
|
||||||
|
*/
|
||||||
|
async function getWorkflowPath(): Promise<string> {
|
||||||
|
const repo_nwo = getRequiredEnvParam('GITHUB_REPOSITORY').split("/");
|
||||||
|
const owner = repo_nwo[0];
|
||||||
|
const repo = repo_nwo[1];
|
||||||
|
const run_id = getRequiredEnvParam('GITHUB_RUN_ID');
|
||||||
|
|
||||||
|
const ok = new octokit.Octokit({
|
||||||
|
auth: core.getInput('token'),
|
||||||
|
userAgent: "CodeQL Action",
|
||||||
|
log: consoleLogLevel({ level: 'debug' })
|
||||||
|
});
|
||||||
|
|
||||||
|
const runsResponse = await ok.request('GET /repos/:owner/:repo/actions/runs/:run_id', {
|
||||||
|
owner,
|
||||||
|
repo,
|
||||||
|
run_id
|
||||||
|
});
|
||||||
|
const workflowUrl = runsResponse.data.workflow_url;
|
||||||
|
|
||||||
|
const workflowResponse = await ok.request('GET ' + workflowUrl);
|
||||||
|
|
||||||
|
return workflowResponse.data.path;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the analysis key paramter for the current job.
|
||||||
|
*
|
||||||
|
* This will combine the workflow path and current job name.
|
||||||
|
* Computing this the first time requires making requests to
|
||||||
|
* the github API, but after that the result will be cached.
|
||||||
|
*/
|
||||||
|
export async function getAnalysisKey(): Promise<string> {
|
||||||
|
let analysisKey = process.env[sharedEnv.CODEQL_ACTION_ANALYSIS_KEY];
|
||||||
|
if (analysisKey !== undefined) {
|
||||||
|
return analysisKey;
|
||||||
|
}
|
||||||
|
|
||||||
|
const workflowPath = await getWorkflowPath();
|
||||||
|
const jobName = getRequiredEnvParam('GITHUB_JOB');
|
||||||
|
|
||||||
|
analysisKey = workflowPath + ' - ' + jobName;
|
||||||
|
core.exportVariable(sharedEnv.CODEQL_ACTION_ANALYSIS_KEY, analysisKey);
|
||||||
|
return analysisKey;
|
||||||
|
}
|
||||||
|
|
||||||
interface StatusReport {
|
interface StatusReport {
|
||||||
"workflow_run_id": number;
|
"workflow_run_id": number;
|
||||||
"workflow_name": string;
|
"workflow_name": string;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue