Skip to content

Conversation

@mbg
Copy link
Member

@mbg mbg commented Oct 24, 2025

We have a helper function for inputs which gets the corresponding value, if it is set and not empty. We don't have this for environment variables. This PR adds getOptionalEnvVar to address that.

Risk assessment

For internal use only. Please select the risk level of this change:

  • Low risk: Changes are fully under feature flags, or have been fully tested and validated in pre-production environments and are highly observable, or are documentation or test only.

Which use cases does this change impact?

  • Advanced setup - Impacts users who have custom workflows.
  • Default setup - Impacts users who use default setup.
  • Code Scanning - Impacts Code Scanning (i.e. analysis-kinds: code-scanning).
  • Code Quality - Impacts Code Quality (i.e. analysis-kinds: code-quality).
  • Third-party analyses - Impacts third-party analyses (i.e. upload-sarif).
  • GHES - Impacts GitHub Enterprise Server.

How did/will you validate this change?

  • Unit tests - I am depending on unit test coverage (i.e. tests in .test.ts files).
  • End-to-end tests - I am depending on PR checks (i.e. tests in pr-checks).

If something goes wrong after this change is released, what are the mitigation and rollback strategies?

  • Rollback - Change can only be disabled by rolling back the release or releasing a new version with a fix.

How will you know if something goes wrong after this change is released?

  • Telemetry - I rely on existing telemetry or have made changes to the telemetry.
    • Dashboards - I will watch relevant dashboards for issues after the release. Consider whether this requires this change to be released at a particular time rather than as part of a regular release.
    • Alerts - New or existing monitors will trip if something goes wrong with this change.

Merge / deployment checklist

  • Confirm this change is backwards compatible with existing workflows.
  • Consider adding a changelog entry for this change.
  • Confirm the readme and docs have been updated if necessary.

Also add tests for it and `getRequiredEnvParam`
@mbg mbg requested a review from henrymercer October 24, 2025 14:09
@mbg mbg requested a review from a team as a code owner October 24, 2025 14:09
Copilot AI review requested due to automatic review settings October 24, 2025 14:09
@github-actions github-actions bot added the size/S Should be easy to review label Oct 24, 2025
henrymercer
henrymercer previously approved these changes Oct 24, 2025
*/
export function getOptionalEnvVar(paramName: string): string | undefined {
const value = process.env[paramName];
if (value?.trim().length === 0) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor: this trims but getRequiredEnvParam doesn't — should we be consistent?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's be inconsistent for now. Mainly because this would be a stricter requirement for getOptionalEnvVar than what we currently have and getOptionalEnvVar is only used in one (new) place for now where we don't risk breaking anything.

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR introduces a new getOptionalEnvVar helper function to safely retrieve environment variables that may not be set or may be empty, returning undefined in those cases. This complements the existing getRequiredEnvParam function and is immediately applied to simplify the logic in writePostProcessedFiles.

Key changes:

  • Added getOptionalEnvVar helper function in util.ts with appropriate test coverage
  • Refactored writePostProcessedFiles to use the new helper instead of inline null/empty checks

Reviewed Changes

Copilot reviewed 6 out of 6 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
src/util.ts Added getOptionalEnvVar helper function
src/util.test.ts Added comprehensive test coverage for both getRequiredEnvParam and getOptionalEnvVar
src/upload-lib.ts Applied getOptionalEnvVar to simplify environment variable retrieval logic
lib/upload-sarif-action.js Generated JavaScript from TypeScript changes
lib/upload-lib.js Generated JavaScript from TypeScript changes
lib/analyze-action.js Generated JavaScript from TypeScript changes
Comments suppressed due to low confidence (3)

lib/upload-sarif-action.js:1

  • The function getOptionalEnvVar is being accessed with bracket notation instead of being called with parentheses. This should be getOptionalEnvVar(\"CODEQL_ACTION_SARIF_DUMP_DIR\") to properly invoke the function.
"use strict";

lib/upload-lib.js:1

  • The function getOptionalEnvVar is being accessed with bracket notation instead of being called with parentheses. This should be getOptionalEnvVar(\"CODEQL_ACTION_SARIF_DUMP_DIR\") to properly invoke the function.
"use strict";

lib/analyze-action.js:1

  • The function getOptionalEnvVar is being accessed with bracket notation instead of being called with parentheses. This should be getOptionalEnvVar(\"CODEQL_ACTION_SARIF_DUMP_DIR\") to properly invoke the function.
"use strict";

@mbg mbg merged commit b843cbe into main Oct 24, 2025
243 checks passed
@mbg mbg deleted the mbg/getOptionalEnvVar branch October 24, 2025 15:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/S Should be easy to review

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants