Let auto-build slots run their own build command under their own name
A branches.<name>.autoBuild.times entry is now either a plain HH:MM string or an object with time, its own buildCommand, and a name, so a nightly slot can run a fuller check than the on-commit builds. The watcher passes the slot's command and name to the executor, persisted in the build result — UI restarts, gittally retry, and the startup recovery repeat a build with the command and name it originally ran under. A named slot (e.g. master@nightly) gets its own pool: repository grouping, retention count, branches-view row (sorted after its branch), latest status, and permanent latest-green artifact link are keyed by the build name, while origin lookups, gone-branch pruning, worktrees, and Gitea links/statuses stay keyed by the real branch. Without a name, slot builds share the branch's pool as before. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
f292badac1
commit
8aee3190ea
@@ -47,6 +47,39 @@ class ConfigLoaderTest : FunSpec() {
|
||||
loader.load(dir).builds.maxConcurrent shouldBe 3
|
||||
}
|
||||
|
||||
test("autoBuild.times accepts plain HH:MM entries and slot objects with their own build command, mixed") {
|
||||
val dir = Files.createTempDirectory("gittally-test")
|
||||
dir.resolve(".gittally.yml").toFile().writeText(
|
||||
"""
|
||||
branches:
|
||||
main:
|
||||
autoBuild:
|
||||
enabled: true
|
||||
times:
|
||||
- "01:00"
|
||||
- time: "04:00"
|
||||
buildCommand: ./gradlew fullCheck
|
||||
name: main@nightly
|
||||
""".trimIndent(),
|
||||
)
|
||||
|
||||
val times =
|
||||
loader
|
||||
.load(dir)
|
||||
.branches
|
||||
.getValue("main")
|
||||
.autoBuild.times
|
||||
|
||||
times shouldBe
|
||||
listOf(
|
||||
AutoBuildSlot("01:00"),
|
||||
AutoBuildSlot("04:00", "./gradlew fullCheck", "main@nightly"),
|
||||
)
|
||||
// config:print round-trip: a slot without its own command serializes back to the plain string
|
||||
loader.toYaml(times) shouldBe
|
||||
"- \"01:00\"\n- time: \"04:00\"\n buildCommand: \"./gradlew fullCheck\"\n name: \"main@nightly\"\n"
|
||||
}
|
||||
|
||||
test("repo install config overrides project config for same keys") {
|
||||
val dir = Files.createTempDirectory("gittally-test")
|
||||
dir.resolve(".gittally.yml").toFile().writeText(
|
||||
|
||||
Reference in New Issue
Block a user