Публикация библиотеки не является обычной операцией c в моем проекте, потому что этот процесс включает ряд побочных эффектов, которые необходимо устранить в случае сбоя. Ошибки могут возникать из-за тайм-аутов, попыток опубликовать sh уже существующей версии, организации уже существующего репо, проблем с ключом подписи и т. Д. c. В настоящее время выполняемые вручную шаги по откату испорченного выпуска состоят из
- Вход в Sonatype Nexus и удаление промежуточного хранилища
- Удаление фиксации увеличения версии:
git reset --hard sha
- Удалить тег:
git tag -d name
Есть ли способ сделать процесс публикации атомарным c таким образом, чтобы все изменения автоматически отменялись при сбое?
Процесс выпуска моего проекта похож на Как выпустить библиотеку Scala в Maven Central с использованием sbt? , а именно:
releaseProcess := Seq[ReleaseStep](
checkSnapshotDependencies,
inquireVersions,
runClean,
runTest,
setReleaseVersion,
commitReleaseVersion,
tagRelease,
publishArtifacts,
setNextVersion,
commitNextVersion,
releaseStepCommand("sonatypeReleaseAll"),
pushChanges
)
, где plugins.sbt
имеет
addSbtPlugin("com.github.gseitz" % "sbt-release" % "1.0.11")
addSbtPlugin("com.jsuereth" % "sbt-pgp" % "2.0.0")
addSbtPlugin("org.xerial.sbt" % "sbt-sonatype" % "2.5")