<freeStyleBuild _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='com.cloudbees.jenkins.GitHubPushCause'><shortDescription>Started by GitHub push by ti-chi-bot[bot]</shortDescription></cause><cause _class='com.cloudbees.jenkins.GitHubPushCause'><shortDescription>Started by GitHub push by ti-chi-bot[bot]</shortDescription></cause></action><action></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>20086</buildableDurationMillis><buildableTimeMillis>20086</buildableTimeMillis><buildingDurationMillis>43215</buildingDurationMillis><executingTimeMillis>43215</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>6535</waitingDurationMillis><waitingTimeMillis>6535</waitingTimeMillis></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><originmain _class='hudson.plugins.git.util.Build'><buildNumber>1611</buildNumber><marked><SHA1>bbfd59ceb879c0cf98ae905135f25d05824d2aaa</SHA1><branch><SHA1>bbfd59ceb879c0cf98ae905135f25d05824d2aaa</SHA1><name>origin/main</name></branch></marked><revision><SHA1>bbfd59ceb879c0cf98ae905135f25d05824d2aaa</SHA1><branch><SHA1>bbfd59ceb879c0cf98ae905135f25d05824d2aaa</SHA1><name>origin/main</name></branch></revision></originmain></buildsByBranchName><lastBuiltRevision><SHA1>bbfd59ceb879c0cf98ae905135f25d05824d2aaa</SHA1><branch><SHA1>bbfd59ceb879c0cf98ae905135f25d05824d2aaa</SHA1><name>origin/main</name></branch></lastBuiltRevision><remoteUrl>https://github.com/PingCAP-QE/ci.git</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#1611</displayName><duration>43215</duration><estimatedDuration>44870</estimatedDuration><fullDisplayName>seed #1611</fullDisplayName><id>1611</id><inProgress>false</inProgress><keepLog>false</keepLog><number>1611</number><queueId>3665215</queueId><result>SUCCESS</result><timestamp>1776077707144</timestamp><url>https://do.pingcap.net/jenkins/job/seed/1611/</url><builtOn>default-cqg55</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>pipelines/pingcap/tidb/release-8.5/pull_unit_test_ddlv1.groovy</affectedPath><affectedPath>pipelines/pingcap/tidb/release-8.3/pull_unit_test.groovy</affectedPath><affectedPath>pipelines/pingcap/tidb/release-7.3/ghpr_check.groovy</affectedPath><affectedPath>pipelines/pingcap-inc/tidb/release-8.5/pull_unit_test_ddlv1.groovy</affectedPath><affectedPath>pipelines/pingcap/tidb/release-7.1/ghpr_unit_test.groovy</affectedPath><affectedPath>pipelines/pingcap/tidb/release-8.5/pull_build.groovy</affectedPath><affectedPath>pipelines/pingcap/tidb/release-8.2/pull_unit_test.groovy</affectedPath><affectedPath>pipelines/pingcap/tidb/release-7.2/ghpr_build.groovy</affectedPath><affectedPath>pipelines/pingcap/tidb/release-8.5/pull_check.groovy</affectedPath><affectedPath>pipelines/pingcap/tiflash/release-9.0-beta/pull_integration_test.groovy</affectedPath><affectedPath>pipelines/pingcap/tidb/release-8.0/ghpr_check.groovy</affectedPath><affectedPath>pipelines/pingcap/tidb/release-9.0-beta/pull_unit_test.groovy</affectedPath><affectedPath>pipelines/pingcap/tidb/release-7.1/ghpr_build.groovy</affectedPath><affectedPath>pipelines/pingcap/tidb/release-7.5/ghpr_check.groovy</affectedPath><affectedPath>pipelines/pingcap/tidb/release-7.3/ghpr_unit_test.groovy</affectedPath><affectedPath>pipelines/pingcap/tidb/release-7.2/ghpr_unit_test.groovy</affectedPath><affectedPath>pipelines/pingcap/tidb/release-8.4/pull_check.groovy</affectedPath><affectedPath>pipelines/pingcap/tidb/release-7.6/ghpr_build.groovy</affectedPath><affectedPath>pipelines/pingcap/tidb/release-9.0-beta/pull_unit_test_ddlv1.groovy</affectedPath><affectedPath>pipelines/pingcap/tidb/release-7.4/ghpr_check.groovy</affectedPath><affectedPath>pipelines/pingcap/tidb/release-7.6/ghpr_check.groovy</affectedPath><affectedPath>pipelines/pingcap/tidb/release-8.1/ghpr_build.groovy</affectedPath><affectedPath>pipelines/pingcap/tiflash/latest/pull_unit_next_gen.groovy</affectedPath><affectedPath>pipelines/pingcap/tidb/release-8.3/pull_check.groovy</affectedPath><affectedPath>pipelines/pingcap/tidb/release-8.0/ghpr_unit_test.groovy</affectedPath><affectedPath>pipelines/pingcap/tidb/release-7.6/ghpr_unit_test.groovy</affectedPath><affectedPath>pipelines/pingcap-inc/tidb/release-8.5/pull_check.groovy</affectedPath><affectedPath>pipelines/pingcap/tidb/release-7.5/ghpr_unit_test.groovy</affectedPath><affectedPath>pipelines/pingcap/tidb/release-8.2/pull_build.groovy</affectedPath><affectedPath>pipelines/pingcap/tiflash/latest/pull_unit_test.groovy</affectedPath><affectedPath>pipelines/pingcap/tidb/release-9.0-beta/pull_build.groovy</affectedPath><affectedPath>pipelines/pingcap/tiflash/latest/pull_integration_test.groovy</affectedPath><affectedPath>pipelines/pingcap/tidb/latest/pull_integration_e2e_test_next_gen/pipeline.groovy</affectedPath><affectedPath>pipelines/pingcap/tiflash/latest/pull_integration_next_gen.groovy</affectedPath><affectedPath>pipelines/pingcap-inc/tidb/release-8.5/pull_build.groovy</affectedPath><affectedPath>pipelines/pingcap/tidb/release-7.5/ghpr_build.groovy</affectedPath><affectedPath>pipelines/pingcap/tidb/release-8.0/ghpr_build.groovy</affectedPath><affectedPath>pipelines/pingcap/tidb/release-8.1/ghpr_check.groovy</affectedPath><affectedPath>pipelines/pingcap/tidb/release-7.4/ghpr_unit_test.groovy</affectedPath><affectedPath>pipelines/pingcap/tidb/release-8.2/pull_check.groovy</affectedPath><affectedPath>pipelines/pingcap/tidb/release-8.4/pull_build.groovy</affectedPath><affectedPath>pipelines/pingcap/tidb/release-7.2/ghpr_check.groovy</affectedPath><affectedPath>pipelines/pingcap/tidb/release-8.5/pull_unit_test.groovy</affectedPath><affectedPath>pipelines/pingcap/tidb/release-7.4/ghpr_build.groovy</affectedPath><affectedPath>pipelines/pingcap/tiflash/release-9.0-beta/pull_unit_test.groovy</affectedPath><affectedPath>pipelines/pingcap-inc/tidb/release-8.5/pull_unit_test.groovy</affectedPath><affectedPath>pipelines/pingcap/tidb/release-8.4/pull_unit_test.groovy</affectedPath><affectedPath>pipelines/pingcap/tidb/release-8.3/pull_build.groovy</affectedPath><affectedPath>pipelines/pingcap/tidb/release-9.0-beta/pull_check.groovy</affectedPath><affectedPath>pipelines/pingcap/tidb/release-8.1/ghpr_unit_test.groovy</affectedPath><affectedPath>pipelines/pingcap/tidb/release-7.1/ghpr_check.groovy</affectedPath><affectedPath>pipelines/pingcap/tidb/release-7.3/ghpr_build.groovy</affectedPath><commitId>bbfd59ceb879c0cf98ae905135f25d05824d2aaa</commitId><timestamp>1776077676000</timestamp><author><absoluteUrl>https://do.pingcap.net/jenkins/user/noreply</absoluteUrl><fullName>noreply</fullName></author><authorEmail>noreply@github.com</authorEmail><comment>security: avoid persisting GitHub SSH keys in PR pipelines (#4477)

