From 3c2cc1610dbd9f2f4f46c1a53d64674411200444 Mon Sep 17 00:00:00 2001 From: Chris Birchall Date: Tue, 23 Dec 2014 13:15:10 +0900 Subject: [PATCH 1/5] Add sbt-release plugin --- project/Build.scala | 7 ++++++- project/plugins.sbt | 2 ++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/project/Build.scala b/project/Build.scala index 586557d1..064cf501 100644 --- a/project/Build.scala +++ b/project/Build.scala @@ -7,6 +7,9 @@ import SonatypeKeys._ import net.virtualvoid.sbt.graph.Plugin._ import org.scoverage.coveralls.CoverallsPlugin import org.scoverage.coveralls.CoverallsPlugin.CoverallsKeys._ +import com.typesafe.sbt.pgp.PgpKeys +import sbtrelease.ReleasePlugin._ +import sbtrelease.ReleasePlugin.ReleaseKeys._ object ScalaCacheBuild extends Build { @@ -110,13 +113,15 @@ object ScalaCacheBuild extends Build { scalariformSettings ++ formatterPrefs ++ graphSettings ++ + releaseSettings ++ Seq( organization := "com.github.cb372", version := Versions.project, scalaVersion := Versions.scala, scalacOptions ++= Seq("-unchecked", "-deprecation", "-feature"), libraryDependencies ++= commonDeps, - parallelExecution in Test := false + parallelExecution in Test := false, + publishArtifactsAction := PgpKeys.publishLocalSigned.value ) lazy val implProjectSettings = commonSettings ++ Seq( diff --git a/project/plugins.sbt b/project/plugins.sbt index bcfbb9f3..82daacca 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -9,3 +9,5 @@ addSbtPlugin("net.virtual-void" % "sbt-dependency-graph" % "0.7.4") addSbtPlugin("org.scoverage" % "sbt-scoverage" % "1.0.1") addSbtPlugin("org.scoverage" % "sbt-coveralls" % "1.0.0.BETA1") + +addSbtPlugin("com.github.gseitz" % "sbt-release" % "0.8.5") From e50bd5da6c90ddad7d5d0933df5f185a8be2b788 Mon Sep 17 00:00:00 2001 From: Chris Birchall Date: Tue, 23 Dec 2014 14:29:23 +0900 Subject: [PATCH 2/5] Use version.sbt for version --- project/Build.scala | 2 -- version.sbt | 1 + 2 files changed, 1 insertion(+), 2 deletions(-) create mode 100644 version.sbt diff --git a/project/Build.scala b/project/Build.scala index 064cf501..53a44a8e 100644 --- a/project/Build.scala +++ b/project/Build.scala @@ -16,7 +16,6 @@ object ScalaCacheBuild extends Build { object Versions { val scala = "2.11.4" - val project = "0.5.0-SNAPSHOT" } lazy val root = Project(id = "scalacache",base = file(".")) @@ -116,7 +115,6 @@ object ScalaCacheBuild extends Build { releaseSettings ++ Seq( organization := "com.github.cb372", - version := Versions.project, scalaVersion := Versions.scala, scalacOptions ++= Seq("-unchecked", "-deprecation", "-feature"), libraryDependencies ++= commonDeps, diff --git a/version.sbt b/version.sbt new file mode 100644 index 00000000..404aa03e --- /dev/null +++ b/version.sbt @@ -0,0 +1 @@ +version in ThisBuild := "0.5.0-SNAPSHOT" From 8023b59a9b923e701470c1dbc30f43ecd0f95ab9 Mon Sep 17 00:00:00 2001 From: Chris Birchall Date: Tue, 23 Dec 2014 13:34:50 +0900 Subject: [PATCH 3/5] Add release step to update version numbers in readme --- project/Build.scala | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/project/Build.scala b/project/Build.scala index 53a44a8e..4ed52f22 100644 --- a/project/Build.scala +++ b/project/Build.scala @@ -8,9 +8,12 @@ import net.virtualvoid.sbt.graph.Plugin._ import org.scoverage.coveralls.CoverallsPlugin import org.scoverage.coveralls.CoverallsPlugin.CoverallsKeys._ import com.typesafe.sbt.pgp.PgpKeys +import sbtrelease._ import sbtrelease.ReleasePlugin._ import sbtrelease.ReleasePlugin.ReleaseKeys._ +import sbtrelease.ReleaseStateTransformations._ +import scala.language.postfixOps object ScalaCacheBuild extends Build { @@ -119,7 +122,22 @@ object ScalaCacheBuild extends Build { scalacOptions ++= Seq("-unchecked", "-deprecation", "-feature"), libraryDependencies ++= commonDeps, parallelExecution in Test := false, - publishArtifactsAction := PgpKeys.publishLocalSigned.value + publishArtifactsAction := PgpKeys.publishLocalSigned.value, + ReleaseKeys.releaseProcess := Seq[ReleaseStep]( + checkSnapshotDependencies, + inquireVersions, + runClean, + runTest, + setReleaseVersion, + commitReleaseVersion, + updateVersionInReadme, + tagRelease, + publishArtifacts, + setNextVersion, + commitNextVersion, + pushChanges + ), + commands += Command.command("update-version-in-readme")(updateVersionInReadme) ) lazy val implProjectSettings = commonSettings ++ Seq( @@ -165,6 +183,18 @@ object ScalaCacheBuild extends Build { .setPreference(AlignParameters, true) .setPreference(DoubleIndentClassDeclaration, true) ) + + lazy val updateVersionInReadme = ReleaseStep(action = st => { + val extracted = Project.extract(st) + val projectVersion = extracted.get(Keys.version) + + println(s"Updating project version to $projectVersion in the README") + Process(Seq("sed", "-i", "", "-E", "-e", s"""s/"scalacache-(.*)" % ".*"/"scalacache-\\1" % "$projectVersion"/g""", "README.md")).! + println("Committing README.md") + Process(Seq("git", "commit", "README.md", "-m", s"Update project version in README to $projectVersion")).! + + st + }) } From 8e29d487f4f8cd03fa12ea6169b47bbf702673c3 Mon Sep 17 00:00:00 2001 From: Chris Birchall Date: Tue, 23 Dec 2014 14:34:29 +0900 Subject: [PATCH 4/5] Deploy to Sonatype OSS when releasing --- project/Build.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project/Build.scala b/project/Build.scala index 4ed52f22..a5b78cb9 100644 --- a/project/Build.scala +++ b/project/Build.scala @@ -122,7 +122,7 @@ object ScalaCacheBuild extends Build { scalacOptions ++= Seq("-unchecked", "-deprecation", "-feature"), libraryDependencies ++= commonDeps, parallelExecution in Test := false, - publishArtifactsAction := PgpKeys.publishLocalSigned.value, + publishArtifactsAction := PgpKeys.publishSigned.value, ReleaseKeys.releaseProcess := Seq[ReleaseStep]( checkSnapshotDependencies, inquireVersions, From da9eaddf3976976b6efbc972fe2d9010a76c6ddf Mon Sep 17 00:00:00 2001 From: Chris Birchall Date: Tue, 23 Dec 2014 14:39:04 +0900 Subject: [PATCH 5/5] Add a release step to promote and release the Sonataype OSS repo --- project/Build.scala | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/project/Build.scala b/project/Build.scala index a5b78cb9..3e8bb009 100644 --- a/project/Build.scala +++ b/project/Build.scala @@ -135,7 +135,8 @@ object ScalaCacheBuild extends Build { publishArtifacts, setNextVersion, commitNextVersion, - pushChanges + pushChanges, + deployToMavenCentral ), commands += Command.command("update-version-in-readme")(updateVersionInReadme) ) @@ -195,6 +196,8 @@ object ScalaCacheBuild extends Build { st }) + + lazy val deployToMavenCentral = ReleaseStep(action = releaseTask(sonatypeReleaseAll)) }