Создание локальных репозиториев 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

При использовании другого подключения Git для настройки классического конвейера отключите обмен данными между службой Azure Pipelines и сервером Bitbucket и используйте автономные агенты для сборки кода, вы получите низкоуровневый интерфейс:

  • Во время создания конвейера необходимо ввести имя репозитория вручную.
  • Триггеры CI нельзя использовать, так как Azure Pipelines не сможет опрашивать изменения в коде.
  • Вы не можете использовать запланированные триггеры с параметром сборки только при наличии изменений.
  • Невозможно просмотреть сведения о последней фиксации в пользовательском интерфейсе

Если вы хотите улучшить этот интерфейс, важно включить обмен данными с Azure Pipelines на Bitbucket Server.

Чтобы разрешить трафик из Azure DevOps для доступа к серверу Bitbucket, добавьте IP-адреса или теги службы, указанные в входящих подключениях к списку разрешений брандмауэра. Если вы используете ExpressRoute, обязательно включите диапазоны IP-адресов ExpressRoute в список разрешений брандмауэра.

Разрешить Azure Pipelines пытаться получить доступ к серверу Git в подключении к другой службе Git .

Информационные запуски

Информационное выполнение сообщает, что Azure DevOps не удалось получить исходный код конвейера YAML. Извлечение исходного кода происходит в ответ на внешние события, например, принудительно отправленную фиксацию. Это также происходит в ответ на внутренние триггеры, например, чтобы проверка, если есть изменения кода и запустить запланированный запуск или нет. Получение исходного кода может завершиться сбоем по нескольким причинам, при этом часто запрашивается регулирование поставщиком репозитория Git. Существование информационного запуска не обязательно означает, что Azure DevOps собирается запустить конвейер.

Информационный запуск выглядит на следующем снимке экрана.

Screenshot of an informational pipeline run.

Вы можете распознать информационный запуск следующими атрибутами:

  • Состояние 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, относятся к следующим категориям:

  • Сбой триггеров: мой конвейер не активируется при отправке обновления в репозиторий.
  • Сбой проверка out: запускается мой конвейер, но происходит сбой в шаге проверка out.

Сбой триггеров

Я принудила изменение к моему серверу, но конвейер не активируется.

Выполните следующие действия, чтобы устранить неполадки с триггерами сбоя.

  • Доступен ли ваш сервер 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, он создаст информационный запуск.

Сбой проверка out

Когда я пытаюсь запустить новый запуск вручную, перед началом работы происходит задержка в 4–8 минут.

  • Сервер Bitbucket недоступен из Azure Pipelines. Убедитесь, что вы не выбрали параметр, чтобы попытаться получить доступ к этому серверу Git из Azure Pipelines в подключении службы Bitbucket. Если этот параметр выбран, Azure Pipelines попытается связаться с сервером и так как ваш сервер недоступен, он в конечном итоге истекает и запускает выполнение в любом случае. Отмена проверка этом параметре ускоряет выполнение вручную.

Шаг проверка out завершается ошибкой, которую не удается устранить.

Вы используете агенты, размещенные корпорацией Майкрософт? В этом случае эти агенты могут не получить доступ к серверу Bitbucket. Дополнительные сведения см. в разделе "Недоступно" от агентов, размещенных корпорацией Майкрософт.