Change INSTANCE_API_URL constant to a method.
This commit is contained in:
parent
bfaa0cf943
commit
0f88c0111f
3 changed files with 16 additions and 11 deletions
14
lib/codeql.js
generated
14
lib/codeql.js
generated
|
|
@ -36,8 +36,10 @@ const CODEQL_ACTION_CMD = "CODEQL_ACTION_CMD";
|
|||
const CODEQL_DEFAULT_BUNDLE_VERSION = "codeql-bundle-20200630";
|
||||
const CODEQL_DEFAULT_BUNDLE_NAME = "codeql-bundle.tar.gz";
|
||||
const GITHUB_DOTCOM_API_URL = "https://api.github.com";
|
||||
const INSTANCE_API_URL = process.env["GITHUB_API_URL"] || GITHUB_DOTCOM_API_URL;
|
||||
const CODEQL_DEFAULT_ACTION_REPOSITORY = "github/codeql-action";
|
||||
function getInstanceAPIURL() {
|
||||
return process.env["GITHUB_API_URL"] || GITHUB_DOTCOM_API_URL;
|
||||
}
|
||||
function getCodeQLActionRepository() {
|
||||
// Actions do not know their own repository name,
|
||||
// so we currently use this hack to find the name based on where our files are.
|
||||
|
|
@ -55,9 +57,9 @@ async function getCodeQLBundleDownloadURL() {
|
|||
const codeQLActionRepository = getCodeQLActionRepository();
|
||||
const potentialDownloadSources = [
|
||||
// This GitHub instance, and this Action.
|
||||
[INSTANCE_API_URL, codeQLActionRepository],
|
||||
[getInstanceAPIURL(), codeQLActionRepository],
|
||||
// This GitHub instance, and the canonical Action.
|
||||
[INSTANCE_API_URL, CODEQL_DEFAULT_ACTION_REPOSITORY],
|
||||
[getInstanceAPIURL(), CODEQL_DEFAULT_ACTION_REPOSITORY],
|
||||
// GitHub.com, and the canonical Action.
|
||||
[GITHUB_DOTCOM_API_URL, CODEQL_DEFAULT_ACTION_REPOSITORY],
|
||||
];
|
||||
|
|
@ -68,7 +70,7 @@ async function getCodeQLBundleDownloadURL() {
|
|||
let [apiURL, repository] = downloadSource;
|
||||
// If we've reached the final case, short-circuit the API check since we know the bundle exists and is public.
|
||||
if (apiURL === GITHUB_DOTCOM_API_URL && repository === CODEQL_DEFAULT_ACTION_REPOSITORY) {
|
||||
return `https://github.com/${CODEQL_DEFAULT_ACTION_REPOSITORY}/releases/download/${CODEQL_DEFAULT_BUNDLE_VERSION}/${CODEQL_DEFAULT_BUNDLE_NAME}`;
|
||||
break;
|
||||
}
|
||||
let [repositoryOwner, repositoryName] = repository.split("/");
|
||||
try {
|
||||
|
|
@ -88,7 +90,7 @@ async function getCodeQLBundleDownloadURL() {
|
|||
core.info(`Looked for CodeQL bundle in ${downloadSource[1]} on ${downloadSource[0]} but got error ${e}.`);
|
||||
}
|
||||
}
|
||||
throw new Error("Could not find an accessible CodeQL bundle.");
|
||||
return `https://github.com/${CODEQL_DEFAULT_ACTION_REPOSITORY}/releases/download/${CODEQL_DEFAULT_BUNDLE_VERSION}/${CODEQL_DEFAULT_BUNDLE_NAME}`;
|
||||
}
|
||||
async function setupCodeQL() {
|
||||
try {
|
||||
|
|
@ -110,7 +112,7 @@ async function setupCodeQL() {
|
|||
// We only want to provide an authorization header if we are downloading
|
||||
// from the same GitHub instance the Action is running on.
|
||||
// This avoids leaking Enterprise tokens to dotcom.
|
||||
if (codeqlURL.startsWith(INSTANCE_API_URL + "/")) {
|
||||
if (codeqlURL.startsWith(getInstanceAPIURL() + "/")) {
|
||||
core.debug('Downloading CodeQL bundle with token.');
|
||||
let token = core.getInput('token', { required: true });
|
||||
headers.authorization = `token ${token}`;
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -84,9 +84,12 @@ const CODEQL_ACTION_CMD = "CODEQL_ACTION_CMD";
|
|||
const CODEQL_DEFAULT_BUNDLE_VERSION = "codeql-bundle-20200630";
|
||||
const CODEQL_DEFAULT_BUNDLE_NAME = "codeql-bundle.tar.gz";
|
||||
const GITHUB_DOTCOM_API_URL = "https://api.github.com";
|
||||
const INSTANCE_API_URL = process.env["GITHUB_API_URL"] || GITHUB_DOTCOM_API_URL;
|
||||
const CODEQL_DEFAULT_ACTION_REPOSITORY = "github/codeql-action";
|
||||
|
||||
function getInstanceAPIURL(): string {
|
||||
return process.env["GITHUB_API_URL"] || GITHUB_DOTCOM_API_URL;
|
||||
}
|
||||
|
||||
function getCodeQLActionRepository(): string {
|
||||
// Actions do not know their own repository name,
|
||||
// so we currently use this hack to find the name based on where our files are.
|
||||
|
|
@ -105,9 +108,9 @@ async function getCodeQLBundleDownloadURL(): Promise<string> {
|
|||
const codeQLActionRepository = getCodeQLActionRepository();
|
||||
const potentialDownloadSources = [
|
||||
// This GitHub instance, and this Action.
|
||||
[INSTANCE_API_URL, codeQLActionRepository],
|
||||
[getInstanceAPIURL(), codeQLActionRepository],
|
||||
// This GitHub instance, and the canonical Action.
|
||||
[INSTANCE_API_URL, CODEQL_DEFAULT_ACTION_REPOSITORY],
|
||||
[getInstanceAPIURL(), CODEQL_DEFAULT_ACTION_REPOSITORY],
|
||||
// GitHub.com, and the canonical Action.
|
||||
[GITHUB_DOTCOM_API_URL, CODEQL_DEFAULT_ACTION_REPOSITORY],
|
||||
];
|
||||
|
|
@ -161,7 +164,7 @@ export async function setupCodeQL(): Promise<CodeQL> {
|
|||
// We only want to provide an authorization header if we are downloading
|
||||
// from the same GitHub instance the Action is running on.
|
||||
// This avoids leaking Enterprise tokens to dotcom.
|
||||
if (codeqlURL.startsWith(INSTANCE_API_URL + "/")) {
|
||||
if (codeqlURL.startsWith(getInstanceAPIURL() + "/")) {
|
||||
core.debug('Downloading CodeQL bundle with token.');
|
||||
let token = core.getInput('token', { required: true });
|
||||
headers.authorization = `token ${token}`;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue