Skip to content

Commit c967acc

Browse files
committed
fix: wrong webapp url in summary link + simplify tests
1 parent 586f10b commit c967acc

11 files changed

Lines changed: 175 additions & 230 deletions

File tree

action.yml

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,19 +31,24 @@ inputs:
3131
default: true
3232

3333
_agent-download-base-url:
34-
description: "(Internal) Base URL for fetching the agent binary. This is useful for testing changes in a fork. The URL should end with a slash."
34+
description: "(Internal) Base URL for fetching the agent binary. This is useful for testing changes in a fork."
3535
type: string
3636
default: "https://github.com/bullfrogsec/bullfrog/releases/download/"
3737

3838
_agent-version:
3939
description: "(Internal) Override the agent version to download. Must start with 'v' followed by semver (e.g., 'v0.8.4', 'v0.8.4-beta-feature', 'v1.0.0-rc'). If not specified, uses the version from package.json."
4040
type: string
4141

42-
_control-plane-base-url:
43-
description: "(Internal) Base URL for the Bullfrog control plane API. This is useful for testing changes in a fork. The URL should end with a slash."
42+
_control-plane-api-base-url:
43+
description: "(Internal) Base URL for the Bullfrog control plane API. This is useful for testing changes in a fork."
4444
type: string
4545
default: "https://api.bullfrogsec.com/"
4646

47+
_control-plane-webapp-base-url:
48+
description: "(Internal) Base URL for the Bullfrog control plane webapp. This is useful for testing changes in a fork."
49+
type: string
50+
default: "https://app.bullfrogsec.com/"
51+
4752
_log-directory:
4853
description: "(Internal) Directory to store log files."
4954
type: string

action/dist/main.js

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19834,6 +19834,12 @@ function validateAgentVersion(version) {
1983419834
);
1983519835
}
1983619836
}
19837+
function formatUrlWithTrailingSlash(url) {
19838+
if (!url) {
19839+
return;
19840+
}
19841+
return url.endsWith("/") ? url : `${url}/`;
19842+
}
1983719843
function parseInputs() {
1983819844
const rawAllowedIps = core.getInput("allowed-ips");
1983919845
const allowedIps = rawAllowedIps.length !== 0 ? rawAllowedIps.split("\n") : [];
@@ -19855,6 +19861,12 @@ function parseInputs() {
1985519861
validateAgentVersion(agentVersion);
1985619862
}
1985719863
const apiToken = core.getInput("api-token");
19864+
const agentDownloadBaseURL = formatUrlWithTrailingSlash(
19865+
core.getInput("_agent-download-base-url")
19866+
);
19867+
if (!agentDownloadBaseURL) {
19868+
throw new Error(`_agent-download-base-url cannot be empty`);
19869+
}
1985819870
return {
1985919871
allowedDomains,
1986019872
allowedIps,
@@ -19864,9 +19876,14 @@ function parseInputs() {
1986419876
egressPolicy,
1986519877
localAgent,
1986619878
logDirectory: core.getInput("_log-directory", { required: true }),
19867-
agentDownloadBaseURL: core.getInput("_agent-download-base-url"),
19879+
agentDownloadBaseURL,
1986819880
agentVersion: agentVersion || void 0,
19869-
controlPlaneBaseUrl: core.getInput("_control-plane-base-url"),
19881+
controlPlaneApiBaseUrl: formatUrlWithTrailingSlash(
19882+
core.getInput("_control-plane-api-base-url")
19883+
),
19884+
controlPlaneWebappBaseUrl: formatUrlWithTrailingSlash(
19885+
core.getInput("_control-plane-webapp-base-url")
19886+
),
1987019887
apiToken: apiToken || void 0
1987119888
};
1987219889
}
@@ -20024,14 +20041,14 @@ async function main() {
2002420041
logDirectory,
2002520042
agentVersion,
2002620043
apiToken,
20027-
controlPlaneBaseUrl
20044+
controlPlaneApiBaseUrl
2002820045
} = parseInputs();
2002920046
const actionDirectory = import_node_path.default.join(__dirname, "..");
2003020047
const agentDirectory = import_node_path.default.join(actionDirectory, "..", "agent");
2003120048
const pkg = require(`${actionDirectory}/../package.json`);
20032-
if (apiToken) {
20049+
if (apiToken && controlPlaneApiBaseUrl) {
2003320050
try {
20034-
const url = new URL(controlPlaneBaseUrl);
20051+
const url = new URL(controlPlaneApiBaseUrl);
2003520052
const controlPlaneDomain = url.hostname;
2003620053
allowedDomains.push(controlPlaneDomain);
2003720054
core3.info(
@@ -20047,12 +20064,11 @@ async function main() {
2004720064
const agentLogFilepath = import_node_path.default.join(logDirectory, AGENT_LOG_FILENAME);
2004820065
installPackages();
2004920066
const version = agentVersion || `v${pkg.version}`;
20050-
const versionWithoutPrefix = version.startsWith("v") ? version.slice(1) : version;
2005120067
await installAgent({
2005220068
actionDirectory,
2005320069
agentDirectory,
2005420070
localAgent,
20055-
version: versionWithoutPrefix,
20071+
version,
2005620072
agentDownloadBaseURL
2005720073
});
2005820074
await startAgent({

action/dist/main.js.map

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

action/dist/post.js

Lines changed: 37 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -19846,6 +19846,12 @@ function validateAgentVersion(version) {
1984619846
);
1984719847
}
1984819848
}
19849+
function formatUrlWithTrailingSlash(url) {
19850+
if (!url) {
19851+
return;
19852+
}
19853+
return url.endsWith("/") ? url : `${url}/`;
19854+
}
1984919855
function parseInputs() {
1985019856
const rawAllowedIps = core.getInput("allowed-ips");
1985119857
const allowedIps = rawAllowedIps.length !== 0 ? rawAllowedIps.split("\n") : [];
@@ -19867,6 +19873,12 @@ function parseInputs() {
1986719873
validateAgentVersion(agentVersion);
1986819874
}
1986919875
const apiToken = core.getInput("api-token");
19876+
const agentDownloadBaseURL = formatUrlWithTrailingSlash(
19877+
core.getInput("_agent-download-base-url")
19878+
);
19879+
if (!agentDownloadBaseURL) {
19880+
throw new Error(`_agent-download-base-url cannot be empty`);
19881+
}
1987019882
return {
1987119883
allowedDomains,
1987219884
allowedIps,
@@ -19876,9 +19888,14 @@ function parseInputs() {
1987619888
egressPolicy,
1987719889
localAgent,
1987819890
logDirectory: core.getInput("_log-directory", { required: true }),
19879-
agentDownloadBaseURL: core.getInput("_agent-download-base-url"),
19891+
agentDownloadBaseURL,
1988019892
agentVersion: agentVersion || void 0,
19881-
controlPlaneBaseUrl: core.getInput("_control-plane-base-url"),
19893+
controlPlaneApiBaseUrl: formatUrlWithTrailingSlash(
19894+
core.getInput("_control-plane-api-base-url")
19895+
),
19896+
controlPlaneWebappBaseUrl: formatUrlWithTrailingSlash(
19897+
core.getInput("_control-plane-webapp-base-url")
19898+
),
1988219899
apiToken: apiToken || void 0
1988319900
};
1988419901
}
@@ -19924,14 +19941,13 @@ function getGitHubContext() {
1992419941
function getHumanFriendlyReason(reasonCode) {
1992519942
return REASON_CODE_MAP[reasonCode] || reasonCode;
1992619943
}
19927-
async function displaySummary(connections, controlPlaneBaseUrl) {
19944+
async function displaySummary(connections, controlPlaneWebappBaseUrl) {
1992819945
const summary2 = core3.summary;
1992919946
const workflowRunId = process.env.GITHUB_RUN_ID;
19930-
if (controlPlaneBaseUrl && workflowRunId) {
19931-
const baseUrl = controlPlaneBaseUrl.endsWith("/") ? controlPlaneBaseUrl : `${controlPlaneBaseUrl}/`;
19947+
if (controlPlaneWebappBaseUrl && workflowRunId) {
1993219948
summary2.addHeading("Bullfrog Control Plane", 3).addLink(
1993319949
"View detailed results",
19934-
`${baseUrl}workflow-run/${workflowRunId}`
19950+
`${controlPlaneWebappBaseUrl}workflow-run/${workflowRunId}`
1993519951
);
1993619952
} else {
1993719953
summary2.addHeading("Bullfrog Results", 3);
@@ -20074,7 +20090,7 @@ async function printAgentLogs({
2007420090
console.error("Error reading log file", error);
2007520091
}
2007620092
}
20077-
async function submitResultsToControlPlane(connections, apiToken, controlPlaneBaseUrl) {
20093+
async function submitResultsToControlPlane(connections, apiToken, controlPlaneApiBaseUrl) {
2007820094
try {
2007920095
const { workflowRunId, runAttempt, jobName, organization, repo } = getGitHubContext();
2008020096
const payload = {
@@ -20088,8 +20104,7 @@ async function submitResultsToControlPlane(connections, apiToken, controlPlaneBa
2008820104
core3.debug(
2008920105
`Submitting results to control plane: ${JSON.stringify(payload)}`
2009020106
);
20091-
const baseUrl = controlPlaneBaseUrl.endsWith("/") ? controlPlaneBaseUrl : `${controlPlaneBaseUrl}/`;
20092-
const apiUrl = `${baseUrl}v1/events`;
20107+
const apiUrl = `${controlPlaneApiBaseUrl}v1/events`;
2009320108
const response = await fetch(apiUrl, {
2009420109
method: "POST",
2009520110
headers: {
@@ -20114,14 +20129,23 @@ async function submitResultsToControlPlane(connections, apiToken, controlPlaneBa
2011420129
}
2011520130
}
2011620131
async function main() {
20117-
const { logDirectory, apiToken, controlPlaneBaseUrl } = parseInputs();
20132+
const {
20133+
logDirectory,
20134+
apiToken,
20135+
controlPlaneApiBaseUrl,
20136+
controlPlaneWebappBaseUrl
20137+
} = parseInputs();
2011820138
const agentLogFilepath = import_node_path.default.join(logDirectory, AGENT_LOG_FILENAME);
2011920139
await printAgentLogs({ agentLogFilepath });
2012020140
try {
2012120141
const { filtered, raw } = await getConnections();
20122-
await displaySummary(filtered, apiToken ? controlPlaneBaseUrl : void 0);
20123-
if (apiToken) {
20124-
await submitResultsToControlPlane(raw, apiToken, controlPlaneBaseUrl);
20142+
const shouldAddControlPlaneResultsUrl = apiToken && controlPlaneWebappBaseUrl;
20143+
await displaySummary(
20144+
filtered,
20145+
shouldAddControlPlaneResultsUrl ? controlPlaneWebappBaseUrl : void 0
20146+
);
20147+
if (apiToken && controlPlaneApiBaseUrl) {
20148+
await submitResultsToControlPlane(raw, apiToken, controlPlaneApiBaseUrl);
2012520149
}
2012620150
} catch (error) {
2012720151
core3.warning(

action/dist/post.js.map

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

action/scripts/download_agent.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ FINAL_BIN_DIR="/opt/bullfrog"
1414
if [ -f "$AGENT_FILE" ]; then
1515
echo "$AGENT_FILE exists."
1616
else
17-
curl -L ${DOWNLOAD_URL}/${VERSION}/agent.tar.gz -o "$AGENT_FILE"
17+
curl -L ${DOWNLOAD_URL}${VERSION}/agent.tar.gz -o "$AGENT_FILE"
1818
fi
1919

2020
tar -xvf "$AGENT_FILE" -C $TMP_DIR

0 commit comments

Comments
 (0)