From 05844b8e086b31bf6a40995a322c1b8ab4401410 Mon Sep 17 00:00:00 2001 From: Gernot Schulz Date: Thu, 6 Nov 2025 09:25:41 +0100 Subject: [PATCH] Merge pull request #29540 from overleaf/gs-jenkins-pr-build-tags-remote Check if Jenkins checkout revision exists on remote GitOrigin-RevId: cb110f5479836ccbfd1a62f501210dee6606d37e --- services/web/Jenkinsfile | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/services/web/Jenkinsfile b/services/web/Jenkinsfile index b73281d61e..51eb8cd614 100644 --- a/services/web/Jenkinsfile +++ b/services/web/Jenkinsfile @@ -30,9 +30,21 @@ pipeline { script { def relevantCommitHash if (env.CHANGE_BRANCH) { - echo "PR build detected. Jenkins checked out a merge commit: ${GIT_COMMIT}" - relevantCommitHash = sh(script: 'git rev-parse HEAD^1', returnStdout: true).trim() - echo "Found actual branch commit: ${relevantCommitHash}" + def commitExistsOnRemote = sh(script: "git branch --remotes --contains ${GIT_COMMIT}", returnStdout: true).trim() + if (commitExistsOnRemote) { + echo "PR build detected, but commit exists on remote. Using ${GIT_COMMIT}" + relevantCommitHash = "${GIT_COMMIT}" + } else { + def parentCommits = sh(script: 'git rev-parse HEAD^@', returnStdout: true).trim().split('\n') + if (parentCommits.size() >= 2) { + echo "PR build detected. Jenkins checked out a merge commit: ${GIT_COMMIT} (parents: ${parentCommits.join(', ')})" + relevantCommitHash = parentCommits[0] + echo "Using first parent (branch commit): ${relevantCommitHash}" + } else { + echo "WARN: PR build detected, but ${GIT_COMMIT} is neither a merge commit, nor does it exist on the remote." + relevantCommitHash = "${GIT_COMMIT}" + } + } } else { echo "Branch build detected. Using commit: ${GIT_COMMIT}" relevantCommitHash = "${GIT_COMMIT}"