mirror of
https://github.com/DorkSquadRR/DorkNet.git
synced 2026-10-26 15:38:45 -07:00
ci: build on push only for client-facing changes
Push builds used to rebuild both platforms for any Jenkinsfile or ci/jenkins/ change, and every build publishes to the downloads page. Now only DorkNet.ClientMod/ and tools/build_pc.py (PC) or DorkNet.Quest/ (Quest) changes rebuild, and Markdown never counts; CI-only changes take a manual run. The README gives the matching Git path filter for the job, so other pushes don't start a run at all.
This commit is contained in:
Vendored
+12
-6
@@ -9,8 +9,9 @@
|
||||
// from the agent's environment (ARCHIVE_PC_REPO / ARCHIVE_QUEST_REPO), each
|
||||
// overridable per run. A build is picked by snapshot tags.
|
||||
//
|
||||
// On a push, only the platforms whose code changed are rebuilt. A manual run
|
||||
// picks the platforms with PLATFORMS. See ci/jenkins/README.md.
|
||||
// A push builds only the platforms whose client code changed (never for
|
||||
// docs or CI-only changes). A manual run picks the platforms with PLATFORMS.
|
||||
// See ci/jenkins/README.md.
|
||||
//
|
||||
// Finished builds are renamed for players and published to the downloads bucket
|
||||
// (ci/downloads) unless PUBLISH_DOWNLOADS is off. The build scripts keep their
|
||||
@@ -76,10 +77,15 @@ pipeline {
|
||||
for (cs in currentBuild.changeSets) {
|
||||
for (entry in cs.items) changed.addAll(entry.affectedPaths)
|
||||
}
|
||||
def touches = { prefixes -> changed.any { p -> prefixes.any { p.startsWith(it) } } }
|
||||
def common = ['Jenkinsfile', 'ci/jenkins/']
|
||||
buildPc = touches(common + ['DorkNet.ClientMod/', 'tools/build_pc.py'])
|
||||
buildQuest = touches(common + ['DorkNet.Quest/'])
|
||||
// Only client-facing changes rebuild (and so republish) a
|
||||
// platform; Markdown doesn't count. The job's Git path filter
|
||||
// uses the same paths, so other pushes don't start a run at all.
|
||||
// A CI-only change (Jenkinsfile, ci/) takes a manual run.
|
||||
def touches = { prefixes ->
|
||||
changed.any { p -> !p.toLowerCase().endsWith('.md') && prefixes.any { p.startsWith(it) } }
|
||||
}
|
||||
buildPc = touches(['DorkNet.ClientMod/', 'tools/build_pc.py'])
|
||||
buildQuest = touches(['DorkNet.Quest/'])
|
||||
echo "Push build; ${changed.size()} changed file(s)"
|
||||
} else {
|
||||
buildPc = params.PLATFORMS in ['both', 'pc']
|
||||
|
||||
Reference in New Issue
Block a user