Обработка следующей версии в семантическом выпуске

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

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

Как я могу сделать это легко?

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

Я мог бы использовать хуки, но я обеспокоен тем, что, если публикация по npm не произойдет по каким-либо причинам, я все равно опубликую свой договор со следующей версией, которой точно не будет. Любые предложения здесь?

Кажется, я мог бы также написать свой собственный JS-скрипт (см. https://github.com/semantic-release/semantic-release/blob/3cc62f0318ff8917fcdc7cebe890da9dbaa7b3f9/docs/developer-guide/js-api.md), чтобы сделать это обработка версии, но я не уверен, что делает этот пример и что он покрывает относительно текущего поведения.

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

Итак, я собираюсь поделиться некоторыми примерами / опытом, и, может быть, легким решением сделать это менее чем за 30 минут:)

Спасибо

PS: извините за публикацию здесь, но кажется, что проблемы семантического релиза не созданы для вопросов поддержки.

1 ответ

Решение

Вы можете просто использовать @semantic-release/exec в дополнительном шаге публикации, который идет после @semantic-release/npm а также @semantic-release/github:

{
  "plugins": [
    "@semantic-release/commit-analyzer",
    "@semantic-release/release-notes-generator",
    "@semantic-release/npm",
    "@semantic-release/github",
    ["@semantic-release/exec", {
      "publishCmd": "publish-pacts ${nextRelease.version}"
    }],
  ]
}

Таким образом, сценарий publish-pacts будет вызываться с версией выпуска в качестве первого параметра для каждого нового выпуска, только если выпуски npm и github успешны.

Другие вопросы по тегам