From 7b4a570a5817358c536fec528bb0daff0ae68a67 Mon Sep 17 00:00:00 2001 From: Sohan Kshirsagar Date: Tue, 24 Mar 2026 13:39:16 -0700 Subject: [PATCH 1/2] feat: pass commit SHA and branch name on validation runs --- cmd/run.go | 41 +++++++++++++++++++++++++++++++---------- 1 file changed, 31 insertions(+), 10 deletions(-) diff --git a/cmd/run.go b/cmd/run.go index 6c8f35e..8927f29 100644 --- a/cmd/run.go +++ b/cmd/run.go @@ -229,11 +229,12 @@ func runTests(cmd *cobra.Command, args []string) error { var req *backend.CreateDriftRunRequest if isValidation { - // Validation mode: no CI metadata needed req = &backend.CreateDriftRunRequest{ ObservableServiceId: cfg.Service.ID, CliVersion: version.Version, IsValidationRun: true, + CommitSha: stringPtr(getCommitSHAFromEnv()), + BranchName: stringPtr(getBranchFromEnv()), } } else { // Regular CI mode: validate and include CI metadata @@ -1015,15 +1016,7 @@ func validateCIMetadata(metadata CIMetadata) (CIMetadata, error) { // Only populate from environment variables if in CI if inCI { if metadata.CommitSha == "" { - if isGitHub { - if sha := getGitHubPRHeadSHA(); sha != "" { - metadata.CommitSha = sha - } else { - metadata.CommitSha = os.Getenv("GITHUB_SHA") - } - } else if isGitLab { - metadata.CommitSha = os.Getenv("CI_COMMIT_SHA") - } + metadata.CommitSha = getCommitSHAFromEnv() } if metadata.PRNumber == "" { @@ -1114,6 +1107,34 @@ func stringPtr(s string) *string { return &s } +// getCommitSHAFromEnv returns the commit SHA from CI environment variables. +// Returns empty string if no SHA can be determined from environment or git. +func getCommitSHAFromEnv() string { + isGitHub := os.Getenv("GITHUB_ACTIONS") == "true" + isGitLab := os.Getenv("GITLAB_CI") == "true" + + if isGitHub { + if sha := getGitHubPRHeadSHA(); sha != "" { + return sha + } + if sha := os.Getenv("GITHUB_SHA"); sha != "" { + return sha + } + } else if isGitLab { + if sha := os.Getenv("CI_COMMIT_SHA"); sha != "" { + return sha + } + } + + // Fallback: git rev-parse + cmd := exec.Command("git", "rev-parse", "HEAD") + output, err := cmd.Output() + if err != nil { + return "" + } + return strings.TrimSpace(string(output)) +} + // getBranchFromEnv returns the branch name from CI environment variables // Returns empty string if no branch can be determined from environment func getBranchFromEnv() string { From f3f5f0d191ebb374ff18b319d38bb017bf996824 Mon Sep 17 00:00:00 2001 From: Sohan Kshirsagar Date: Tue, 24 Mar 2026 13:56:48 -0700 Subject: [PATCH 2/2] Address pr comments --- cmd/run.go | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/cmd/run.go b/cmd/run.go index 8927f29..692a44e 100644 --- a/cmd/run.go +++ b/cmd/run.go @@ -1108,7 +1108,7 @@ func stringPtr(s string) *string { } // getCommitSHAFromEnv returns the commit SHA from CI environment variables. -// Returns empty string if no SHA can be determined from environment or git. +// Returns empty string if no SHA can be determined from the environment. func getCommitSHAFromEnv() string { isGitHub := os.Getenv("GITHUB_ACTIONS") == "true" isGitLab := os.Getenv("GITLAB_CI") == "true" @@ -1117,22 +1117,12 @@ func getCommitSHAFromEnv() string { if sha := getGitHubPRHeadSHA(); sha != "" { return sha } - if sha := os.Getenv("GITHUB_SHA"); sha != "" { - return sha - } + return os.Getenv("GITHUB_SHA") } else if isGitLab { - if sha := os.Getenv("CI_COMMIT_SHA"); sha != "" { - return sha - } + return os.Getenv("CI_COMMIT_SHA") } - // Fallback: git rev-parse - cmd := exec.Command("git", "rev-parse", "HEAD") - output, err := cmd.Output() - if err != nil { - return "" - } - return strings.TrimSpace(string(output)) + return "" } // getBranchFromEnv returns the branch name from CI environment variables