1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-TiDB-Operator

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
CONTRIBUTING.md 11 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 24.05.2025 08:00 155e32c

Руководство по разработке TiDB Operator

Предварительные требования

Установите Go 1.23.x. Если вы хотите запускать TiDB Operator локально, также установите последнюю версию Docker, kind, kubectl и Helm.

Процесс работы

Шаг 1: Создание форка TiDB Operator на GitHub

Посетите https://github.com/pingcap/tidb-operator

Нажмите кнопку Fork (в верхнем правом углу), чтобы создать облачный форк.

Шаг 2: Клонирование форка на локальную машину

Определите локальное рабочее пространство:

$ working_dir=$GOPATH/src/github.com/pingcap

Установите user, чтобы он соответствовал вашему имени профиля на GitHub:

$ user={ваше имя профиля на GitHub}

Создайте свой клон:

$ mkdir -p $working_dir
$ cd $working_dir
$ git clone git@github.com:$user/tidb-operator.git

Установите ваш клон для отслеживания основного репозитория.

$ cd $working_dir/tidb-operator
$ git remote add upstream https://github.com/pingcap/tidb-operator

Так как у вас нет прав на запись в основной репозиторий, вам нужно отключить отправку на основной репозиторий:

$ git remote set-url --push upstream no_push
$ git remote -v

Выход должен выглядеть следующим образом:

origin    git@github.com:$(user)/tidb-operator.git (fetch)
origin    git@github.com:$(user)/tidb-operator.git (push)
upstream  https://github.com/pingcap/tidb-operator (fetch)
upstream  no_push (push)

Шаг 3: Создание ветки

Обновите ваш локальный мастер до последней версии:```sh $ cd $working_dir/tidb-operator $ git fetch upstream $ git checkout master $ git rebase upstream/master


Создайте ветку от мастера:

```sh
$ git checkout -b myfeature

Шаг 4: Разработка

Редактирование кода

Теперь вы можете редактировать код на ветке myfeature.

Проверка

Во-первых, убедитесь, что у вас установлен jq.

Запустите следующие команды для проверки изменений вашего кода.

$ make check

Это покажет ошибки, если ваши изменения кода не проходят проверки (например, форматирование, линтер). Пожалуйста, исправьте их перед отправкой PR.

Если вы изменяете код, связанный с CRD, например, определения типов в pkg/apis/pingcap/v1alpha1/types.go, также запустите следующие команды для генерации необходимого кода и артефактов.

$ make generate

Запуск TiDB Operator локально и выполнение ручных тестов

Во-первых, вам необходимо установить Docker и запустить его.

Мы используем kind для запуска локальной кластера Kubernetes и kubectl должен быть установлен для доступа к кластеру Kubernetes.

Вы можете обратиться к их официальной документации для установки на вашем компьютере, или выполнить следующую команду для установки их в нашу локальную директорию бинарников: output/bin.

$ ./hack/local-up-operator.sh -i
$ export PATH=$(pwd)/output/bin:$PATH
```Убедитесь, что они установлены правильно:

```sh
$ kind --version
...
$ kubectl version --client
...

Создайте кластер Kubernetes с помощью kind:

$ kind create cluster

Соберите и запустите tidb-operator:

$ ./hack/local-up-operator.sh

Запустите базовый кластер TiDB:

$ kubectl apply -f examples/basic/tidb-cluster.yaml

Выполнение юнит-тестов

Перед запуском вашего кода в реальном кластере Kubernetes убедитесь, что он проходит все (более 1300) юнит-тестов.

$ make test

Выполнение e2e тестов

Теперь вы можете выполнить следующую команду для запуска всех e2e тестов.