## Summary
- remove `git.setSshKey(GIT_CREDENTIALS_ID)` from PR / ghpr pipelines
that run untrusted repository code
- keep private-repo access scoped to the checkout step via
`prow.checkoutRefs(..., credentialsId = GIT_CREDENTIALS_ID, ...)`
- switch the affected TiFlash PR pipelines from empty checkout
credentials to checkout-scoped SSH credentials so submodule/private
fetch still works without leaving a reusable key on disk

## Risk Being Fixed
The audited PR pipelines cloned private repositories or private
submodules with the `github-sre-bot-ssh` credential and then persisted
the SSH private key into `~/.ssh/id_rsa` via `git.setSshKey()`.

Once that happened, build/test scripts coming from the target PR
repository could reuse the same key to:
- print or copy the key material
- clone additional private repositories
- push new refs or delete remote refs that the key can access

This PR removes that persistent-key path from PR jobs and narrows
credential availability to the checkout helper's `sshagent` scope.

## Audit Notes
Confirmed safe patterns that were left unchanged:
- `prow.checkoutRefs(..., credentialsId = GIT_CREDENTIALS_ID, ...)`
because it scopes SSH auth to the checkout helper
- `component.checkout(...)` / `checkoutPRWithPreMerge(...)` because they
use Jenkins checkout or `sshagent` during checkout only
- legacy `jenkins/` GitSCM checkouts that use `credentialsId` without
copying keys into `~/.ssh/id_rsa`

