From 0e7e888715f12c9196258d1cbac1b352891d95b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Greg=20Berg=C3=A9?= Date: Fri, 11 Oct 2024 17:02:24 +0200 Subject: [PATCH] fix: use pr base branch if available for no remote content access mode --- packages/core/src/ci-environment/services/bitrise.ts | 1 + packages/core/src/ci-environment/services/buildkite.ts | 1 + packages/core/src/ci-environment/services/circleci.ts | 1 + packages/core/src/ci-environment/services/git.ts | 1 + .../core/src/ci-environment/services/github-actions.ts | 6 ++++++ packages/core/src/ci-environment/services/gitlab.ts | 1 + packages/core/src/ci-environment/services/heroku.ts | 1 + packages/core/src/ci-environment/services/travis.ts | 1 + packages/core/src/ci-environment/types.ts | 5 +++++ packages/core/src/config.ts | 8 ++++++++ packages/core/src/upload.ts | 10 ++++++---- 11 files changed, 32 insertions(+), 4 deletions(-) diff --git a/packages/core/src/ci-environment/services/bitrise.ts b/packages/core/src/ci-environment/services/bitrise.ts index d6acd7d..915f43d 100644 --- a/packages/core/src/ci-environment/services/bitrise.ts +++ b/packages/core/src/ci-environment/services/bitrise.ts @@ -20,6 +20,7 @@ const service: Service = { runAttempt: null, prNumber: getPrNumber({ env }), prHeadCommit: null, + prBaseBranch: null, nonce: env.BITRISEIO_PIPELINE_ID || null, }; }, diff --git a/packages/core/src/ci-environment/services/buildkite.ts b/packages/core/src/ci-environment/services/buildkite.ts index bb553f1..ef3f41c 100644 --- a/packages/core/src/ci-environment/services/buildkite.ts +++ b/packages/core/src/ci-environment/services/buildkite.ts @@ -19,6 +19,7 @@ const service: Service = { ? Number(env.BUILDKITE_PULL_REQUEST) : null, prHeadCommit: null, + prBaseBranch: null, nonce: env.BUILDKITE_BUILD_ID || null, }; }, diff --git a/packages/core/src/ci-environment/services/circleci.ts b/packages/core/src/ci-environment/services/circleci.ts index 1ef7ccb..cacc10c 100644 --- a/packages/core/src/ci-environment/services/circleci.ts +++ b/packages/core/src/ci-environment/services/circleci.ts @@ -26,6 +26,7 @@ const service: Service = { runAttempt: null, prNumber: getPrNumber({ env }), prHeadCommit: null, + prBaseBranch: null, nonce: env.CIRCLE_WORKFLOW_ID || env.CIRCLE_BUILD_NUM || null, }; }, diff --git a/packages/core/src/ci-environment/services/git.ts b/packages/core/src/ci-environment/services/git.ts index 6d77ed3..9d5688e 100644 --- a/packages/core/src/ci-environment/services/git.ts +++ b/packages/core/src/ci-environment/services/git.ts @@ -21,6 +21,7 @@ const service: Service = { runAttempt: null, prNumber: null, prHeadCommit: null, + prBaseBranch: null, nonce: null, }; }, diff --git a/packages/core/src/ci-environment/services/github-actions.ts b/packages/core/src/ci-environment/services/github-actions.ts index 5169d1c..25c3fd8 100644 --- a/packages/core/src/ci-environment/services/github-actions.ts +++ b/packages/core/src/ci-environment/services/github-actions.ts @@ -10,6 +10,10 @@ type EventPayload = { sha: string; ref: string; }; + base: { + sha: string; + ref: string; + }; number: number; }; deployment?: { @@ -159,6 +163,7 @@ const service: Service = { branch: pullRequest?.head.ref || payload.deployment.environment || null, prNumber: pullRequest?.number || null, prHeadCommit: pullRequest?.head.sha || null, + prBaseBranch: null, }; } @@ -168,6 +173,7 @@ const service: Service = { payload?.pull_request?.head.ref || getBranch(context, payload) || null, prNumber: payload?.pull_request?.number || null, prHeadCommit: payload?.pull_request?.head.sha ?? null, + prBaseBranch: payload?.pull_request?.base.ref ?? null, }; }, getMergeBaseCommitSha, diff --git a/packages/core/src/ci-environment/services/gitlab.ts b/packages/core/src/ci-environment/services/gitlab.ts index 51a04fe..6321798 100644 --- a/packages/core/src/ci-environment/services/gitlab.ts +++ b/packages/core/src/ci-environment/services/gitlab.ts @@ -16,6 +16,7 @@ const service: Service = { runAttempt: null, prNumber: null, prHeadCommit: null, + prBaseBranch: null, nonce: env.CI_PIPELINE_ID || null, }; }, diff --git a/packages/core/src/ci-environment/services/heroku.ts b/packages/core/src/ci-environment/services/heroku.ts index c98cd3b..e23f6ad 100644 --- a/packages/core/src/ci-environment/services/heroku.ts +++ b/packages/core/src/ci-environment/services/heroku.ts @@ -15,6 +15,7 @@ const service: Service = { runAttempt: null, prNumber: null, prHeadCommit: null, + prBaseBranch: null, nonce: env.HEROKU_TEST_RUN_ID || null, }), getMergeBaseCommitSha, diff --git a/packages/core/src/ci-environment/services/travis.ts b/packages/core/src/ci-environment/services/travis.ts index 798a91d..cc846ad 100644 --- a/packages/core/src/ci-environment/services/travis.ts +++ b/packages/core/src/ci-environment/services/travis.ts @@ -33,6 +33,7 @@ const service: Service = { runAttempt: null, prNumber: getPrNumber(ctx), prHeadCommit: null, + prBaseBranch: null, nonce: env.TRAVIS_BUILD_ID || null, }; }, diff --git a/packages/core/src/ci-environment/types.ts b/packages/core/src/ci-environment/types.ts index a630d0e..c27bb50 100644 --- a/packages/core/src/ci-environment/types.ts +++ b/packages/core/src/ci-environment/types.ts @@ -62,6 +62,11 @@ export interface CiEnvironment { */ prHeadCommit: string | null; + /** + * The branch name that the pull request is targeting. + */ + prBaseBranch: string | null; + /** * A unique string for each run of a particular workflow in a repository. */ diff --git a/packages/core/src/config.ts b/packages/core/src/config.ts index 8879afd..a5ad43c 100644 --- a/packages/core/src/config.ts +++ b/packages/core/src/config.ts @@ -85,6 +85,12 @@ const schema = { default: null, nullable: true, }, + prBaseBranch: { + env: "ARGOS_PR_BASE_BRANCH", + format: String, + default: null, + nullable: true, + }, parallel: { env: "ARGOS_PARALLEL", default: false, @@ -177,6 +183,7 @@ export interface Config { runAttempt: number | null; prNumber: number | null; prHeadCommit: string | null; + prBaseBranch: string | null; mode: "ci" | "monitoring" | null; ciProvider: string | null; threshold: number | null; @@ -202,6 +209,7 @@ export async function readConfig(options: Partial = {}) { prNumber: options.prNumber || config.get("prNumber") || ciEnv?.prNumber || null, prHeadCommit: config.get("prHeadCommit") || ciEnv?.prHeadCommit || null, + prBaseBranch: config.get("prBaseBranch") || ciEnv?.prBaseBranch || null, referenceBranch: options.referenceBranch || config.get("referenceBranch") || null, referenceCommit: diff --git a/packages/core/src/upload.ts b/packages/core/src/upload.ts index eb247ef..b064834 100644 --- a/packages/core/src/upload.ts +++ b/packages/core/src/upload.ts @@ -225,15 +225,17 @@ export async function upload(params: UploadParameters) { return null; } - const sha = getMergeBaseCommitSha({ - base: referenceBranch, - head: config.branch, - }); + // We use the pull request as base branch if possible. + const base = config.prBaseBranch || referenceBranch; + + const sha = getMergeBaseCommitSha({ base, head: config.branch }); + if (sha) { debug("Found reference commit from git", sha); } else { debug("No reference commit found in git"); } + return sha; })();