From a4dff088245f2339beac854afd0a0abb60638ae2 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 28 Feb 2026 15:25:39 +0000 Subject: [PATCH 1/6] Initial plan From 4de60e6e4df494a195bc0b45d2f140952e2005e8 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 28 Feb 2026 15:42:04 +0000 Subject: [PATCH 2/6] feat(pipelines/tikv/migration): migrate artifacts from fileserver to OCI registry Co-authored-by: wuhuizuo <2574558+wuhuizuo@users.noreply.github.com> --- .../pod-pull_integration_kafka_test.yaml | 10 +++ .../latest/pod-pull_integration_test.yaml | 10 +++ .../latest/pull_integration_kafka_test.groovy | 19 ++++- .../latest/pull_integration_test.groovy | 19 ++++- .../migration/latest/pull_unit_test.groovy | 2 +- .../tikv/migration/latest-presubmits.yaml | 80 ++++++++++++------- 6 files changed, 108 insertions(+), 32 deletions(-) diff --git a/pipelines/tikv/migration/latest/pod-pull_integration_kafka_test.yaml b/pipelines/tikv/migration/latest/pod-pull_integration_kafka_test.yaml index 149a0f2117..171eacf625 100644 --- a/pipelines/tikv/migration/latest/pod-pull_integration_kafka_test.yaml +++ b/pipelines/tikv/migration/latest/pod-pull_integration_kafka_test.yaml @@ -72,6 +72,16 @@ spec: limits: memory: 128Mi cpu: 100m + - name: utils + image: ghcr.io/pingcap-qe/cd/utils/release:v2025.10.12-7-gfdd779c + tty: true + resources: + requests: + memory: 256Mi + cpu: 100m + limits: + cpu: "1" + memory: 4Gi volumes: - emptyDir: {} name: volume-0 diff --git a/pipelines/tikv/migration/latest/pod-pull_integration_test.yaml b/pipelines/tikv/migration/latest/pod-pull_integration_test.yaml index 6c4a2696a6..b9ec82e0ae 100644 --- a/pipelines/tikv/migration/latest/pod-pull_integration_test.yaml +++ b/pipelines/tikv/migration/latest/pod-pull_integration_test.yaml @@ -28,6 +28,16 @@ spec: limits: memory: 256Mi cpu: 100m + - name: utils + image: ghcr.io/pingcap-qe/cd/utils/release:v2025.10.12-7-gfdd779c + tty: true + resources: + requests: + memory: 256Mi + cpu: 100m + limits: + cpu: "1" + memory: 4Gi affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: diff --git a/pipelines/tikv/migration/latest/pull_integration_kafka_test.groovy b/pipelines/tikv/migration/latest/pull_integration_kafka_test.groovy index f78271873f..364f248a7a 100644 --- a/pipelines/tikv/migration/latest/pull_integration_kafka_test.groovy +++ b/pipelines/tikv/migration/latest/pull_integration_kafka_test.groovy @@ -8,6 +8,8 @@ final GIT_FULL_REPO_NAME = 'tikv/migration' final GIT_CREDENTIALS_ID = 'github-sre-bot-ssh' final POD_TEMPLATE_FILE = 'pipelines/tikv/migration/latest/pod-pull_integration_kafka_test.yaml' final REFS = readJSON(text: params.JOB_SPEC).refs +final OCI_TAG_TIKV = component.computeArtifactOciTagFromPR('tikv', REFS.base_ref, REFS.pulls[0].title, 'master') +final OCI_TAG_PD = component.computeArtifactOciTagFromPR('pd', REFS.base_ref, REFS.pulls[0].title, 'master') pipeline { agent { @@ -18,7 +20,10 @@ pipeline { } } environment { - FILE_SERVER_URL = 'http://fileserver.pingcap.net' + // OCI artifact registry: hub.pingcap.net + // tikv-server: hub.pingcap.net/tikv/tikv/package:_linux_amd64 + // pd-server: hub.pingcap.net/tikv/pd/package:_linux_amd64 + OCI_ARTIFACT_HOST = 'hub.pingcap.net' } options { timeout(time: 65, unit: 'MINUTES') @@ -66,10 +71,20 @@ pipeline { steps { dir('migration') { cache(path: "./cdc", includes: '**/*', key: "ws/${BUILD_TAG}/tikvcdc") { + container("utils") { + sh label: 'download test binaries via OCI', script: """ + mkdir -p ./cdc/bin + cd ./cdc/bin + ${WORKSPACE}/scripts/artifacts/download_pingcap_oci_artifact.sh \ + --tikv=${OCI_TAG_TIKV} \ + --pd=${OCI_TAG_PD} + chmod +x tikv-server pd-server + ls -alh + """ + } container("golang") { sh label: 'integration test prepare', script: """#!/usr/bin/env bash cd cdc/ - make prepare_test_binaries make check_third_party_binary make integration_test_build """ diff --git a/pipelines/tikv/migration/latest/pull_integration_test.groovy b/pipelines/tikv/migration/latest/pull_integration_test.groovy index a74a85aa28..06e5f278c3 100644 --- a/pipelines/tikv/migration/latest/pull_integration_test.groovy +++ b/pipelines/tikv/migration/latest/pull_integration_test.groovy @@ -8,6 +8,8 @@ final GIT_FULL_REPO_NAME = 'tikv/migration' final GIT_CREDENTIALS_ID = 'github-sre-bot-ssh' final POD_TEMPLATE_FILE = 'pipelines/tikv/migration/latest/pod-pull_integration_test.yaml' final REFS = readJSON(text: params.JOB_SPEC).refs +final OCI_TAG_TIKV = component.computeArtifactOciTagFromPR('tikv', REFS.base_ref, REFS.pulls[0].title, 'master') +final OCI_TAG_PD = component.computeArtifactOciTagFromPR('pd', REFS.base_ref, REFS.pulls[0].title, 'master') pipeline { agent { @@ -18,7 +20,10 @@ pipeline { } } environment { - FILE_SERVER_URL = 'http://fileserver.pingcap.net' + // OCI artifact registry: hub.pingcap.net + // tikv-server: hub.pingcap.net/tikv/tikv/package:_linux_amd64 + // pd-server: hub.pingcap.net/tikv/pd/package:_linux_amd64 + OCI_ARTIFACT_HOST = 'hub.pingcap.net' } options { timeout(time: 65, unit: 'MINUTES') @@ -66,10 +71,20 @@ pipeline { steps { dir('migration') { cache(path: "./cdc", includes: '**/*', key: "ws/${BUILD_TAG}/tikvcdc") { + container("utils") { + sh label: 'download test binaries via OCI', script: """ + mkdir -p ./cdc/bin + cd ./cdc/bin + ${WORKSPACE}/scripts/artifacts/download_pingcap_oci_artifact.sh \ + --tikv=${OCI_TAG_TIKV} \ + --pd=${OCI_TAG_PD} + chmod +x tikv-server pd-server + ls -alh + """ + } container("golang") { sh label: 'integration test prepare', script: """#!/usr/bin/env bash cd cdc/ - make prepare_test_binaries make check_third_party_binary make integration_test_build """ diff --git a/pipelines/tikv/migration/latest/pull_unit_test.groovy b/pipelines/tikv/migration/latest/pull_unit_test.groovy index 2345c6fc84..156b55e943 100644 --- a/pipelines/tikv/migration/latest/pull_unit_test.groovy +++ b/pipelines/tikv/migration/latest/pull_unit_test.groovy @@ -18,7 +18,7 @@ pipeline { } } environment { - FILE_SERVER_URL = 'http://fileserver.pingcap.net' + OCI_ARTIFACT_HOST = 'hub.pingcap.net' } options { timeout(time: 40, unit: 'MINUTES') diff --git a/prow-jobs/tikv/migration/latest-presubmits.yaml b/prow-jobs/tikv/migration/latest-presubmits.yaml index b755b798b0..fcd028e0c5 100644 --- a/prow-jobs/tikv/migration/latest-presubmits.yaml +++ b/prow-jobs/tikv/migration/latest-presubmits.yaml @@ -1,42 +1,68 @@ +global_definitions: + brancher: &brancher + branches: + - ^main$ + - ^cdc-release-.*$ + - ^br-release-.*$ + affinity: &affinity + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: kubernetes.io/arch + operator: In + values: + - amd64 + jenkins_job: &jenkins_job + agent: jenkins + labels: + master: "0" + decorate: false + # struct ref: https://pkg.go.dev/sigs.k8s.io/prow/pkg/config#Presubmit presubmits: tikv/migration: - - name: tikv/migration/pull_integration_test - agent: jenkins - labels: - master: "0" - decorate: false # need add this. + - <<: [*brancher, *jenkins_job] + name: tikv/migration/pull_integration_test always_run: true context: pull-integration-test trigger: "(?m)^/test (?:.*? )?pull-integration-test(?: .*?)?$" rerun_command: "/test pull-integration-test" - branches: - - ^main$ - - ^cdc-release-.*$ - - ^br-release-.*$ - - name: tikv/migration/pull_integration_kafka_test - agent: jenkins - labels: - master: "0" - decorate: false # need add this. + - <<: [*brancher, *jenkins_job] + name: tikv/migration/pull_integration_kafka_test always_run: true context: pull-integration-kafka-test trigger: "(?m)^/test (?:.*? )?pull-integration-kafka-test(?: .*?)?$" rerun_command: "/test pull-integration-kafka-test" - branches: - - ^main$ - - ^cdc-release-.*$ - - ^br-release-.*$ - - name: tikv/migration/pull_unit_test - agent: jenkins - labels: - master: "0" - decorate: false # need add this. + - <<: *brancher + name: pull-unit-test + agent: kubernetes + decorate: true always_run: true context: pull-unit-test trigger: "(?m)^/test (?:.*? )?pull-unit-test(?: .*?)?$" rerun_command: "/test pull-unit-test" - branches: - - ^main$ - - ^cdc-release-.*$ - - ^br-release-.*$ + spec: + containers: + - name: test + # OCI path: ghcr.io/pingcap-qe/ci/base:-go1.21 + image: ghcr.io/pingcap-qe/ci/base:v2024.10.8-81-gec616ff-go1.21 + command: [bash, -ce] + args: + - | + cd cdc/ + make unit_test_in_verify_ci + env: + - name: TIKV_MIGRATION_CODECOV_TOKEN + valueFrom: + secretKeyRef: + name: codecov-token-tikv-migration + key: token + resources: + requests: + memory: 8Gi + cpu: "4" + limits: + memory: 8Gi + cpu: "4" + affinity: *affinity From 21ce4b2bf7b4478b9ff3f83e3642e51611b804f1 Mon Sep 17 00:00:00 2001 From: wuhuizuo Date: Fri, 6 Mar 2026 18:03:40 +0800 Subject: [PATCH 3/6] ci(tikv/migration): revert pull-unit-test changes from oci migration pr --- .../migration/latest/pull_unit_test.groovy | 2 +- .../tikv/migration/latest-presubmits.yaml | 46 ++++--------------- 2 files changed, 10 insertions(+), 38 deletions(-) diff --git a/pipelines/tikv/migration/latest/pull_unit_test.groovy b/pipelines/tikv/migration/latest/pull_unit_test.groovy index 156b55e943..2345c6fc84 100644 --- a/pipelines/tikv/migration/latest/pull_unit_test.groovy +++ b/pipelines/tikv/migration/latest/pull_unit_test.groovy @@ -18,7 +18,7 @@ pipeline { } } environment { - OCI_ARTIFACT_HOST = 'hub.pingcap.net' + FILE_SERVER_URL = 'http://fileserver.pingcap.net' } options { timeout(time: 40, unit: 'MINUTES') diff --git a/prow-jobs/tikv/migration/latest-presubmits.yaml b/prow-jobs/tikv/migration/latest-presubmits.yaml index fcd028e0c5..d1548a52fd 100644 --- a/prow-jobs/tikv/migration/latest-presubmits.yaml +++ b/prow-jobs/tikv/migration/latest-presubmits.yaml @@ -4,15 +4,6 @@ global_definitions: - ^main$ - ^cdc-release-.*$ - ^br-release-.*$ - affinity: &affinity - nodeAffinity: - requiredDuringSchedulingIgnoredDuringExecution: - nodeSelectorTerms: - - matchExpressions: - - key: kubernetes.io/arch - operator: In - values: - - amd64 jenkins_job: &jenkins_job agent: jenkins labels: @@ -34,35 +25,16 @@ presubmits: context: pull-integration-kafka-test trigger: "(?m)^/test (?:.*? )?pull-integration-kafka-test(?: .*?)?$" rerun_command: "/test pull-integration-kafka-test" - - <<: *brancher - name: pull-unit-test - agent: kubernetes - decorate: true + - name: tikv/migration/pull_unit_test + agent: jenkins + labels: + master: "0" + decorate: false always_run: true context: pull-unit-test trigger: "(?m)^/test (?:.*? )?pull-unit-test(?: .*?)?$" rerun_command: "/test pull-unit-test" - spec: - containers: - - name: test - # OCI path: ghcr.io/pingcap-qe/ci/base:-go1.21 - image: ghcr.io/pingcap-qe/ci/base:v2024.10.8-81-gec616ff-go1.21 - command: [bash, -ce] - args: - - | - cd cdc/ - make unit_test_in_verify_ci - env: - - name: TIKV_MIGRATION_CODECOV_TOKEN - valueFrom: - secretKeyRef: - name: codecov-token-tikv-migration - key: token - resources: - requests: - memory: 8Gi - cpu: "4" - limits: - memory: 8Gi - cpu: "4" - affinity: *affinity + branches: + - ^main$ + - ^cdc-release-.*$ + - ^br-release-.*$ From 4e1f83f851c67bd006e6d466948819605970bb88 Mon Sep 17 00:00:00 2001 From: wuhuizuo Date: Fri, 6 Mar 2026 18:06:40 +0800 Subject: [PATCH 4/6] chore(tikv/migration): keep pull_unit_test stanza unchanged --- prow-jobs/tikv/migration/latest-presubmits.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/prow-jobs/tikv/migration/latest-presubmits.yaml b/prow-jobs/tikv/migration/latest-presubmits.yaml index d1548a52fd..682a670d60 100644 --- a/prow-jobs/tikv/migration/latest-presubmits.yaml +++ b/prow-jobs/tikv/migration/latest-presubmits.yaml @@ -29,7 +29,7 @@ presubmits: agent: jenkins labels: master: "0" - decorate: false + decorate: false # need add this. always_run: true context: pull-unit-test trigger: "(?m)^/test (?:.*? )?pull-unit-test(?: .*?)?$" From 28235e5d3441161145a781eeac038cc360e35ef3 Mon Sep 17 00:00:00 2001 From: wuhuizuo Date: Fri, 6 Mar 2026 18:27:14 +0800 Subject: [PATCH 5/6] ci(tikv/migration): point OCI_ARTIFACT_HOST to hub-zot mirror --- .../migration/latest/pull_integration_kafka_test.groovy | 8 ++++---- .../tikv/migration/latest/pull_integration_test.groovy | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/pipelines/tikv/migration/latest/pull_integration_kafka_test.groovy b/pipelines/tikv/migration/latest/pull_integration_kafka_test.groovy index 364f248a7a..e441b14eff 100644 --- a/pipelines/tikv/migration/latest/pull_integration_kafka_test.groovy +++ b/pipelines/tikv/migration/latest/pull_integration_kafka_test.groovy @@ -20,10 +20,10 @@ pipeline { } } environment { - // OCI artifact registry: hub.pingcap.net - // tikv-server: hub.pingcap.net/tikv/tikv/package:_linux_amd64 - // pd-server: hub.pingcap.net/tikv/pd/package:_linux_amd64 - OCI_ARTIFACT_HOST = 'hub.pingcap.net' + // OCI artifact registry: hub-zot.pingcap.net/mirrors/hub + // tikv-server: hub-zot.pingcap.net/mirrors/hub/tikv/tikv/package:_linux_amd64 + // pd-server: hub-zot.pingcap.net/mirrors/hub/tikv/pd/package:_linux_amd64 + OCI_ARTIFACT_HOST = 'hub-zot.pingcap.net/mirrors/hub' } options { timeout(time: 65, unit: 'MINUTES') diff --git a/pipelines/tikv/migration/latest/pull_integration_test.groovy b/pipelines/tikv/migration/latest/pull_integration_test.groovy index 06e5f278c3..07a2022858 100644 --- a/pipelines/tikv/migration/latest/pull_integration_test.groovy +++ b/pipelines/tikv/migration/latest/pull_integration_test.groovy @@ -20,10 +20,10 @@ pipeline { } } environment { - // OCI artifact registry: hub.pingcap.net - // tikv-server: hub.pingcap.net/tikv/tikv/package:_linux_amd64 - // pd-server: hub.pingcap.net/tikv/pd/package:_linux_amd64 - OCI_ARTIFACT_HOST = 'hub.pingcap.net' + // OCI artifact registry: hub-zot.pingcap.net/mirrors/hub + // tikv-server: hub-zot.pingcap.net/mirrors/hub/tikv/tikv/package:_linux_amd64 + // pd-server: hub-zot.pingcap.net/mirrors/hub/tikv/pd/package:_linux_amd64 + OCI_ARTIFACT_HOST = 'hub-zot.pingcap.net/mirrors/hub' } options { timeout(time: 65, unit: 'MINUTES') From 4f85537393bef5951dc0c9fb487048a01dca4a36 Mon Sep 17 00:00:00 2001 From: wuhuizuo Date: Fri, 6 Mar 2026 18:45:26 +0800 Subject: [PATCH 6/6] fix(pipelines/tikv/migration): cover prepare_test_binaries artifacts in OCI step --- .../latest/pull_integration_kafka_test.groovy | 18 ++++++++++++++---- .../latest/pull_integration_test.groovy | 18 ++++++++++++++---- 2 files changed, 28 insertions(+), 8 deletions(-) diff --git a/pipelines/tikv/migration/latest/pull_integration_kafka_test.groovy b/pipelines/tikv/migration/latest/pull_integration_kafka_test.groovy index e441b14eff..dda18d391d 100644 --- a/pipelines/tikv/migration/latest/pull_integration_kafka_test.groovy +++ b/pipelines/tikv/migration/latest/pull_integration_kafka_test.groovy @@ -8,8 +8,11 @@ final GIT_FULL_REPO_NAME = 'tikv/migration' final GIT_CREDENTIALS_ID = 'github-sre-bot-ssh' final POD_TEMPLATE_FILE = 'pipelines/tikv/migration/latest/pod-pull_integration_kafka_test.yaml' final REFS = readJSON(text: params.JOB_SPEC).refs +final OCI_TAG_TIDB = component.computeArtifactOciTagFromPR('tidb', REFS.base_ref, REFS.pulls[0].title, 'master') final OCI_TAG_TIKV = component.computeArtifactOciTagFromPR('tikv', REFS.base_ref, REFS.pulls[0].title, 'master') final OCI_TAG_PD = component.computeArtifactOciTagFromPR('pd', REFS.base_ref, REFS.pulls[0].title, 'master') +final OCI_TAG_ETCD = 'v3.5.15' +final OCI_TAG_YCSB = 'v1.0.3' pipeline { agent { @@ -21,6 +24,7 @@ pipeline { } environment { // OCI artifact registry: hub-zot.pingcap.net/mirrors/hub + // tidb-server: hub-zot.pingcap.net/mirrors/hub/pingcap/tidb/package:_linux_amd64 // tikv-server: hub-zot.pingcap.net/mirrors/hub/tikv/tikv/package:_linux_amd64 // pd-server: hub-zot.pingcap.net/mirrors/hub/tikv/pd/package:_linux_amd64 OCI_ARTIFACT_HOST = 'hub-zot.pingcap.net/mirrors/hub' @@ -73,12 +77,18 @@ pipeline { cache(path: "./cdc", includes: '**/*', key: "ws/${BUILD_TAG}/tikvcdc") { container("utils") { sh label: 'download test binaries via OCI', script: """ - mkdir -p ./cdc/bin - cd ./cdc/bin + mkdir -p ./cdc/scripts/bin + cd ./cdc/scripts/bin ${WORKSPACE}/scripts/artifacts/download_pingcap_oci_artifact.sh \ + --tidb=${OCI_TAG_TIDB} \ --tikv=${OCI_TAG_TIKV} \ - --pd=${OCI_TAG_PD} - chmod +x tikv-server pd-server + --pd=${OCI_TAG_PD} \ + --pd-ctl=${OCI_TAG_PD} \ + --etcdctl=${OCI_TAG_ETCD} \ + --ycsb=${OCI_TAG_YCSB} + chmod +x tidb-server tikv-server pd-server pd-ctl etcdctl go-ycsb + cd ../../ + touch prepare_test_binaries ls -alh """ } diff --git a/pipelines/tikv/migration/latest/pull_integration_test.groovy b/pipelines/tikv/migration/latest/pull_integration_test.groovy index 07a2022858..7c8e7b334c 100644 --- a/pipelines/tikv/migration/latest/pull_integration_test.groovy +++ b/pipelines/tikv/migration/latest/pull_integration_test.groovy @@ -8,8 +8,11 @@ final GIT_FULL_REPO_NAME = 'tikv/migration' final GIT_CREDENTIALS_ID = 'github-sre-bot-ssh' final POD_TEMPLATE_FILE = 'pipelines/tikv/migration/latest/pod-pull_integration_test.yaml' final REFS = readJSON(text: params.JOB_SPEC).refs +final OCI_TAG_TIDB = component.computeArtifactOciTagFromPR('tidb', REFS.base_ref, REFS.pulls[0].title, 'master') final OCI_TAG_TIKV = component.computeArtifactOciTagFromPR('tikv', REFS.base_ref, REFS.pulls[0].title, 'master') final OCI_TAG_PD = component.computeArtifactOciTagFromPR('pd', REFS.base_ref, REFS.pulls[0].title, 'master') +final OCI_TAG_ETCD = 'v3.5.15' +final OCI_TAG_YCSB = 'v1.0.3' pipeline { agent { @@ -21,6 +24,7 @@ pipeline { } environment { // OCI artifact registry: hub-zot.pingcap.net/mirrors/hub + // tidb-server: hub-zot.pingcap.net/mirrors/hub/pingcap/tidb/package:_linux_amd64 // tikv-server: hub-zot.pingcap.net/mirrors/hub/tikv/tikv/package:_linux_amd64 // pd-server: hub-zot.pingcap.net/mirrors/hub/tikv/pd/package:_linux_amd64 OCI_ARTIFACT_HOST = 'hub-zot.pingcap.net/mirrors/hub' @@ -73,12 +77,18 @@ pipeline { cache(path: "./cdc", includes: '**/*', key: "ws/${BUILD_TAG}/tikvcdc") { container("utils") { sh label: 'download test binaries via OCI', script: """ - mkdir -p ./cdc/bin - cd ./cdc/bin + mkdir -p ./cdc/scripts/bin + cd ./cdc/scripts/bin ${WORKSPACE}/scripts/artifacts/download_pingcap_oci_artifact.sh \ + --tidb=${OCI_TAG_TIDB} \ --tikv=${OCI_TAG_TIKV} \ - --pd=${OCI_TAG_PD} - chmod +x tikv-server pd-server + --pd=${OCI_TAG_PD} \ + --pd-ctl=${OCI_TAG_PD} \ + --etcdctl=${OCI_TAG_ETCD} \ + --ycsb=${OCI_TAG_YCSB} + chmod +x tidb-server tikv-server pd-server pd-ctl etcdctl go-ycsb + cd ../../ + touch prepare_test_binaries ls -alh """ }