Auto: "автоматическая канарейка" в монорепозитории с бета-версией не работает

Созданный на 27 сент. 2019  ·  14Комментарии  ·  Источник: intuit/auto

Опишите ошибку

При запуске auto canary в монорепозитории Lerna возникает несколько проблем.

  1. Версия повышается с 9.0.0-beta.33 до 9.0.1-canary.809.1.1a2be58f.0 9.0.0-canary... вместо этого она должна быть

  2. В самом начале написано Error: Running command 'npx' failed

  3. Не удается опубликовать в npm, говоря You cannot publish over the previously published versions: 9.0.0-beta.33

PR, который я пытаюсь опубликовать: https://github.com/react-spring/react-spring/pull/809.

Воспроизводить

У меня еще нет минимального репро. ЛМК, если нужно.

Ожидаемое поведение

Ожидается, что все пакеты будут опубликованы с 9.0.0-canary.809.1.1a2be58f.0 качестве их версии.

Рабочий стол (заполните следующую информацию):

  • ОС: macOS v10.14.5
  • Браузер: N / A
  • Версия: v7.6.0

Дополнительный контекст

GH_TOKEN="xxx" auto canary --build 1 --pr 809
Error: Running command 'npx' failed


Changes:
 - @react-spring/addons: 9.0.0-beta.33 => 9.0.1-canary.809.1.1a2be58f.0
 - @react-spring/animated: 9.0.0-beta.33 => 9.0.1-canary.809.1.1a2be58f.0
 - @react-spring/core: 9.0.0-beta.33 => 9.0.1-canary.809.1.1a2be58f.0
 - react-spring: 9.0.0-beta.34 => 9.0.1-canary.809.1.1a2be58f.0
 - @react-spring/shared: 9.0.0-beta.33 => 9.0.1-canary.809.1.1a2be58f.0
 - @react-spring/konva: 9.0.0-beta.33 => 9.0.1-canary.809.1.1a2be58f.0
 - @react-spring/native: 9.0.0-beta.33 => 9.0.1-canary.809.1.1a2be58f.0
 - @react-spring/three: 9.0.0-beta.33 => 9.0.1-canary.809.1.1a2be58f.0
 - @react-spring/web: 9.0.0-beta.34 => 9.0.1-canary.809.1.1a2be58f.0
 - @react-spring/zdog: 9.0.0-beta.33 => 9.0.1-canary.809.1.1a2be58f.0



lerna notice cli v3.15.0
lerna info current version 9.0.0-beta.34
lerna WARN force-publish all packages
lerna info Assuming all packages changed
lerna WARN version Skipping working tree validation, proceed at your own risk
lerna info auto-confirmed 
lerna info execute Skipping git tag/commit
lerna info execute Skipping git push
lerna info execute Skipping releases
lerna info publish Publishing packages to npm...
lerna notice Skipping all user and access validation due to third-party registry
lerna notice Make sure you're authenticated properly ¯\_(ツ)_/¯
lerna http fetch PUT 403 https://registry.npmjs.org/@react-spring%2fshared 1475ms
lerna ERR! E403 You cannot publish over the previously published versions: 9.0.0-beta.33.

    at ChildProcess.<anonymous> (~/.nvm/versions/node/v11.10.1/pnpm-global/3/node_modules/.pnpm/registry.npmjs.org/@auto-it/core/7.6.1/node_modules/@auto-it/core/dist/utils/exec-promise.js:98:36)
    at ChildProcess.emit (events.js:197:13)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:254:12)

Все 14 Комментарий

Кроме того, не соблюдается поле publishConfig.directory в package.json каждого пакета.

Я посмотрю на это!

  1. Версия повышается с 9.0.0-beta.33 до 9.0.1-canary.809.1.1a2be58f.0, вместо этого она должна быть 9.0.0-canary ...

Я открыл # 609, чтобы избавиться от лишнего хеша. .0 часть версии , потому что мы, --preid флаг. Нам это нужно для остальной части версии, поэтому она не может исчезнуть.