$ ./hack/e2e.sh
```> **Примечание:**
>
> - Вы можете выполнить `make docker`, если хотите только собрать образы.
> - Запуск всех e2e тестов обычно занимает несколько часов и потребляет много системных ресурсов, поэтому лучше ограничить количество запускаемых спецификаций, например: `./hack/e2e.sh -- --ginkgo.focus='Basic'`.
> - Можно переиспользовать кластер kind, например, передать `SKIP_DOWN=y` в первый раз и передать `SKIP_UP=y SKIP_DOWN=y` позже.
> - Если вы настроили несколько репозиториев реестра Docker, убедитесь, что используется Docker Hub при сборке образов.
> - Bash версии < 4 не поддерживаются в данный момент. Для тех, кто использует не поддерживаемую версию bash, особенно пользователей macOS (у которых по умолчанию версия bash 3.2), рекомендуется запустить контейнеризированную среду с помощью `hack/run-in-container.sh` или установить bash 4+ вручную. Вы можете запустить несколько терминалов и выполнить `./hack/run-in-container.sh` для входа в тот же контейнер для отладки. Вызов `./hack/run-in-container.sh -h` для просмотра справки. Запустите следующую команду для получения справки:```sh
$ ./hack/e2e.sh -h

Аргументы для некоторых e2e тестовых сценариев, выполняемых в нашей CI (включая более 180 случаев):

  • pull-e2e-kind: --ginkgo.focus='DMCluster|TiDBCluster' --ginkgo.skip='\[TiDBCluster:\sBasic\]'
  • pull-e2e-kind-across-kubernetes: --ginkgo.focus='\[Across\sKubernetes\]' --install-dm-mysql=false
  • pull-e2e-kind-serial: --ginkgo.focus='\[Serial\]' --install-operator=false
  • pull-e2e-kind-tikv-scale-simultaneously: --ginkgo.focus='Scale\sin\ssimultaneously'
  • pull-e2e-kind-tngm: --ginkgo.focus='TiDBNGMonitoring'
  • pull-e2e-kind-br: --ginkgo.focus='Backup\sand\sRestore'
  • pull-e2e-kind-basic: --ginkgo.focus='\[TiDBCluster:\sBasic\]' --install-dm-mysql=false

В комментариях к PR вы можете запустить /test ${case-name} (например /test pull-e2e-kind), чтобы запустить сценарий вручную.

Шаг 5: Сохранение ветки в актуальном состоянии

При работе на ветке myfeature выполните следующие команды:

$ git fetch upstream
$ git rebase upstream/master

Шаг 6: Коммит

Перед тем как сделать коммит, убедитесь, что все проверки и юнит-тесты пройдены:

$ make check
$ make test

Затем сделайте коммит ваших изменений.

$ git commit

Вероятно, вам придется несколько раз редактировать, сборку и тестирование, прежде чем сделать commit --amend.

Шаг 7: Пуш

Когда ваш коммит готов для проверки (или просто для создания внешнего резервного копирования), запушьте вашу ветку на ваш форк на github.com:

$ git push -f origin myfeature

Шаг 8: Создание pull request1. Посетите ваш форк по адресу https://github.com/$user/tidb-operator (замените $user соответственно).

  1. Нажмите кнопку Compare & pull request рядом с вашей веткой myfeature.
  2. Редактируйте описание pull request, чтобы оно соответствовало вашим изменениям. Если ваш pull request вносит изменения, влияющие на пользователя, требуется записать заметку о выпуске.> Вы можете обратиться к руководству по стилю языка для заметок о выпуске для правильного оформления заметок о выпуске.

Шаг 9: Получение код-ревью

Как только ваш pull request будет открыт, он будет назначен как минимум двум проверяющим. Эти проверяющие проведут тщательный код-ревью, проверяя правильность, наличие ошибок, возможности для улучшения, документацию и комментарии, а также стиль.

Сделайте коммит изменений, внесенных в ответ на комментарии проверяющих, на ту же ветку на вашем форке. Очень маленькие pull requests легко проверять. Очень большие pull requests очень сложно проверять.

Документация для разработчиков

В директории docs находятся справочные материалы по API, предложения по дизайну и другие документы, связанные с разработкой. Пожалуйста, не стесняйтесь проверять материалы там. Удачи в разработке!

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/mirrors-TiDB-Operator.git
git@api.gitlife.ru:oschina-mirror/mirrors-TiDB-Operator.git
oschina-mirror
mirrors-TiDB-Operator
mirrors-TiDB-Operator
master