Drop dead Jenkins/Appveyor/SourceForge autobuild infrastructure#7617
Open
Vest wants to merge 4 commits into
Open
Drop dead Jenkins/Appveyor/SourceForge autobuild infrastructure#7617Vest wants to merge 4 commits into
Vest wants to merge 4 commits into
Conversation
The project has run on GitHub Actions exclusively for years; the Jenkins-era autobuild plumbing and an unmaintained Appveyor config are never exercised. Remove them. Build side: - appveyor.yml: deleted. Java 11 matrix on a Java-25 project; no README/docs reference; no workflow consumed it. - code/gradle/autobuild.gradle: drop the BUILD_NUMBER branch that pointed at the SourceForge mirror (/home/pcgen1/public_html/ autobuilds/). destAutobuildDir is now always build/autobuilds. - code/gradle/distribution.gradle: drop the BUILD_NUMBER-gated autobuildSpec (only ever produced an autobuild.properties file from the deleted template) plus the five `with autobuildSpec` consumers in dataZip/docsZip/programZip/libsZip/applicationDist. - code/gradle/autobuild.template: deleted (only consumer was the removed distribution.gradle branch). Java side: the autobuild.properties file is no longer produced, so the runtime branches that read it are dead too: - PCGenPropBundle: drop autobuildProperties field, the static loader block, and getAutobuildNumber/Date/String. java.io.File, FileInputStream, IOException, PropertyResourceBundle imports go with them. - Main: drop the " autobuild #N" suffix from the startup log line. - AboutDialogController: simplify the release-date and version- number lookups to read PCGenPropBundle directly; the isNotBlank-on-autobuild-string branches were unreachable. Drops the StringUtils import. Docs: faqcommunity.md pointed at the SourceForge autobuild docs URL (404). Repoint at the GitHub repo's docs/ directory. Net 226 lines removed.
After removing the BUILD_NUMBER plumbing in the previous commit, the autobuild deployment tasks (copyDocs, copyDist, copySite, copyInstaller, deployAutobuild) and the buildDist `*Zip` artifacts have no consumers: the GitHub release CI runs `pcgenRelease`, which goes through `assembleArtifacts` → `fullJpackage` + `portableZip` to produce native installers and the portable bundle. The legacy distribution-as-five-classified-zips flow was Jenkins/SourceForge era. Removed: - code/gradle/autobuild.gradle (the deploy task chain) - The `apply from: 'code/gradle/autobuild.gradle'` line in build.gradle - code/gradle/distribution.gradle: dataZip / docsZip / programZip / libsZip / buildDist task registrations and the now-orphan libsDistsImage copy spec and zipRootFolder ext - AGENTS.md: the buildDist row in the gradle-tasks table Kept: - distZip / distTar `enabled = false` in build.gradle, with the comment rewritten — the application plugin still registers them and they'd otherwise materialize ~150 runtime JARs into build/distributions/ on every build. The previous comment said the suppression was needed because "CI publishes buildDist zips instead", which is no longer accurate; updated to reflect that jpackage installers are the actual reason. - The four `*DistsImage` copy specs that feed `applicationDistribution.with(...)` — that path is consumed by installDist → jpackage's input directory.
Both were only ever consumed by the deleted autobuild plumbing:
- code/gradle/site/{index,download}.html: only consumer was
autobuild.gradle's `copySite` task, which uploaded the website to
the SourceForge autobuild dir. Last touched 2017 (PCGen#2381 "ADMIN-44
... installer ... deployAutobuild").
- code/gradle/config.ini: zero references anywhere — no .gradle / .java
/ .yml / .xml / .html / .template file points at it. Distinct from
the runtime user-settings config.ini at the repo root that
pcgen.system.ConfigurationSettings reads from CWD. Last touched
2015 (line-ending normalize). A decade-old orphan template.
The remaining files in code/gradle/ (distribution.gradle,
plugins.gradle, release.gradle, releaseUtils.groovy, reporting.gradle)
are all still apply'd from build.gradle and load-bearing.
After auditing every task and ext in release.gradle for consumers, three items had none and went with their dependency chain: - `pcgenReleaseOfficial` (added 2017 in PCGen#2931, never wired into any workflow) and its only-by-it dependency `updateVersionRelease`, plus the only-by-them helper `unSnapshotVersion()` in releaseUtils.groovy. - The `releaseNotes` ext (built a path string but no task or other ext ever read it) and its only-by-it derivation `shortVerNum`. Updated build.gradle's `plainVerNum` comment to mention only its remaining consumer (jpackage's appVersion at line 341); the comment previously claimed shared use with the now-deleted releaseNotes path. Dropped the `pcgenReleaseOfficial` row from AGENTS.md. Kept everything still wired to a workflow: - pcgenRelease (gradle-release.yml, gradle-release-manual.yml, gradle-nightly.yml) - updateVersionToNext (gradle-release-manual.yml's bump-to-next-dev step) - prepareRelease, assembleArtifacts, sourcesJar (transitively required by pcgenRelease) - updateVersion() in releaseUtils.groovy (called by updateVersionToNext)
Contributor
Author
|
@karianna , I know, there is much text. It is more for the reporting reasons, why I need this PR. I think, many files were dead, and we don't need them to prepare the release. |
Contributor
|
I'll hold off on this one until we're really sure we can do an 'official' release from the GH Actions |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
PCGen has been released exclusively through GitHub Actions for some time. A lot of the surrounding
code/gradle/machinery — and one orphanappveyor.yml— is left over from the Jenkins / SourceForge /BUILD_NUMBERera and is never exercised. This PR removes that dead surface in five focused commits.The release pipeline itself is untouched:
pcgenReleaseandupdateVersionToNext(the only Gradle release tasks any workflow actually invokes) and thegradle-release.yml/gradle-release-manual.yml/gradle-nightly.ymlworkflows all keep working. Verified by configuring the build (./gradlew help --task pcgenRelease) and recompiling (./gradlew compileJava) after each commit. Net ~440 lines removed across the five commits.Why each item is dead
1. Jenkins / Appveyor / SourceForge autobuild plumbing (commit 1)
appveyor.yml— Java 11 matrix on a Java 25 project, last meaningfully touched 2026-02-26 only as a drive-by inside an unrelated PR. No README, doc, or workflow references it.BUILD_NUMBER-gated branches inautobuild.gradleanddistribution.gradle— Jenkins set this env var, GitHub Actions does not. The active branch wrote artifacts to/home/pcgen1/public_html/autobuilds/on SourceForge.code/gradle/autobuild.template— theautobuild.propertiestemplate the above branches expanded; nothing else read it.autobuild.propertiesno longer produced, the Java branches that read it are unreachable too. RemovedPCGenPropBundle.autobuildPropertiesfield, its static loader, andgetAutobuildNumber/getAutobuildDate/getAutobuildString; the" autobuild #N"suffix inMain's startup log; theisNotBlank(getAutobuildDate())/isNotBlank(getAutobuildNumber())branches inAboutDialogController. Orphaned imports go with them.faqcommunity.mdpointed atpcgen.sourceforge.net/autobuilds/pcgen-docs/(404). Repointed at the GitHubdocs/tree.2. The
buildDistzip chain andautobuild.gradleitself (commit 2)After commit 1, no consumer remains for
autobuild.gradleor the five-zip distribution flow it fed:autobuild.gradle(thecopyDocs/copyDist/copySite/copyInstaller/deployAutobuildchain) was the entire purpose of those tasks.buildDistand itsdataZip/docsZip/programZip/libsZiptask registrations indistribution.gradlehad exactly one external invocation:appveyor.yml:16, which commit 1 deleted. No GitHub workflow ever calledbuildDist. ThelibsDistsImageandzipRootFolderext properties only fed those tasks.distZip { enabled = false }/distTar { enabled = false }comment inbuild.gradle— the previous comment said the suppression was needed because "CI publishes the custombuildDistzips instead", which is no longer accurate. The suppression itself is kept (otherwise the application plugin would materialize ~150 runtime JARs intobuild/distributions/on every build); reason updated to "jpackage installers are what CI publishes".The four
*DistsImagecopy specs that feedapplicationDistribution.with(...)are kept — that path is consumed byinstallDist→ jpackage's input directory and is on the active release path.3. Orphan
code/gradle/config.iniandcode/gradle/site/(commit 3)After commit 2:
code/gradle/site/{download,index}.htmlwas uploaded byautobuild.gradle::copySiteto the SourceForge autobuild site. Last touched 2017 in Admin 44 #2381 ("Admin 44 ... installer ... deployAutobuild"). Withautobuild.gradlegone, nothing references the directory.code/gradle/config.inihad zero references anywhere — no.gradle,.java,.yml,.xml,.html,.template, or.mdfile points at it. It is distinct from the runtime user-settings/config.iniat the repo root thatpcgen.system.ConfigurationSettingsreads from CWD; that one is untouched. Last touched 2015-05-17 (line-ending normalization) — a decade-old orphan template.4. Dead release tasks:
pcgenReleaseOfficialandreleaseNotesext (commit 5)Audited every task and
extinrelease.gradlefor consumers. Three items had none and went with their dependency chain:pcgenReleaseOfficialtask — added in 2017 (add pcgenReleaseOfficial #2931), never wired into any workflow or other Gradle file. Only invoker would be a manual./gradlew pcgenReleaseOfficialcommand, which the release workflow does not run.updateVersionReleasetask — only consumer waspcgenReleaseOfficial.unSnapshotVersion()inreleaseUtils.groovy— only consumer wasupdateVersionRelease.releaseNotesext + theshortVerNumext that derived it —releaseNotesbuilt a path string into${projectDir}/installers/release-notes/pcgen-release-notes-<verNum>.html, but no task, jpackage configuration, or other Gradle code ever read it. Updated theplainVerNumcomment inbuild.gradleto mention only its remaining consumer (jpackage'sappVersionderivation).Kept everything still wired to a workflow — see the next section.
How releases work after this PR
Releases are driven by
gradle-release-manual.yml(workflow_dispatch). The release version is supplied as an input, e.g.6.09.08or6.09.08.RC1. Tags are created by the workflow, not consumed as input — the operator does not pre-create a tag.End-to-end flow:
release_version=6.09.08(novprefix, no-SNAPSHOTsuffix; the workflow validates this).vX.Y.Zis not already taken on the remote.sedsversion=ingradle.propertiesto the requested release version (no-SNAPSHOT), commits asRelease v<version>, and pushes to the dispatched branch. This is plainsedin the workflow — there is no Gradle helper involved at this step. The deletedunSnapshotVersion()was never part of this path.vX.Y.Zand pushes the tag, which creates the GitHub Release and uploads the per-platform jpackage installers + portable zips assembled bypcgenRelease../gradlew build compileSlowtest datatest pfinttest pcgenRelease.pcgenRelease→prepareRelease(build) +assembleArtifacts(sourcesJar + fullJpackage + portableZip intoreleaseDir) — all kept../gradlew --no-daemon --no-configuration-cache updateVersionToNext, which callsupdateVersion()inreleaseUtils.groovy(kept) — increments the trailing numeric token by one, zero-padded, and appends-SNAPSHOT. Workflow commits the result back to the dispatched branch asBump to next dev version.The companion
gradle-release.yml(workflow_dispatch with a tag input) is the manual re-build path: an operator supplies a pre-existing tag and the workflow validates thatgradle.properties's version matches the tag, then runs the samepcgenReleasebuild. This is for re-issuing a build off an existing tag without bumping versions.gradle-nightly.ymlruns the samepcgenReleaseinvocation on a schedule, taggingv<base>-NIGHTLY.<YYYYMMDD>and pruning older nightlies.So tags are central: the manual workflow creates them on success, the rebuild workflow validates against them, and nightly creates dated ones. The Gradle side only handles two version-bump operations (the workflow does the strip-to-release with
sed, andupdateVersionToNextdoes the bump-to-next-dev), and only the second one is still needed inreleaseUtils.groovy.What's kept
Everything still reachable from a workflow:
pcgenRelease,prepareRelease,assembleArtifacts,sourcesJar(release.gradle)gradle-release.yml,gradle-release-manual.yml,gradle-nightly.ymlupdateVersionToNext(release.gradle)gradle-release-manual.ymlbump-to-next-dev stepupdateVersion()helper (releaseUtils.groovy)updateVersionToNextdataDistsImage,docsDistsImage,programScriptImage,charactersImage(distribution.gradle)applicationDistribution.with(...)→installDist→ jpackagedistribution.gradle,plugins.gradle,release.gradle,releaseUtils.groovy,reporting.gradlebuild.gradleand load-bearingdistZip/distTarenabled = falseblockTest plan
./gradlew compileJavaclean after each commit./gradlew :test --tests pcgen.gui3.dialog.AboutDialogTestpasses (the only test directly exercising the touched UI code)./gradlew help --task pcgenReleaseand--task updateVersionToNextresolve./gradlew help --task pcgenReleaseOfficialcorrectly reports the task is gone