Откат произошел сбой процесса выпуска - PullRequest
2 голосов
/ 18 апреля 2020

Публикация библиотеки не является обычной операцией c в моем проекте, потому что этот процесс включает ряд побочных эффектов, которые необходимо устранить в случае сбоя. Ошибки могут возникать из-за тайм-аутов, попыток опубликовать sh уже существующей версии, организации уже существующего репо, проблем с ключом подписи и т. Д. c. В настоящее время выполняемые вручную шаги по откату испорченного выпуска состоят из

  1. Вход в Sonatype Nexus и удаление промежуточного хранилища
  2. Удаление фиксации увеличения версии: git reset --hard sha
  3. Удалить тег: 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")
...