<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>21734</buildableDurationMillis><buildableTimeMillis>21734</buildableTimeMillis><buildingDurationMillis>48009</buildingDurationMillis><executingTimeMillis>48009</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>8517</waitingDurationMillis><waitingTimeMillis>8517</waitingTimeMillis></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><originmain _class='hudson.plugins.git.util.Build'><buildNumber>1868</buildNumber><marked><SHA1>5eb09603ade83a487a84556f31b2c9bccde9af1d</SHA1><branch><SHA1>5eb09603ade83a487a84556f31b2c9bccde9af1d</SHA1><name>origin/main</name></branch></marked><revision><SHA1>5eb09603ade83a487a84556f31b2c9bccde9af1d</SHA1><branch><SHA1>5eb09603ade83a487a84556f31b2c9bccde9af1d</SHA1><name>origin/main</name></branch></revision></originmain></buildsByBranchName><lastBuiltRevision><SHA1>5eb09603ade83a487a84556f31b2c9bccde9af1d</SHA1><branch><SHA1>5eb09603ade83a487a84556f31b2c9bccde9af1d</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>#1868</displayName><duration>48009</duration><estimatedDuration>39542</estimatedDuration><fullDisplayName>seed #1868</fullDisplayName><id>1868</id><inProgress>false</inProgress><keepLog>false</keepLog><number>1868</number><queueId>3694595</queueId><result>SUCCESS</result><timestamp>1783375743083</timestamp><url>https://do.pingcap.net/jenkins/job/seed/1868/</url><builtOn>default-r6g77</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>tekton/v1/triggers/triggers/env-gcp/kustomization.yaml</affectedPath><affectedPath>tekton/v1/triggers/triggers/env-gcp/_/github-pr-synchronized-remove-hold.yaml</affectedPath><commitId>5eb09603ade83a487a84556f31b2c9bccde9af1d</commitId><timestamp>1783375709000</timestamp><author><absoluteUrl>https://do.pingcap.net/jenkins/user/noreply</absoluteUrl><fullName>noreply</fullName></author><authorEmail>noreply@github.com</authorEmail><comment>feat(tekton): add trigger to auto-remove do-not-merge/hold on cherry-pick PRs (#4810)

## Summary

Add a new Tekton Trigger that auto-removes `do-not-merge/hold` from
cherry-pick PRs when conflicts are resolved (synchronize event).

## Changes

1. **NEW**
`tekton/v1/triggers/triggers/env-gcp/_/github-pr-synchronized-remove-hold.yaml`
— Trigger with CEL filter and inline TaskSpec that:
- Filters on `synchronize` action for 6 cherry-pick repos with
`release-*` base ref and `do-not-merge/hold` +
`type/cherry-pick-for-release-*` labels
- Polls `mergeable` state (up to 10 × 5s) — exits silently if still
CONFLICTING/UNKNOWN
- Checks `do-not-merge/hold` was added by `ti-chi-bot` or
`ti-chi-bot[bot]` via timeline API — human `/hold` is respected
   - Posts a tip comment then removes the label

2. **MODIFIED** `tekton/v1/triggers/triggers/env-gcp/kustomization.yaml`
— registered the new trigger

## Testing

- `kustomize build tekton/v1/triggers/triggers/env-gcp` succeeds
(verified via docker)
- `gh pr view` with `--json mergeable` polling handles GitHubs async
mergeable computation
- Cherry-pick repo set verified against `ti-community-cherrypicker`
config in `ti-community-infra/configs`

## Risk

Low. Purely additive — no changes to existing triggers. Removes label
only when all gates pass. Fails closed (keeps hold) on
CONFLICTING/UNKNOWN or non-bot labeler.

## Open Items

- Requirement #2 "tip before adding" — the add path is in prow config
(`ti-community-infra/configs`), not this repo. Out of scope for this PR;
separate ticket needed if still wanted.

---------

Signed-off-by: wuhuizuo &lt;wuhuizuo@126.com&gt;
</comment><date>2026-07-06 22:08:29 +0000</date><id>5eb09603ade83a487a84556f31b2c9bccde9af1d</id><msg>feat(tekton): add trigger to auto-remove do-not-merge/hold on</msg><path><editType>add</editType><file>tekton/v1/triggers/triggers/env-gcp/_/github-pr-synchronized-remove-hold.yaml</file></path><path><editType>edit</editType><file>tekton/v1/triggers/triggers/env-gcp/kustomization.yaml</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://do.pingcap.net/jenkins/user/noreply</absoluteUrl><fullName>noreply</fullName></culprit></freeStyleBuild>