Skip to content

Commit

Permalink
Merge pull request #475 from typelevel/pr/condensed-summaries
Browse files Browse the repository at this point in the history
Condense GHA step summaries
  • Loading branch information
armanbilge committed Mar 4, 2023
2 parents 27cd251 + 0aa52fd commit 149c57d
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 45 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -201,7 +201,7 @@ jobs:
(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)
- name: Publish
run: sbt '++ ${{ matrix.scala }}' tlRelease
run: sbt '++ ${{ matrix.scala }}' tlCiRelease

site:
name: Generate Site
Expand Down
22 changes: 16 additions & 6 deletions ci/src/main/scala/org/typelevel/sbt/TypelevelCiPlugin.scala
Original file line number Diff line number Diff line change
Expand Up @@ -140,13 +140,20 @@ object TypelevelCiPlugin extends AutoPlugin {
projectName: String,
scalaVersion: String,
results: Tests.Output): String = {

val testHeader: String =
s"""|### ${projectName} Tests Results: ${results.overall}
|To run them locally use `++${scalaVersion} ${projectName}/test`
|""".stripMargin

val tableHeader: String =
s"### ${projectName} Tests Results\n" +
s"To rerun them locally use `++${scalaVersion} ${projectName}/test`\n" +
"|SuiteName|Result|Passed|Failed|Errors|Skipped|Ignored|Canceled|Pending|\n" +
"|-:|-|-|-|-|-|-|-|-|\n"
s"""|<details>
|
||SuiteName|Result|Passed|Failed|Errors|Skipped|Ignored|Canceled|Pending|
||-:|-|-|-|-|-|-|-|-|
|""".stripMargin

val renderedResults = results.events.map {
val tableBody = results.events.map {
case (suiteName, suiteResult) =>
List(
suiteName,
Expand All @@ -161,7 +168,10 @@ object TypelevelCiPlugin extends AutoPlugin {
).mkString("|", "|", "|")
}

if (renderedResults.nonEmpty) renderedResults.mkString(tableHeader, "\n", "\n\n")
val table: String = tableBody.mkString(tableHeader, "\n", "\n</details>\n\n")

if (results.events.nonEmpty)
testHeader + table
else ""
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import org.typelevel.sbt.gha.GenerativePlugin.autoImport._
import org.typelevel.sbt.gha.GitHubActionsPlugin
import sbt.Keys._
import sbt._
import xerial.sbt.Sonatype.autoImport._

object TypelevelSonatypeCiReleasePlugin extends AutoPlugin {

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

override def projectSettings =
Seq(commands += tlCiReleaseCommand)

override def buildSettings = Seq(
githubWorkflowEnv ++= List(
"SONATYPE_USERNAME",
Expand All @@ -60,48 +64,27 @@ object TypelevelSonatypeCiReleasePlugin extends AutoPlugin {
},
githubWorkflowTargetTags += "v*",
githubWorkflowPublish := Seq(
WorkflowStep.Sbt(List("tlRelease"), name = Some("Publish"))
WorkflowStep.Sbt(List("tlCiRelease"), name = Some("Publish"))
)
)

private def renderSummaryTable(results: Map[String, String]): String =
results
.toList
.map { case (k, v) => s"| ${k} | ${v} |" }
.mkString(s"| Build Result | Value |\n| -: | :- |\n", "\n", "\n\n")

override def projectSettings: Seq[Setting[_]] = Seq(
publish := {
val result: Unit = publish.value

val table: Map[String, String] = {
val map: Map[String, String] = Map("Release version" -> (ThisBuild / version).value)
(ThisBuild / apiURL).value.map(_.toString).fold(map)(r => map + ("Api URL" -> r))
}
val projectName: String = name.value
val maybeMavenResolverUrl: Option[(String, String)] =
(ThisBuild / publishTo).value.collect {
case x: MavenRepo => (x.name, x.root)
case x: MavenRepository => (x.name, x.root)
}

val header: String = s"### ${projectName} Publication Summary\n"

val textToRender: String =
maybeMavenResolverUrl.fold(renderSummaryTable(table)) {
case (n, u) =>
val newTable: Map[String, String] = table + ("Resolver" -> s""""${n}" -> ${u}""")

val instructions: String =
s"To configure your build to use this published version set\n" +
s"""`resolvers += Resolver.url("${n}", url("${u}"))`\n\n"""

renderSummaryTable(newTable) + instructions
private def tlCiReleaseCommand: Command =
Command.command("tlCiRelease") { state =>
val newState = Command.process("tlRelease", state)
newState.getSetting(version).foreach { v =>
val resolver = newState.getSetting(sonatypeDefaultResolver).fold("") {
case repo: MavenRepository =>
s"""|```scala
|resolvers += "${repo.name}" at "${repo.root}"
|```
|""".stripMargin
}

GitHubActionsPlugin.appendtoStepSummary(header + textToRender)

result
GitHubActionsPlugin.appendtoStepSummary(
s"""|## Published `$v`
|${resolver}""".stripMargin
)
}
newState
}
)
}

0 comments on commit 149c57d

Please sign in to comment.