2

发布库在我的项目中不是原子操作,因为该过程涉及在失败的情况下需要清理的许多副作用。由于超时、尝试发布已经存在的版本、暂存存储库已经存在、签名密钥问题等可能会发生错误。目前,我执行回滚拙劣版本的手动步骤包括

  1. 登录到Sonatype Nexus并删除临时存储库
  2. 删除版本增加提交:git reset --hard sha
  3. 删除标签:git tag -d name

有没有办法使发布过程原子化,以便所有更改在失败时自动恢复?

我的项目的发布过程类似于How to release a Scala library to Maven Central using 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")
4

0 回答 0