## Validation
- `git diff --check`
- verified no PR / ghpr pipeline under `pipelines/` still contains
`git.setSshKey(...)`
- verified the TiFlash PR jobs that previously relied on
`git.setSshKey()` now use checkout-scoped credentials instead of
`credentialsId = ''`

## Scope
This intentionally updates PR / ghpr pipelines only. Remaining
`git.setSshKey()` usage is in merged / trusted jobs and can be reviewed
separately if we want to remove that pattern repo-wide later.
</comment><date>2026-04-13 10:54:36 +0000</date><id>bbfd59ceb879c0cf98ae905135f25d05824d2aaa</id><msg>security: avoid persisting GitHub SSH keys in PR pipelines (#4477)</msg><path><editType>edit</editType><file>pipelines/pingcap/tidb/release-7.5/ghpr_unit_test.groovy</file></path><path><editType>edit</editType><file>pipelines/pingcap/tidb/release-7.2/ghpr_unit_test.groovy</file></path><path><editType>edit</editType><file>pipelines/pingcap/tidb/release-7.4/ghpr_build.groovy</file></path><path><editType>edit</editType><file>pipelines/pingcap/tidb/release-8.5/pull_build.groovy</file></path><path><editType>edit</editType><file>pipelines/pingcap/tiflash/latest/pull_unit_next_gen.groovy</file></path><path><editType>edit</editType><file>pipelines/pingcap/tidb/release-7.4/ghpr_unit_test.groovy</file></path><path><editType>edit</editType><file>pipelines/pingcap/tidb/release-8.0/ghpr_check.groovy</file></path><path><editType>edit</editType><file>pipelines/pingcap/tiflash/latest/pull_unit_test.groovy</file></path><path><editType>edit</editType><file>pipelines/pingcap/tidb/release-8.0/ghpr_unit_test.groovy</file></path><path><editType>edit</editType><file>pipelines/pingcap/tidb/release-7.6/ghpr_check.groovy</file></path><path><editType>edit</editType><file>pipelines/pingcap/tidb/release-8.4/pull_check.groovy</file></path><path><editType>edit</editType><file>pipelines/pingcap/tidb/release-8.3/pull_check.groovy</file></path><path><editType>edit</editType><file>pipelines/pingcap/tiflash/latest/pull_integration_test.groovy</file></path><path><editType>edit</editType><file>pipelines/pingcap-inc/tidb/release-8.5/pull_build.groovy</file></path><path><editType>edit</editType><file>pipelines/pingcap/tidb/release-7.3/ghpr_unit_test.groovy</file></path><path><editType>edit</editType><file>pipelines/pingcap/tidb/release-8.1/ghpr_build.groovy</file></path><path><editType>edit</editType><file>pipelines/pingcap/tidb/release-8.3/pull_build.groovy</file></path><path><editType>edit</editType><file>pipelines/pingcap/tiflash/latest/pull_integration_next_gen.groovy</file></path><path><editType>edit</editType><file>pipelines/pingcap/tidb/release-7.6/ghpr_unit_test.groovy</file></path><path><editType>edit</editType><file>pipelines/pingcap/tidb/release-7.1/ghpr_check.groovy</file></path><path><editType>edit</editType><file>pipelines/pingcap-inc/tidb/release-8.5/pull_unit_test.groovy</file></path><path><editType>edit</editType><file>pipelines/pingcap/tidb/release-8.0/ghpr_build.groovy</file></path><path><editType>edit</editType><file>pipelines/pingcap/tidb/release-7.2/ghpr_check.groovy</file></path><path><editType>edit</editType><file>pipelines/pingcap/tidb/release-8.2/pull_unit_test.groovy</file></path><path><editType>edit</editType><file>pipelines/pingcap/tidb/latest/pull_integration_e2e_test_next_gen/pipeline.groovy</file></path><path><editType>edit</editType><file>pipelines/pingcap/tidb/release-7.3/ghpr_build.groovy</file></path><path><editType>edit</editType><file>pipelines/pingcap/tidb/release-9.0-beta/pull_unit_test.groovy</file></path><path><editType>edit</editType><file>pipelines/pingcap/tidb/release-7.3/ghpr_check.groovy</file></path><path><editType>edit</editType><file>pipelines/pingcap-inc/tidb/release-8.5/pull_unit_test_ddlv1.groovy</file></path><path><editType>edit</editType><file>pipelines/pingcap/tidb/release-9.0-beta/pull_unit_test_ddlv1.groovy</file></path><path><editType>edit</editType><file>pipelines/pingcap/tidb/release-9.0-beta/pull_check.groovy</file></path><path><editType>edit</editType><file>pipelines/pingcap/tidb/release-8.2/pull_check.groovy</file></path><path><editType>edit</editType><file>pipelines/pingcap/tidb/release-8.5/pull_unit_test_ddlv1.groovy</file></path><path><editType>edit</editType><file>pipelines/pingcap/tidb/release-7.2/ghpr_build.groovy</file></path><path><editType>edit</editType><file>pipelines/pingcap/tidb/release-7.5/ghpr_build.groovy</file></path><path><editType>edit</editType><file>pipelines/pingcap/tiflash/release-9.0-beta/pull_unit_test.groovy</file></path><path><editType>edit</editType><file>pipelines/pingcap/tidb/release-8.5/pull_unit_test.groovy</file></path><path><editType>edit</editType><file>pipelines/pingcap/tidb/release-8.3/pull_unit_test.groovy</file></path><path><editType>edit</editType><file>pipelines/pingcap/tiflash/release-9.0-beta/pull_integration_test.groovy</file></path><path><editType>edit</editType><file>pipelines/pingcap/tidb/release-8.4/pull_build.groovy</file></path><path><editType>edit</editType><file>pipelines/pingcap/tidb/release-9.0-beta/pull_build.groovy</file></path><path><editType>edit</editType><file>pipelines/pingcap/tidb/release-7.6/ghpr_build.groovy</file></path><path><editType>edit</editType><file>pipelines/pingcap-inc/tidb/release-8.5/pull_check.groovy</file></path><path><editType>edit</editType><file>pipelines/pingcap/tidb/release-8.2/pull_build.groovy</file></path><path><editType>edit</editType><file>pipelines/pingcap/tidb/release-8.5/pull_check.groovy</file></path><path><editType>edit</editType><file>pipelines/pingcap/tidb/release-7.1/ghpr_build.groovy</file></path><path><editType>edit</editType><file>pipelines/pingcap/tidb/release-8.4/pull_unit_test.groovy</file></path><path><editType>edit</editType><file>pipelines/pingcap/tidb/release-7.1/ghpr_unit_test.groovy</file></path><path><editType>edit</editType><file>pipelines/pingcap/tidb/release-7.4/ghpr_check.groovy</file></path><path><editType>edit</editType><file>pipelines/pingcap/tidb/release-7.5/ghpr_check.groovy</file></path><path><editType>edit</editType><file>pipelines/pingcap/tidb/release-8.1/ghpr_check.groovy</file></path><path><editType>edit</editType><file>pipelines/pingcap/tidb/release-8.1/ghpr_unit_test.groovy</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://do.pingcap.net/jenkins/user/noreply</absoluteUrl><fullName>noreply</fullName></culprit></freeStyleBuild>