From 4132ee8bfbc4e98d7ccb3795ebe86211b0eca68a Mon Sep 17 00:00:00 2001 From: Matthew de Detrich Date: Sat, 27 Jan 2024 06:56:32 +1100 Subject: [PATCH] Setup release on Sonatype --- .github/workflows/ci.yml | 75 ++++++++++++++++++++++++++++++++++++++++ build.sbt | 43 +++++++++-------------- project/plugins.sbt | 3 +- version.sbt | 1 - 4 files changed, 93 insertions(+), 29 deletions(-) delete mode 100644 version.sbt diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ed3a45c..0c660f0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -74,3 +74,78 @@ jobs: run: sbt '++ ${{ matrix.scala }}' githubWorkflowCheck - run: sbt '++ ${{ matrix.scala }}' test scripted + + - name: Compress target directories + run: tar cf targets.tar target project/target + + - name: Upload target directories + uses: actions/upload-artifact@v4 + with: + name: target-${{ matrix.os }}-${{ matrix.scala }}-${{ matrix.java }} + path: targets.tar + + publish: + name: Publish Artifacts + needs: [build] + if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/main') + strategy: + matrix: + os: [ubuntu-latest] + scala: [2.12.18] + java: [temurin@8] + runs-on: ${{ matrix.os }} + steps: + - name: Checkout current branch (full) + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Setup Java (temurin@8) + if: matrix.java == 'temurin@8' + uses: actions/setup-java@v4 + with: + distribution: temurin + java-version: 8 + cache: sbt + + - name: Setup Java (temurin@11) + if: matrix.java == 'temurin@11' + uses: actions/setup-java@v4 + with: + distribution: temurin + java-version: 11 + cache: sbt + + - name: Setup Java (temurin@17) + if: matrix.java == 'temurin@17' + uses: actions/setup-java@v4 + with: + distribution: temurin + java-version: 17 + cache: sbt + + - name: Setup Java (temurin@21) + if: matrix.java == 'temurin@21' + uses: actions/setup-java@v4 + with: + distribution: temurin + java-version: 21 + cache: sbt + + - name: Download target directories (2.12.18) + uses: actions/download-artifact@v4 + with: + name: target-${{ matrix.os }}-2.12.18-${{ matrix.java }} + + - name: Inflate target directories (2.12.18) + run: | + tar xf targets.tar + rm targets.tar + + - name: Publish project + env: + PGP_PASSPHRASE: ${{ secrets.PGP_PASSPHRASE }} + PGP_SECRET: ${{ secrets.PGP_SECRET }} + SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }} + SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }} + run: sbt ci-release diff --git a/build.sbt b/build.sbt index 8c3066c..dca3383 100644 --- a/build.sbt +++ b/build.sbt @@ -23,35 +23,26 @@ scriptedLaunchOpts ++= Seq( "-Dplugin.version=" + version.value ) -// Bintray -bintrayOrganization := Some("sbt") -bintrayRepository := "sbt-plugin-releases" -bintrayPackage := "sbt-pull-request-validator" -bintrayReleaseOnPublish := false - -// Release -import ReleaseTransformations._ -releaseProcess := Seq[ReleaseStep]( - checkSnapshotDependencies, - inquireVersions, - runClean, - releaseStepCommandAndRemaining("test"), - releaseStepCommandAndRemaining("scripted"), - setReleaseVersion, - commitReleaseVersion, - tagRelease, - releaseStepCommandAndRemaining("publish"), - releaseStepTask(`sbt-pull-request-validator` / bintrayRelease), - setNextVersion, - commitNextVersion, - pushChanges -) - ThisBuild / githubWorkflowBuild := Seq(WorkflowStep.Sbt(List("test", "scripted"))) ThisBuild / githubWorkflowTargetTags ++= Seq("v*") -// Remove this when we set up publishing via sbt-ci-release -ThisBuild / githubWorkflowPublishTargetBranches := Seq() +ThisBuild / githubWorkflowPublishTargetBranches := + Seq( + RefPredicate.StartsWith(Ref.Tag("v")), + RefPredicate.Equals(Ref.Branch("main")) + ) +ThisBuild / githubWorkflowPublish := Seq( + WorkflowStep.Sbt( + commands = List("ci-release"), + name = Some("Publish project"), + env = Map( + "PGP_PASSPHRASE" -> "${{ secrets.PGP_PASSPHRASE }}", + "PGP_SECRET" -> "${{ secrets.PGP_SECRET }}", + "SONATYPE_PASSWORD" -> "${{ secrets.SONATYPE_PASSWORD }}", + "SONATYPE_USERNAME" -> "${{ secrets.SONATYPE_USERNAME }}" + ) + ) +) ThisBuild / githubWorkflowOSes := Seq("ubuntu-latest", "macos-latest") diff --git a/project/plugins.sbt b/project/plugins.sbt index 4b5f060..5de78b4 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1,7 +1,6 @@ libraryDependencies += "org.scala-sbt" %% "scripted-plugin" % sbtVersion.value -addSbtPlugin("org.foundweekends" % "sbt-bintray" % "0.5.3") -addSbtPlugin("com.github.gseitz" % "sbt-release" % "1.0.8") +addSbtPlugin("com.github.sbt" % "sbt-ci-release" % "1.5.12") addSbtPlugin("de.heikoseeberger" % "sbt-header" % "5.0.0") addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.5.2") addSbtPlugin("com.github.sbt" % "sbt-github-actions" % "0.22.0") diff --git a/version.sbt b/version.sbt deleted file mode 100644 index 67d9433..0000000 --- a/version.sbt +++ /dev/null @@ -1 +0,0 @@ -ThisBuild / version := "1.0.1-SNAPSHOT"