Skip to content

Commit 4479f0d

Browse files
Merge pull request #1364 from sgeorgakis/master
[SCALA-423] - Customizable release process using sbt-release
2 parents ea2dc12 + 644cdb8 commit 4479f0d

File tree

7 files changed

+51
-2
lines changed

7 files changed

+51
-2
lines changed

build.sbt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
val scalaV = ScalaVersions.scala2Version
22
val scala3Version = ScalaVersions.scala3Version
33
ThisBuild / scalaVersion := scala3Version
4-
ThisBuild / version := "1.0-SNAPSHOT"
54
ThisBuild / organization := "com.baeldung"
65
ThisBuild / organizationName := "core-scala"
7-
86
val jUnitInterface = "com.github.sbt" % "junit-interface" % "0.13.3" % "test"
97
val catsEffect = "org.typelevel" %% "cats-effect" % "3.5.4"
108
val catEffectTest = "org.typelevel" %% "cats-effect-testkit" % "3.5.4" % Test

sbt-release/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
### Relevant Articles

sbt-release/build.sbt

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import ReleaseTransformations.*
2+
3+
lazy val root = (project in file("."))
4+
.settings(
5+
name := "sbt-release"
6+
)
7+
8+
releaseVersionFile := file("version/version.sbt")
9+
releaseCrossBuild := true
10+
releaseUseGlobalVersion := false
11+
releaseVersionBump := sbtrelease.Version.Bump.NextStable
12+
publish / skip := true
13+
14+
releaseTagComment := s"Releasing ${(ThisBuild / version).value} using sbt-release"
15+
releaseCommitMessage := s"Setting version to ${(ThisBuild / version).value} using sbt-release"
16+
releaseNextCommitMessage := s"Setting version to ${(ThisBuild / version).value} using sbt-release"
17+
18+
releaseNextVersion := (releaseVersion => releaseVersion.split("\\.") match {
19+
case Array(major, minor, bugfix) =>
20+
s"$major.$minor.${bugfix.toInt + 1}"
21+
})
22+
23+
val customReleaseStep = ReleaseStep(action = step => {
24+
val extracted = Project.extract(step)
25+
val v = extracted.get(Keys.version)
26+
println(s"Custom release step that prints the new version: $v")
27+
step
28+
})
29+
releaseProcess := Seq[ReleaseStep](
30+
checkSnapshotDependencies, // : ReleaseStep
31+
inquireVersions, // : ReleaseStep
32+
runClean, // : ReleaseStep
33+
runTest, // : ReleaseStep
34+
setReleaseVersion, // : ReleaseStep
35+
commitReleaseVersion, // : ReleaseStep, performs the initial git checks
36+
tagRelease, // : ReleaseStep
37+
// publishArtifacts, // : ReleaseStep, checks whether `publishTo` is properly set up
38+
setNextVersion, // : ReleaseStep
39+
commitNextVersion, // : ReleaseStep
40+
customReleaseStep
41+
// pushChanges // : ReleaseStep, also checks that an upstream branch is properly configured
42+
)

sbt-release/project/build.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
sbt.version = 1.10.0

sbt-release/project/plugins.sbt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
addSbtPlugin("com.github.sbt" % "sbt-release" % "1.4.0")

sbt-release/src/main/scala/Main.scala

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
object Main {
2+
def main(args: Array[String]): Unit = {
3+
println("Hello world!")
4+
}
5+
}

sbt-release/version/version.sbt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
ThisBuild / version := "1.0.0-SNAPSHOT"

0 commit comments

Comments
 (0)