Сбой carthage bootstrap из-за параллельных git процессов, обращающихся к файлу index.lock общего кэша - PullRequest
1 голос
/ 30 января 2020

Я запускаю несколько iOS параллельных сборок от Дженкинса на подчиненном Дженкинсе. Когда сборка запускает приведенную ниже команду, я получаю сообщение об ошибке.

Команда

carthage bootstrap --no-use-binaries --platform ios --use-ssh --cache-builds

Выход

2020-01-29 21:34:58.471 carthage[85379:2625480] INFO: fetch-response is unable to open the file /Users/user/Library/Caches/carthage/fsCachedData/7A4CE621-0AC6-4FAF-B0CE-33FDD32A0113. Errno: 2
*** Checking out Alamofire at "4.8.2"
*** Checking out ios-client at "3.0.0"
*** Checking out stripe-ios at "v18.3.0"
*** Checking out swift-protobuf at "1.5.0"
A shell task (/usr/bin/env git checkout --quiet --force v18.3.0 (launched in /Users/user/Library/Caches/org.carthage.CarthageKit/dependencies/stripe-ios)) failed with exit code 128:
fatal: Unable to create '/Users/user/Library/Caches/org.carthage.CarthageKit/dependencies/stripe-ios/./index.lock': File exists.

Another git process seems to be running in this repository, e.g.
an editor opened by 'git commit'. Please make sure all processes
are terminated then try again. If it still fails, a git process
may have crashed in this repository earlier:
remove the file manually to continue.

make: *** [carthage-install] Error 1

Как можно решить эту проблему? Я полагаю, это происходит потому, что несколько процессов пытаются получить доступ к общему кешу Carthage.

1 Ответ

0 голосов
/ 17 февраля 2020

Вы нашли эту проблему в хранилище Карфагена? Похоже, это описывает проблему, с которой вы столкнулись: https://github.com/Carthage/Carthage/issues/1187

Проблема в том, что Carthage никогда не предназначался для параллельного запуска, поскольку он использует блокировки, которые могут зависать при выполнении нескольких заданий Carthage. как тот же пользователь. Если вы сконфигурируете свой компьютер CI для нескольких пользователей, где для каждого пользователя выполняется одно задание Carthage, эта проблема не должна возникать. Если у вас есть один пользователь, вошедший в систему автоматически, когда компьютер запускается там, где этот пользователь запускает несколько агентов сборки, и эти агенты могут накладываться друг на друга в своих действиях в Карфагене, сборки могут завершиться сбоем, как вы описываете.

Существует ответвление Карфаген, который утверждает, что решил эту проблему: https://github.com/nsoperations/Carthage - я еще не пробовал, но думаю, что буду. Если вы застряли с использованием Carthage и хотите, чтобы ваш компьютер Ma c CI восстанавливался после потери питания до состояния, в котором работают несколько агентов сборки (например, для Buildkite), я думаю, что это может быть единственным ответом. Если бы я знал надежный способ автоматического входа нескольких пользователей в систему, когда процессы агента запускались каждым из них по мере их входа в систему, это позволило бы продолжать использовать основную ветвь Карфагена.

...