@hipstersmoothie О, я не жаловался на это. Я просто не хотел тратить время на ввод хеша. 😆 Это предложение на самом деле указывает на то, что это 9.0.1 когда оно должно оставаться 9.0.0 .

Ах я вижу. В таком случае это ожидаемое поведение. Канареечная версия - это смоделированная «следующая» версия. Например:

PR имеет major label => Канарейка с этими изменениями содержит эти основные изменения и должна быть новой основной версией

Причина, по которой он перешел к 9.0.1 заключается в том, что мы по умолчанию используем patch когда метка не найдена.

Ох, хорошо. Тег latest настоящее время указывает на 8.0.27 , поэтому я бы не ожидал, что auto canary будет использовать 9.0.1 любом случае. Должно быть, его смущало существование 9.0.0-beta.33 . Есть ли способ заставить версию оставаться на уровне 9.0.0 ?

Прямо сейчас он ведет себя так: он будет смотреть на «Последнюю версию» и вашу локальную версию и использовать более высокую. Таким образом, в этом случае это разрешилось до 9.0.0-beta.33 .

Есть ли способ заставить версию оставаться на уровне 9.0.0?

Локально, если я запускаю lerna с prerelease вместо preminor версия не увеличивается. Чтобы получить prerelease в канареечной команде, мы могли бы добавить дополнительный флаг или использовать метку prerelease , но эта функция не будет автоматической.

Не удается опубликовать в npm, говоря, что вы не можете публиковать поверх ранее опубликованных версий: 9.0.0-beta.33

Похоже, это проблема, связанная с тем, что package.json s попадают в папку dist . Шаг prepare выполняется до того, как что-либо сделает auto, поэтому версия - это то, что было там вначале. В данном случае "9.0.0-beta.33"

При запуске lerna берет эту устаревшую версию package.json , которая содержит уже опубликованную версию, и пытается опубликовать ее снова.

Локально, если я запускаю lerna с prerelease вместо preminor версия не увеличивается. Чтобы получить prerelease в команде canary, мы могли бы добавить дополнительный флаг или использовать метку prerelease , но эта функция не будет автоматической.

Этого должно быть достаточно. Считаете ли вы «запуск auto canary локально из ветки, которая строит версию beta / next » крайним случаем? Если нет, возможно, здесь должна быть автоматическая поддержка. Кроме того, если бы я запустил auto canary из CI, попаду ли я в этот крайний случай?

При запуске lerna берет эту устаревшую версию package.json , которая содержит уже опубликованную версию, и пытается опубликовать ее снова.

Lerna поддерживает publishConfig.directory (см. Здесь ), но, возможно, ваша интеграция с Lerna каким-то образом избегает этого пути кода.

Проблема в этой строке .

Поскольку вы делаете это, когда вы копируете package.json, readme и т. Д. В папку dist, а затем просто публикуете это, нам нужно запустить скрипт prepare в очень конкретное время:

  1. lerna version - изменяет package.json на канареечную версию
  2. prepare - последний пакет помещается в папку dist
  3. lerna publish - публикует папку dist пакета с правильной версией

Таким образом, для этого рабочего процесса вы должны позволить запускать сценарии жизненного цикла, а для ignoreScripts должно быть установлено значение false (или просто не должно быть вообще).

Считаете ли вы «запуск auto canary локально из ветки, основанной на бета / следующей версии» крайним случаем? Если нет, возможно, здесь должна быть автоматическая поддержка.

Поддержка beta / next на самом деле еще не встроена, но я вернусь к этой проблеме, когда попытаюсь ее решить.

возможно, ваша интеграция с Lerna каким-то образом избегает этого пути кода.

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

@aleclarson Я смог опубликовать канарейку после удаления ignoreScripts . Думаю, я рассмотрел все в этом выпуске, закройте, пожалуйста!

Ладно, милая! У меня есть обходной путь прямо сейчас, поэтому я не буду проверять в ближайшее время.

Я обязательно открою его снова, если еще раз попробую. ;)

Была ли эта страница полезной?
0 / 5 - 0 рейтинги