Создание локальных репозиториев Bitbucket
Azure DevOps Services
Примечание.
Сведения об интеграции Bitbucket Cloud с Azure Pipelines см. в статье Bitbucket Cloud.
Вы можете интегрировать локальный сервер Bitbucket или другой сервер Git с Azure Pipelines. Локальный сервер может быть предоставлен в Интернете или он не может быть.
Если локальный сервер доступен с серверов, на которые выполняется служба Azure Pipelines, то выполните следующие действия.
- Вы можете настроить классические триггеры сборки и настроить триггеры CI
Если локальный сервер недоступен с серверов, на которые выполняется служба Azure Pipelines, то выполните следующие действия:
- Вы можете настроить классические конвейеры сборки и запустить сборки вручную.
- Не удается настроить триггеры CI
Примечание.
Конвейеры YAML не работают с локальными репозиториями Bitbucket.
Примечание.
Триггеры PR недоступны в локальных репозиториях Bitbucket.
Если локальный сервер доступен из размещенных агентов, можно использовать размещенные агенты для выполнения вручную, запланированных или сборок CI. В противном случае необходимо настроить локальные агенты, которые могут получить доступ к локальному серверу и получить код.
Доступно из Azure Pipelines
Если локальный сервер Bitbucket доступен из службы Azure Pipelines, создайте подключение службы другие службы Git и используйте его для создания конвейера. Установите флажок Попытаться получить доступ к этому серверу Git из Azure Pipelines.
Триггеры CI работают через опрос, а не через веб-перехватчики. Другими словами, Azure Pipelines периодически проверяет сервер Bitbucket, если есть какие-либо обновления кода. Если есть, Azure Pipelines запускает новое выполнение.
Недоступно из Azure Pipelines
Если сервер Bitbucket не удается достичь из Azure Pipelines, у вас есть два варианта:
Обратитесь к ИТ-отделу, чтобы открыть сетевой путь между Azure Pipelines и локальным сервером Git. Например, можно добавить исключения в правила брандмауэра, чтобы разрешить трафик из Azure Pipelines передаваться. См. раздел IP-адреса Azure DevOps, чтобы узнать, какие IP-адреса необходимо разрешить. Кроме того, необходимо иметь общедоступную запись DNS для сервера Bitbucket, чтобы Azure Pipelines могли разрешить полное доменное имя сервера на IP-адрес.
Вы можете использовать подключение Другие Git, но сообщите Azure Pipelines не пытаться получить доступ к этому серверу Git из Azure Pipelines. Триггеры CI и PR недоступны в репозиториях Другие репозитории Git. Запуск конвейера можно запускать только вручную или запланированные.
Доступ к доступу из размещенных корпорацией Майкрософт агентов
Другим решением, возможно, необходимо принять решение о том, следует ли использовать размещенные корпорацией Майкрософт агенты или локальные агенты для запуска конвейеров. Этот выбор часто зависит от того, могут ли агенты, размещенные корпорацией Майкрософт, получить доступ к серверу. Чтобы проверить, могут ли они, создайте конвейер для использования агентов, размещенных корпорацией Майкрософт, и обязательно добавьте шаг для получения исходного кода с сервера. Если это пройдет, можно продолжить использование агентов, размещенных корпорацией Майкрософт.
Недоступно от размещенных корпорацией Майкрософт агентов
Если простой конвейер тестирования, упомянутый в приведенном выше разделе, завершается ошибкой TF401019: The Git repository with name or identifier <your repo name> does not exist or you do not have permissions for the operation you are attempting
, сервер Bitbucket недоступен из агентов, размещенных корпорацией Майкрософт. Это снова, вероятно, вызвано брандмауэром, блокирующим трафик с этих серверов. В этом случае у вас есть два варианта:
Обратитесь к ИТ-отделу, чтобы открыть сетевой путь между размещенными корпорацией Майкрософт агентами и сервером Bitbucket. См. раздел о сетевых в размещенных майкрософт агентах.
Переключитесь на использование локальных агентов или агентов масштабируемого набора. Эти агенты могут быть настроены в вашей сети, поэтому у них будет доступ к серверу Bitbucket. Эти агенты требуют только исходящих подключений к Azure Pipelines. Нет необходимости открывать брандмауэр для входящих подключений. Убедитесь, что имя сервера, указанного при создании подключения службы, можно разрешить из локальных агентов.
IP-адреса Azure DevOps
При использовании подключения Other Git для настройки классического конвейера, отключения связи между службой Azure Pipelines и сервером Bitbucket и использования локальных агентов для сборки кода возникает снижение производительности:
- Во время создания конвейера необходимо ввести имя репозитория вручную.
- Триггеры CI нельзя использовать, так как Azure Pipelines не сможет опрашивать изменения в коде.
- Вы не можете использовать запланированные триггеры с параметром сборки только при наличии изменений.
- Невозможно просмотреть сведения о последней фиксации в пользовательском интерфейсе
Если вы хотите улучшить этот интерфейс, важно включить обмен данными с Azure Pipelines на Bitbucket Server.
Чтобы разрешить трафик из Azure DevOps для доступа к серверу Bitbucket, добавьте IP-адреса или теги службы, указанные в входящих подключений, в список разрешений брандмауэра. Если вы используете ExpressRoute, обязательно включите диапазоны IP-адресов ExpressRoute в список разрешений брандмауэра.
Разрешить Azure Pipelines пытаться получить доступ к серверу Git в подключении службы Other Git.
Информационные прогоны
Информационное выполнение сообщает, что Azure DevOps не удалось получить исходный код конвейера YAML. Извлечение исходного кода происходит в ответ на внешние события, например, принудительно отправленную фиксацию. Это также происходит в ответ на внутренние триггеры, например, чтобы проверить наличие изменений кода и запустить запланированный запуск или нет. Получение исходного кода может завершиться сбоем по нескольким причинам, при этом часто запрашивается регулирование поставщиком репозитория Git. Существование информационного запуска не обязательно означает, что Azure DevOps собирается запустить конвейер.
Информационный запуск выглядит на следующем снимке экрана.
Вы можете распознать информационный запуск следующими атрибутами:
- Состояние
Canceled
- Длительность составляет
< 1s
- Имя выполнения содержит один из следующих текстов:
Could not retrieve file content for {file_path} from repository {repo_name} hosted on {host} using commit {commit_sha}.
Could not retrieve content for object {commit_sha} from repository {repo_name} hosted on {host}.
Could not retrieve the tree object {tree_sha} from the repository {repo_name} hosted on {host}.
Could not find {file_path} from repository {repo_name} hosted on {host} using version {commit_sha}. One of the directories in the path contains too many files or subdirectories.
- Имя запуска обычно содержит ошибку BitBucket / GitHub, которая привела к сбою загрузки конвейера YAML
- Нет этапов/ заданий и шагов
Дополнительные сведения о информационных запусках.
Ограничения
Azure Pipelines загружает не более 2000 ветвей из репозитория в раскрывающиеся списки на портале Azure Devops, например в ветвь по умолчанию для ручной и запланированной сборки или при выборе ветви при запуске конвейера вручную. Если вы не видите нужную ветвь в списке, введите имя требуемой ветви вручную.
Вопросы и ответы
Проблемы, связанные с интеграцией Bitbucket Server, относятся к следующим категориям:
- триггеры сбоя: Конвейер не активируется при отправке обновления в репозиторий.
- сбой при извлечении: активируется мой конвейер, но происходит сбой в шаге выхода.
Сбой триггеров
Я принудила изменение к моему серверу, но конвейер не активируется.
Выполните следующие действия, чтобы устранить неполадки с триггерами сбоя.
Доступен ли ваш сервер Bitbucket из Azure Pipelines? Azure Pipelines периодически опрашивает сервер Bitbucket для изменений. Если сервер Bitbucket находится за брандмауэром, этот трафик может не добраться до сервера. Дополнительные сведения см. в разделе IP-адреса Azure DevOps и убедитесь, что вы предоставили исключения для всех необходимых IP-адресов. Эти IP-адреса могут быть изменены, так как вы изначально настроили правила исключения. Вы можете запускать вручную, только если вы использовали внешнее подключение Git и если сервер недоступен из Azure Pipelines.
Приостановлен или отключен ли конвейер? Откройте редактор конвейера, а затем выберите параметры, чтобы проверить. Если конвейер приостановлен или отключен, триггеры не работают.
Вы исключили ветви или пути, к которым вы принудили изменения? Тестирование путем отправки изменения в включенный путь в включенную ветвь. Обратите внимание, что пути в триггерах чувствительны к регистру. Убедитесь, что при указании путей в триггерах используется тот же случай, что и в реальных папках.
Я не отправляет никаких обновлений в код, однако конвейер по-прежнему активируется.
- Триггер непрерывной интеграции для Bitbucket работает с помощью опроса. После каждого интервала опроса Azure Pipelines пытается связаться с сервером Bitbucket, чтобы проверить наличие каких-либо обновлений кода. Если Azure Pipelines не удается связаться с сервером Bitbucket (возможно, из-за проблемы с сетью), мы начинаем новый запуск в любом случае, предполагая, что были изменения кода. Если Azure Pipelines не может получить код конвейера YAML, он создаст информационный запуск.
Сбой при извлечении
Когда я пытаюсь запустить новый запуск вручную, перед началом работы происходит задержка в 4–8 минут.
- Сервер Bitbucket недоступен из Azure Pipelines. Убедитесь, что вы не выбрали параметр попытаться получить доступ к этому серверу Git из Azure Pipelines в подключении службы Bitbucket. Если этот параметр выбран, Azure Pipelines попытается связаться с сервером и так как ваш сервер недоступен, он в конечном итоге истекает и запускает выполнение в любом случае. Снимите флажок, что этот параметр ускоряет выполнение вручную.
Шаг проверки завершается ошибкой, которая не может быть устранена сервером.
Вы используете агенты, размещенные корпорацией Майкрософт? В этом случае эти агенты могут не получить доступ к серверу Bitbucket. Дополнительные сведения см. в статье Недоступно для агентов, размещенны х корпорацией Майкрософт.