Ошибка AppCenter Yarn 1.19 Неправильная целостность при извлечении из кэша - PullRequest
0 голосов
/ 12 октября 2019

У меня есть приложение React Native, размещенное в Центре приложений Microsoft. Сборки (как iOS, так и Android) терпят неудачу из-за ошибки 1.19 (ошибка Неправильная целостность при извлечении из кэша)

Я пытался удалить package-lock.json, но это не помогло.

Я хотел бы понизить пряжу или выполнить команду очистки кеша, но не знаю, где ее выполнить. Я установил appcenter cli версии 2.2.1 и успешно подключился к нему. Где я могу выполнить yarn cache clean, например?

Я читал, я также мог бы создать сценарий, но я понятия не имею, где его разместить и как он должен выглядеть. Должно ли оно быть в каталоге ios и android? Или в корне? Спасибо

Ответы [ 3 ]

1 голос
/ 14 октября 2019

Я действительно заметил, что у меня был yarn.lock от первоначального коммита, хотя мы используем npm в команде. В журналах сборки есть такая строка:

/bin/sh -c if [ -f yarn.lock ]; then { yarn install && yarn list --depth=0; } else npm install; fi

Итак, я удалил файл yarn.lock, и теперь он успешно собирается с использованием npm!

0 голосов
/ 14 октября 2019

Мы исправили это, добавив «очистку кэша пряжи» в appcenter-post-clone.sh, вы можете добавить этот сценарий оболочки в корне проекта. Подробнее см. документы .

0 голосов
/ 14 октября 2019

Не уверен, создаете ли вы свое приложение React с конвейером Azure Devops. Если да, вы можете использовать Command line task для достижения желаемых результатов.

Если агент, который вы использовали, является размещенным агентом во время сборки, так как каждая сборка будет использовать совершенно новую виртуальную машину, вам необходимо установитьAppCenter cli один раз за сборку.

  1. Используйте следующую команду для установки AppCenter cli:

    sudo npm install -g appcenter-cli

  2. Тогда вход в систему it:

    вход в appcenter --token {Token}

Здесь вам сначала нужно сгенерировать токен с помощью этого doc описано: зайдите и войдите в систему https://appcenter.ms/ -> нажмите «Аватара» -> выберите настройки учетной записи -> нажмите токены API -> нажмите новый APIтокен , затем выберите соответствующую область действия для этого токена.

enter image description here

Скопируйте и используйте его в этой конвейерной задаче. Примечание: Рекомендуется хранить этот токен с секретной переменной для безопасности.

Теперь вы можете выполнить команду clean: yarn cache clean.

Где его разместить и как он должен выглядеть?

Согласно вашему описанию, вам нужно поместить этот command line task в первый шаг, затем он может очистить кэш Yarn в первую очередь.

Кроме того, из-за конфигурации образа , которую использует размещенный агент , его установленная версия node.js - 6.7.0, что не соответствует среде выполнения для AppCenter cli. Вам также нужно запустить Node.js tool installer задачу, чтобы установить node.js v10.0.0.

Все они должны выглядеть следующим образом:

enter image description here

Должно ли оно быть в каталоге ios и android?

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


Если вы использовали свой частный агент, так как вы установили AppCenter cli локально, агент автоматически вызовет локальную конфигурациюпри запуске command line task. В настоящее время вам просто нужно пропустить команду install в командном задании:

enter image description here

...