Подтвердить что ты не робот

Канал не открыт Ошибки автоматического слияния с Teamcity (git)

Я использую TeamCity на ubuntu (TeamCity Professional 9.1.7 (build 37573)). И с некоторыми проблемами с автоматическим слиянием в последнее время (git). Я ничего не изменил в конфигурации с того момента, когда он работал. Я попытался удалить рабочий каталог. это помогло только для нескольких слияний.

Симптомы: Журнал сборки выглядит чистым, и я получаю это в обзоре сборки:

Failed to merge sources in VCS root foo. Merge error 'git fetch'     command failed.
stderr: [email protected]:foo/foo.git: channel is not opened.
exit code: 1.

Хотя, в запущенном агенте я получаю совершенно другую ошибку в teamcity-vcs.log:

[2016-03-30 15:14:31,722]   INFO -      jetbrains.buildServer.VCS - [/home/ubuntu/BuildAgent/work/7676127c0a691f42]: /usr/bin/git show-ref refs/remotes/origin/foo 
[2016-03-30 15:14:31,775]   INFO -      jetbrains.buildServer.VCS - [/home/ubuntu/BuildAgent/work/7676127c0a691f42]: /usr/bin/git log -n1 --pretty=format:%H%x20%s 193f46d88205c5e419a8a7458e742ce9b598cca8 
-- 
[2016-03-30 15:14:31,797]   WARN -      jetbrains.buildServer.VCS - '/usr/bin/git log -n1 --pretty=format:%H%x20%s 193f46d88205c5e419a8a7458e742ce9b598cca8 --' command failed.
stderr: fatal: bad object 193f46d88205c5e419a8a7458e742ce9b598cca8 
[2016-03-30 15:14:31,798]   INFO -      jetbrains.buildServer.VCS - [/home/ubuntu/BuildAgent/work/7676127c0a691f42]: /usr/bin/git fetch --progress origin +refs/heads/foo:refs/remotes/origin/foo 
[2016-03-30 15:14:35,832]   WARN -      jetbrains.buildServer.VCS - Error output produced by: /usr/bin/git fetch --progress origin +refs/heads/foo:refs/remotes/origin/foo 
[2016-03-30 15:14:35,832]   WARN -      jetbrains.buildServer.VCS - remote: Counting objects: 2, done.ESC[K
remote: Compressing objects:  50% (1/2)   ESC[K
remote: Compressing objects: 100% (2/2)   ESC[K
remote: Compressing objects: 100% (2/2), done.ESC[K
remote: Total 2 (delta 1), reused 0 (delta 0)ESC[K
From bitbucket.org:bar/bar
   62ba378..193f46d  foo  -> origin/foo 

Как будто команда журнала не выполнена.

Спасибо.


Обновление. У меня есть обновление, в котором есть некоторые доказательства того, что это связано с изменениями, особенно в BitBucket git через SSH-серверы.

4b9b3361

Ответ 1

Per https://youtrack.jetbrains.com/issue/TW-46052, проблема исправлена. Исправление будет отправлено следующей версией: 9.1.8 или 10. Если вы не хотите ждать выпуска, вы можете вручную обновить плагин git, загрузив его отсюда (вход в систему в качестве гостя или создание учетной записи на сервере сборки JetBrains) и замена его в вашей установке.

  • Выключить TC
  • Поместите загруженный файл jetbrains.git.zip в %TEAM_CITY%/webapps/ROOT/WEB-INF/plugins, заменив существующий
  • Перезапустить TC

Это фиксировало проблему для меня и других.

Ответ 2

TeamCity использовал ssh-мультиплексирование, которое недавно было отключено в Bitbucket Cloud. Если вы затронуты этой проблемой, просмотрите https://youtrack.jetbrains.com/issue/TW-46052, исправления будут размещены там (на момент написания статьи есть исправление для TeamCity 9.1.x и 9.0.x). Обходной путь без установки нового git -plugin заключается в использовании https или анонимного протокола вместо ssh.

Обновление

Исходное исправление вызвало сбои коллекции изменений с ошибками таймаута в TeamCity 8.1.x и 9.0.x, теперь это .

Ответ 4

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

Для пользователей Linux, которые правильно установили TeamCity (например, имеют отдельный пользователь и услугу teamcity), этот script должен выполнить весь тяжелый подъем (если у вас есть sudo):

function patch_teamcity_plugin() {
  # Find teamcity plugin dir.
  sudo updatedb
  path_part="webapps/ROOT/WEB-INF/plugins"
  teamcity_plugin_dir=$(locate $path_part | grep -o -E ".*$path_part" | head -n 1)

  if [ "$teamcity_plugin_dir" == "" ]; then
    echo "Cannot find teamcity plugins directory." 1>&2
    return 1
  fi

  login_url="https://teamcity.jetbrains.com/guestLogin.html?guest=1"
  cookie_file=$(mktemp)

  # Log in as guest.
  # Wget login - thanks to: http://stackoverflow.com/a/1432161/2041634
  wget --save-cookies $cookie_file --keep-session-cookies $login_url

  # Download the plugin to the teamcity plugin directory.
  plugin_url="https://teamcity.jetbrains.com/repository/download/TeamCityPluginsByJetBrains_Git_JetBrainsGitPluginTeamCity91x/843194:id/jetbrains.git.zip"
  plugin_dest_filename="$teamcity_plugin_dir/jetbrains.git.zip"
  sudo wget --load-cookies $cookie_file $plugin_url -O $plugin_dest_filename

  if [ "$?" != "0" ]; then
    echo "Failed download of plugin." 1>&2
    return 1
  fi

  # Copy permissions - thanks to: http://unix.stackexchange.com/a/20646
  sudo chown --reference="$teamcity_plugin_dir" "$plugin_dest_filename"
  sudo chmod 0755 "$plugin_dest_filename"

  # Restart TeamCity server.
  sudo service teamcity restart
}

patch_teamcity_plugin()