Skip to content

Commit bbaaef5

Browse files
committed
Add initial workflow code dependent on init
1 parent 580d717 commit bbaaef5

4 files changed

Lines changed: 102 additions & 8 deletions

File tree

lib/resolve-environment-action.js

Lines changed: 32 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/resolve-environment-action.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

resolve-environment/action.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
11
name: 'CodeQL: Resolve Build Environment'
22
description: 'Attempt to infer a suitable environment configuration for the autobuilder'
33
author: 'GitHub'
4+
inputs:
5+
language:
6+
description: The language to infer the build environment configuration for.
7+
required: true
8+
outputs:
9+
configuration:
10+
description: The inferred build environment configuration.
411
runs:
512
using: 'node16'
613
main: '../lib/resolve-environment-action.js'

src/resolve-environment-action.ts

Lines changed: 62 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,75 @@
11
import * as core from "@actions/core";
22

3-
import { checkForTimeout, wrapError } from "./util";
3+
import {
4+
createStatusReportBase,
5+
getRequiredInput,
6+
getTemporaryDirectory,
7+
sendStatusReport,
8+
} from "./actions-util";
9+
import { getGitHubVersion } from "./api-client";
10+
import * as configUtils from "./config-utils";
11+
import { Language, resolveAlias } from "./languages";
12+
import { getActionsLogger } from "./logging";
13+
import { runResolveBuildEnvironment } from "./resolve-environment";
14+
import { checkForTimeout, checkGitHubVersionInRange, wrapError } from "./util";
15+
import { validateWorkflow } from "./workflow";
16+
17+
const actionName = "resolve-environment";
418

519
async function run() {
6-
return;
20+
const startedAt = new Date();
21+
const logger = getActionsLogger();
22+
const language: Language = resolveAlias(getRequiredInput("language"));
23+
24+
try {
25+
const workflowErrors = await validateWorkflow(logger);
26+
27+
if (
28+
!(await sendStatusReport(
29+
await createStatusReportBase(
30+
actionName,
31+
"starting",
32+
startedAt,
33+
workflowErrors
34+
)
35+
))
36+
) {
37+
return;
38+
}
39+
40+
const gitHubVersion = await getGitHubVersion();
41+
checkGitHubVersionInRange(gitHubVersion, logger);
42+
43+
const config = await configUtils.getConfig(getTemporaryDirectory(), logger);
44+
if (config === undefined) {
45+
throw new Error(
46+
"Config file could not be found at expected location. Has the 'init' action been called?"
47+
);
48+
}
49+
50+
const result = await runResolveBuildEnvironment(config.codeQLCmd, logger, language);
51+
core.setOutput("configuration", result);
52+
} catch (unwrappedError) {
53+
const error = wrapError(unwrappedError);
54+
core.setFailed(error.message);
55+
await sendStatusReport(
56+
await createStatusReportBase(
57+
actionName,
58+
"aborted",
59+
startedAt,
60+
error.message,
61+
error.stack
62+
)
63+
);
64+
return;
65+
}
766
}
867

968
async function runWrapper() {
1069
try {
1170
await run();
1271
} catch (error) {
13-
core.setFailed(
14-
`resolve environment action failed: ${wrapError(error).message}`
15-
);
72+
core.setFailed(`${actionName} action failed: ${wrapError(error).message}`);
1673
}
1774
await checkForTimeout();
1875
}

0 commit comments

Comments
 (0)