1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
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)
})
}
|