Skip to content

Commit 149c57d

Browse files
authored
Merge pull request #475 from typelevel/pr/condensed-summaries
Condense GHA step summaries
2 parents 27cd251 + 0aa52fd commit 149c57d

File tree

3 files changed

+38
-45
lines changed

3 files changed

+38
-45
lines changed

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ jobs:
201201
(echo "$PGP_PASSPHRASE"; echo; echo) | gpg --command-fd 0 --pinentry-mode loopback --change-passphrase $(gpg --list-secret-keys --with-colons 2> /dev/null | grep '^sec:' | cut --delimiter ':' --fields 5 | tail -n 1)
202202
203203
- name: Publish
204-
run: sbt '++ ${{ matrix.scala }}' tlRelease
204+
run: sbt '++ ${{ matrix.scala }}' tlCiRelease
205205

206206
site:
207207
name: Generate Site

ci/src/main/scala/org/typelevel/sbt/TypelevelCiPlugin.scala

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -140,13 +140,20 @@ object TypelevelCiPlugin extends AutoPlugin {
140140
projectName: String,
141141
scalaVersion: String,
142142
results: Tests.Output): String = {
143+
144+
val testHeader: String =
145+
s"""|### ${projectName} Tests Results: ${results.overall}
146+
|To run them locally use `++${scalaVersion} ${projectName}/test`
147+
|""".stripMargin
148+
143149
val tableHeader: String =
144-
s"### ${projectName} Tests Results\n" +
145-
s"To rerun them locally use `++${scalaVersion} ${projectName}/test`\n" +
146-
"|SuiteName|Result|Passed|Failed|Errors|Skipped|Ignored|Canceled|Pending|\n" +
147-
"|-:|-|-|-|-|-|-|-|-|\n"
150+
s"""|<details>
151+
|
152+
||SuiteName|Result|Passed|Failed|Errors|Skipped|Ignored|Canceled|Pending|
153+
||-:|-|-|-|-|-|-|-|-|
154+
|""".stripMargin
148155

149-
val renderedResults = results.events.map {
156+
val tableBody = results.events.map {
150157
case (suiteName, suiteResult) =>
151158
List(
152159
suiteName,
@@ -161,7 +168,10 @@ object TypelevelCiPlugin extends AutoPlugin {
161168
).mkString("|", "|", "|")
162169
}
163170

164-
if (renderedResults.nonEmpty) renderedResults.mkString(tableHeader, "\n", "\n\n")
171+
val table: String = tableBody.mkString(tableHeader, "\n", "\n</details>\n\n")
172+
173+
if (results.events.nonEmpty)
174+
testHeader + table
165175
else ""
166176
}
167177

sonatype-ci-release/src/main/scala/org/typelevel/sbt/TypelevelSonatypeCiReleasePlugin.scala

Lines changed: 21 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import org.typelevel.sbt.gha.GenerativePlugin.autoImport._
2121
import org.typelevel.sbt.gha.GitHubActionsPlugin
2222
import sbt.Keys._
2323
import sbt._
24+
import xerial.sbt.Sonatype.autoImport._
2425

2526
object TypelevelSonatypeCiReleasePlugin extends AutoPlugin {
2627

@@ -41,6 +42,9 @@ object TypelevelSonatypeCiReleasePlugin extends AutoPlugin {
4142
override def globalSettings =
4243
Seq(tlCiReleaseTags := true, tlCiReleaseBranches := Seq())
4344

45+
override def projectSettings =
46+
Seq(commands += tlCiReleaseCommand)
47+
4448
override def buildSettings = Seq(
4549
githubWorkflowEnv ++= List(
4650
"SONATYPE_USERNAME",
@@ -60,48 +64,27 @@ object TypelevelSonatypeCiReleasePlugin extends AutoPlugin {
6064
},
6165
githubWorkflowTargetTags += "v*",
6266
githubWorkflowPublish := Seq(
63-
WorkflowStep.Sbt(List("tlRelease"), name = Some("Publish"))
67+
WorkflowStep.Sbt(List("tlCiRelease"), name = Some("Publish"))
6468
)
6569
)
6670

67-
private def renderSummaryTable(results: Map[String, String]): String =
68-
results
69-
.toList
70-
.map { case (k, v) => s"| ${k} | ${v} |" }
71-
.mkString(s"| Build Result | Value |\n| -: | :- |\n", "\n", "\n\n")
72-
73-
override def projectSettings: Seq[Setting[_]] = Seq(
74-
publish := {
75-
val result: Unit = publish.value
76-
77-
val table: Map[String, String] = {
78-
val map: Map[String, String] = Map("Release version" -> (ThisBuild / version).value)
79-
(ThisBuild / apiURL).value.map(_.toString).fold(map)(r => map + ("Api URL" -> r))
80-
}
81-
val projectName: String = name.value
82-
val maybeMavenResolverUrl: Option[(String, String)] =
83-
(ThisBuild / publishTo).value.collect {
84-
case x: MavenRepo => (x.name, x.root)
85-
case x: MavenRepository => (x.name, x.root)
86-
}
87-
88-
val header: String = s"### ${projectName} Publication Summary\n"
89-
90-
val textToRender: String =
91-
maybeMavenResolverUrl.fold(renderSummaryTable(table)) {
92-
case (n, u) =>
93-
val newTable: Map[String, String] = table + ("Resolver" -> s""""${n}" -> ${u}""")
94-
95-
val instructions: String =
96-
s"To configure your build to use this published version set\n" +
97-
s"""`resolvers += Resolver.url("${n}", url("${u}"))`\n\n"""
98-
99-
renderSummaryTable(newTable) + instructions
71+
private def tlCiReleaseCommand: Command =
72+
Command.command("tlCiRelease") { state =>
73+
val newState = Command.process("tlRelease", state)
74+
newState.getSetting(version).foreach { v =>
75+
val resolver = newState.getSetting(sonatypeDefaultResolver).fold("") {
76+
case repo: MavenRepository =>
77+
s"""|```scala
78+
|resolvers += "${repo.name}" at "${repo.root}"
79+
|```
80+
|""".stripMargin
10081
}
10182

102-
GitHubActionsPlugin.appendtoStepSummary(header + textToRender)
103-
104-
result
83+
GitHubActionsPlugin.appendtoStepSummary(
84+
s"""|## Published `$v`
85+
|${resolver}""".stripMargin
86+
)
87+
}
88+
newState
10589
}
106-
)
10790
}

0 commit comments

Comments
 (0)