aboutsummaryrefslogtreecommitdiff
path: root/project/Release.scala
diff options
context:
space:
mode:
authoradelio <adelio@despegar.com>2014-03-30 23:05:17 -0300
committeradelio <adelio@despegar.com>2014-04-03 10:59:25 -0300
commita6e7752525c70bb316ceb09f8daed56cdc0f05d5 (patch)
treeb049ca32bbfe2d07b5774360df7bef6cd74d2e98 /project/Release.scala
parent1f6a3f3bb9c59da198df302193ddf5c29c4e42d6 (diff)
downloadKamon-a6e7752525c70bb316ceb09f8daed56cdc0f05d5.tar.gz
Kamon-a6e7752525c70bb316ceb09f8daed56cdc0f05d5.tar.bz2
Kamon-a6e7752525c70bb316ceb09f8daed56cdc0f05d5.zip
commit SHA support, signed publish support, sonatype support
Diffstat (limited to 'project/Release.scala')
-rw-r--r--project/Release.scala65
1 files changed, 65 insertions, 0 deletions
diff --git a/project/Release.scala b/project/Release.scala
new file mode 100644
index 00000000..8b7ecf30
--- /dev/null
+++ b/project/Release.scala
@@ -0,0 +1,65 @@
+import com.typesafe.sbt.pgp._
+import sbt._
+import sbt.Keys._
+import sbtrelease.ReleasePlugin._
+import sbtrelease.ReleaseStateTransformations._
+import sbtrelease.ReleaseStep
+import sbtrelease.Utilities._
+import xerial.sbt.Sonatype._
+
+object Release {
+
+ def settings = Seq.empty ++
+ releaseSettings ++
+ Seq(
+ ReleaseKeys.releaseProcess := Seq[ReleaseStep](
+ checkSnapshotDependencies,
+ inquireVersions,
+ runClean,
+ runTest,
+ setReleaseVersion,
+ commitReleaseVersion, // .copy(check = identity), // FIX 0: to skip "all changes committed" precondition
+ tagRelease,
+ publishSignedArtifacts, // FIX 1: publish signed. Otherwise sonatype won't sync artifact to maven central
+ setNextVersion,
+ commitNextVersion,
+ pushChanges,
+ refreshVersionWithSHA // FIX 2: update "version" by replacing the "-SNAPSHOT" with "-WHATEVER_COMMIT_SHA"
+ )
+ ) ++
+ sonatypeSettings ++
+ Seq(
+ // sbt-sonatype overrides publishTo. So we need to restore kamon repo declaration for snapshots
+ publishTo := { if (isSnapshot.value) Publish.kamonRepo else publishTo.value }
+ )
+
+
+ def kamonSonatypeCredentials =
+ Credentials.toDirect(Credentials(Path.userHome / ".ivy2" / "kamon-credentials-sonatype.properties"))
+
+ /**
+ * Hijacked from [[sbtrelease.ReleaseStateTransformations.publishArtifacts]]
+ */
+ lazy val publishSignedArtifacts = ReleaseStep(
+ action = { st: State =>
+ val extracted = st.extract
+ val ref = extracted.get(thisProjectRef)
+ extracted.runAggregated(PgpKeys.publishSigned in Global in ref, st)
+ },
+ check = st => {
+ // getPublishTo fails if no publish repository is set up.
+ val ex = st.extract
+ val ref = ex.get(thisProjectRef)
+ Classpaths.getPublishTo(ex.get(publishTo in Global in ref))
+ st
+ },
+ enableCrossBuild = true
+ )
+
+ lazy val refreshVersionWithSHA = ReleaseStep(st => {
+ reapply(Seq(
+ version in ThisBuild := VersionWithSHA.kamonVersionWithSHA(st.extract.get(version))
+ ), st)
+ })
+
+} \ No newline at end of file