Nano Hash - криптовалюты, майнинг, программирование

AMO CI всегда выдает обнаруженный повторяющийся идентификатор надстройки

В настоящее время я пытаюсь автоматизировать обновления своего веб-расширения в конвейере сборки с помощью этого API/конечной точки https://addons.mozilla.org/api/v3/addons.

Итак, фактическая команда, которую я использую, выглядит так:

curl "https://addons.mozilla.org/api/v3/addons/" -g -XPOST --form "upload=@dist/firefox/psono.firefox.PW.zip" -F "version=1.0.17" -H "Authorization: JWT ABCDEFG..."

(документация здесь http://addons-server.readthedocs.io/en/latest/topics/api/signing.html#uploading-without-an-id )

Теперь я там, где всегда получаю (после множества попыток и ошибок при аутентификации):

{"error":"Duplicate add-on ID found."} 

У меня в манифесте это:

"manifest_version": 2,
"name": "psono.PW",
"description": "Psono Password Manager",
"version": "1.0.17",

... alot of other stuff ...

"applications": {
    "gecko": {
        "id": "{3dce78ca-2a07-4017-9111-998d4f826625}"
    }
}

Если я удалю этот атрибут «приложения», то он пройдет, но создаст новое расширение вместо обновления существующего. Я уже сравнил манифест моего существующего расширения и моего нового, и, кроме некоторого форматирования JSON и очевидной разницы в атрибуте версии, они выглядят одинаково.

Что мне не хватает, что API AMO не может фактически сопоставить мое обновление с моим существующим расширением?


  • У вашего дополнения уже есть версия 1.0.17, которая была загружена в AMO (включая версию 1.0.17, которую вы удалили)? 10.06.2017
  • Неа. Последний когда-либо опубликованный аддон имел версию 1.0.16. 11.06.2017

Ответы:


1

Хотя я не проверял это, вы явно отправляете запрос на URL-адрес, предназначенный для WebExtensions без идентификатора, а не URL-адрес для загрузка новой версии вашего дополнения с идентификатором. AMO использует идентификаторы надстроек, чтобы сопоставить надстройку с существующей в данный момент. Единственный случай, когда WebExtension не имеет идентификатора, — это первая загрузка нового расширения в AMO (и вы решили не назначать идентификатор самостоятельно во время разработки).

После того, как вы загрузили надстройку в AMO в первый раз и WebExtension появился в списке, у него есть идентификатор. Таким образом, я бы предположил, что в документации просто не на 100 % ясно, что загрузка без идентификатора предназначена только для загрузки нового надстройки WebExtension. Единственное, что заставляет меня думать, что используемый вами URL-адрес может предназначаться для WebExtensions с идентификаторами, — это сообщения об ошибках, которые, как утверждается, возможны, но этот список ошибок может быть просто копией. -вставка из другого раздела.

Загрузка нового дополнения WebExtensions (без идентификатора):

curl "https://addons.mozilla.org/api/v3/addons/"
    -g -XPOST -F "upload=@build/my-addon.xpi" -F "version=1.0"
    -H "Authorization: JWT <jwt-token>"

Загрузка новой версии дополнения (с идентификатором):

curl "https://addons.mozilla.org/api/v3/addons/@my-addon/versions/1.0/"
    -g -XPUT --form "upload=@build/my-addon.xpi"
    -H "Authorization: JWT <jwt-token>"

например, в вашем случае:

curl "https://addons.mozilla.org/api/v3/addons/{3dce78ca-2a07-4017-9111-998d4f826625}/versions/1.0.17/"
    -g -XPUT --form "upload=@dist/firefox/psono.firefox.PW.zip"
    -H "Authorization: JWT ABCDEFG..."

Я бы посчитал это проблемой в документации по процессу загрузки, где описание фактического использования URL-адреса WebExtensions-no-ID должно быть уточнено.

Проверьте это, чтобы убедиться, что вы можете загружать новую версию (включая applications в вашем manifest.json), используя обычный URL-адрес для загрузки версии. Если вы подтвердите, что это работает, я отправлю запрос на включение в документацию, чтобы сделать его более понятным.

Примечание. документация на MDN, когда говоря об обновлении надстройки, говорится:

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

Однако следует отметить, что даже в этом разделе говорится об обновлении надстройки без идентификатора, указанного в ключе applications. Таким образом, даже эта документация не ясна на 100%.

Альтернативные возможности

Если используемый вами URL-адрес на самом деле предназначен как для новых WebExtensions без идентификатора , так и для новых версий уже существующих WebExtensions с идентификатором:

  1. Вы уже загрузили версию 1.0.17 вашего дополнения. Если это так, то существует ошибка, которая возвращает ошибку "Duplicate add-on ID found." вместо того, чтобы текст ошибки объяснял, что для этого идентификатора существует повторяющаяся версия. Если это так, то я бы подумал, что в документации также необходимо пояснить, что URL-адрес предназначен как для WebExtensions с идентификатором, так и без него: что указание без идентификатора относится только к используемому URL-адресу и параметрам, переданным в API.
  2. Вы еще не загрузили версию 1.0.17 вашего дополнения. Если это так, то есть ошибка, которая не позволяет загружать новые версии уже существующего идентификатора дополнения. Простое решение этой проблемы состоит в том, чтобы просто объявить, что это предполагаемая операция, и изменить документацию, чтобы было ясно, что вместо нового дополнения следует использовать URL-адрес/PUT с идентификатором, без URL-адреса/POST-идентификатора.
10.06.2017
  • Спасибо за Ваш ответ. На данный момент уже слишком поздно, но я попробую завтра и дам вам знать. 11.06.2017
  • Оно работает! Я обновлю сообщение рабочим примером вызова, который помог мне обновить мое веб-расширение. 11.06.2017
  • @chickahoona, я рад слышать, что это сработало. Спасибо за добавление примера. Я попытаюсь сделать запрос на включение, чтобы обновить документацию, чтобы быть немного ясным позже сегодня. 11.06.2017
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

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

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..