2

私のプロジェクトでは、ライブラリの公開はアトミック操作ではありません。プロセスには、障害が発生した場合にクリーンアップする必要がある多くの副作用が含まれるためです。エラーは、タイムアウト、既存のバージョンの公開の試行、既存のステージング リポジトリ、署名キーの問題などによって発生する可能性があります。現在、失敗したリリースをロールバックするために実行する手動の手順は、

  1. Sonatype Nexusにログインし、ステージング リポジトリをドロップします
  2. バージョン増加コミットを削除します。git reset --hard sha
  3. タグを削除:git tag -d name

失敗時にすべての変更が自動的に元に戻されるように、発行プロセスをアトミックにする方法はありますか?

私のプロジェクトのリリース プロセスは、sbt を使用して Scala ライブラリを Maven Central にリリースする方法に似ています。すなわち

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