Установите Go 1.23.x. Если вы хотите запускать TiDB Operator локально, также установите последнюю версию Docker, kind, kubectl и Helm.
Посетите https://github.com/pingcap/tidb-operator
Нажмите кнопку Fork
(в верхнем правом углу), чтобы создать облачный форк.
Определите локальное рабочее пространство:
$ 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)
Обновите ваш локальный мастер до последней версии:```sh $ cd $working_dir/tidb-operator $ git fetch upstream $ git checkout master $ git rebase upstream/master
Создайте ветку от мастера:
```sh
$ git checkout -b myfeature
Теперь вы можете редактировать код на ветке myfeature
.
Во-первых, убедитесь, что у вас установлен jq.
Запустите следующие команды для проверки изменений вашего кода.
$ make check
Это покажет ошибки, если ваши изменения кода не проходят проверки (например, форматирование, линтер). Пожалуйста, исправьте их перед отправкой PR.
Если вы изменяете код, связанный с CRD, например, определения типов в pkg/apis/pingcap/v1alpha1/types.go
, также запустите следующие команды для генерации необходимого кода и артефактов.
$ make generate
Во-первых, вам необходимо установить 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 тестов.
$ ./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 случаев):
--ginkgo.focus='DMCluster|TiDBCluster' --ginkgo.skip='\[TiDBCluster:\sBasic\]'
--ginkgo.focus='\[Across\sKubernetes\]' --install-dm-mysql=false
--ginkgo.focus='\[Serial\]' --install-operator=false
--ginkgo.focus='Scale\sin\ssimultaneously'
--ginkgo.focus='TiDBNGMonitoring'
--ginkgo.focus='Backup\sand\sRestore'
--ginkgo.focus='\[TiDBCluster:\sBasic\]' --install-dm-mysql=false
В комментариях к PR вы можете запустить /test ${case-name}
(например /test pull-e2e-kind
), чтобы запустить сценарий вручную.
При работе на ветке myfeature
выполните следующие команды:
$ git fetch upstream
$ git rebase upstream/master
Перед тем как сделать коммит, убедитесь, что все проверки и юнит-тесты пройдены:
$ make check
$ make test
Затем сделайте коммит ваших изменений.
$ git commit
Вероятно, вам придется несколько раз редактировать, сборку и тестирование, прежде чем сделать commit --amend
.
Когда ваш коммит готов для проверки (или просто для создания внешнего резервного копирования), запушьте вашу ветку на ваш форк на github.com
:
$ git push -f origin myfeature
$user
соответственно).Compare & pull request
рядом с вашей веткой myfeature
.Как только ваш pull request будет открыт, он будет назначен как минимум двум проверяющим. Эти проверяющие проведут тщательный код-ревью, проверяя правильность, наличие ошибок, возможности для улучшения, документацию и комментарии, а также стиль.
Сделайте коммит изменений, внесенных в ответ на комментарии проверяющих, на ту же ветку на вашем форке. Очень маленькие pull requests легко проверять. Очень большие pull requests очень сложно проверять.
В директории docs
находятся справочные материалы по API, предложения по дизайну и другие документы, связанные с разработкой. Пожалуйста, не стесняйтесь проверять материалы там. Удачи в разработке!
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )