Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
058dc40
Enable parallel forks for test and itest tasks
Vest May 17, 2026
c286e17
Refactor build.gradle: update converterJar task and improve parallel …
Vest May 17, 2026
f333bda
Remove commented-out repository declarations
Vest May 17, 2026
7dbfb9b
Remove unused localOnly property and stale version comment
Vest May 17, 2026
fb08352
Remove calls to undefined commitFile() in release tasks
Vest May 17, 2026
ebd844d
Remove dead testZip task and unused jreImage copySpec
Vest May 17, 2026
be48763
Remove dead NSIS installer scaffolding from release.gradle
Vest May 17, 2026
16c091f
Remove dead programDistsImage launch4j copySpec
Vest May 17, 2026
11f3455
Scope TestFX/Monocle JVM args to the test task
Vest May 17, 2026
ff21be6
Promote testcommon to a dedicated source set
Vest May 17, 2026
a411ef3
Use JUnit BOM and align platform/jupiter versions
Vest May 17, 2026
42e80cc
Loop-generate per-game inttest tasks
Vest May 17, 2026
0e7739b
Bump CodeQL action versions to v3 and checkout to v4
Vest May 17, 2026
2a36fd4
Align release workflow cache restore-keys with primary key
Vest May 17, 2026
7ae46bf
Rename tag-triggered release workflow to disambiguate from manual
Vest May 17, 2026
f270985
Drop redundant 'test' from PR test workflow
Vest May 17, 2026
70bc74d
Drop default and harmful Gradle cache flags from PR workflow
Vest May 17, 2026
4970fcb
Split release pipeline into stages and drop redundant tasks
Vest May 17, 2026
7d67a1a
Collapse triple-overlapping CI cache to setup-gradle only
Vest May 17, 2026
75d6754
Attach release artifacts to GitHub Release
Vest May 17, 2026
ecf9724
Update README to clarify test suite commands and remove redundancy
Vest May 18, 2026
2bef5d1
Cache downloaded JDK and JavaFX archives in release workflows
Vest May 18, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions .github/workflows/codeql-analysis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,11 +39,11 @@ jobs:

steps:
- name: Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v4

# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v2
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
Expand All @@ -54,7 +54,7 @@ jobs:
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v2
uses: github/codeql-action/autobuild@v3

# ℹ️ Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl
Expand All @@ -68,4 +68,4 @@ jobs:
# make release

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v2
uses: github/codeql-action/analyze@v3
70 changes: 37 additions & 33 deletions .github/workflows/gradle-release-manual.yml
Original file line number Diff line number Diff line change
Expand Up @@ -150,16 +150,8 @@ jobs:
with:
java-version: '25'
distribution: 'temurin'
cache: gradle
cache-dependency-path: |
build.gradle
code/gradle/autobuild.gradle
code/gradle/distribution.gradle
code/gradle/release.gradle
code/gradle/reporting.gradle
code/gradle/plugins.gradle

# Configure Gradle for optimal use in GitHub Actions, including caching of downloaded dependencies.

# setup-gradle@v4 is the canonical Gradle cache for GitHub Actions.
# See: https://github.com/gradle/actions/blob/main/setup-gradle/README.md
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
Expand All @@ -168,36 +160,48 @@ jobs:
cache-read-only: false
cache-overwrite-existing: true

- uses: actions/cache@v4
# Cache cross-platform JDK and JavaFX jmod archives downloaded by
# downloadJdk_* / downloadJavaFXMods_* tasks. These are pinned by
# javaVersion (gradle.properties) and the URL templates (build.gradle),
# so keying on those file hashes invalidates correctly when we bump
# the JDK or JavaFX version. We cache only the archives (.tar.gz / .zip)
# and let Gradle re-extract them each run via its own up-to-date checks.
- name: Cache downloaded JDK and JavaFX archives
uses: actions/cache@v4
with:
path: |
${{ github.workspace }}/build/jre
${{ github.workspace }}/build/libs
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
jdks/jdk_*.tar.gz
jdks/jdk_*.zip
jdks/jfx_jmods_*.zip
key: jdks-${{ hashFiles('gradle.properties', 'build.gradle') }}
restore-keys: |
${{ matrix.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
${{ matrix.os }}-gradle
jdks-

- name: Build the image
if: success()
run: ./gradlew clean build copyToOutput test compileSlowtest datatest pfinttest allReports buildDist prepareRelease pcgenRelease
- name: Compile and run unit tests
run: ./gradlew clean build

- name: Upload zip based release assets for all platforms
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.os }}-zip
path: ${{ github.workspace }}/build/release/image-*.zip
- name: Run data and integration tests
run: ./gradlew compileSlowtest datatest pfinttest

- name: Run static analysis reports
run: ./gradlew allReports

- name: Build distribution zips
run: ./gradlew buildDist

- name: Upload DMG release asset for macos
- name: Build release artifacts
run: ./gradlew pcgenRelease

- name: Upload release artifacts as workflow artifacts
uses: actions/upload-artifact@v4
if: matrix.os == 'macos-latest'
with:
name: ${{ matrix.os }}-dmg
path: ${{ github.workspace }}/build/release/*.dmg
name: ${{ matrix.release_suffix }}-release
path: ${{ github.workspace }}/build/release/*
if-no-files-found: error

- name: Upload PKG release asset for macos
uses: actions/upload-artifact@v4
if: matrix.os == 'macos-latest'
- name: Attach release artifacts to GitHub Release
uses: softprops/action-gh-release@v2
with:
name: ${{ matrix.os }}-pkg
path: ${{ github.workspace }}/build/release/*.pkg
tag_name: ${{ inputs.tag_name }}
files: ${{ github.workspace }}/build/release/*
fail_on_unmatched_files: true
93 changes: 38 additions & 55 deletions .github/workflows/gradle-release.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Create Release with Manual Tag
name: Create Release on Tag Push

on:
push:
Expand Down Expand Up @@ -120,16 +120,8 @@ jobs:
with:
java-version: '25'
distribution: 'temurin'
cache: gradle
cache-dependency-path: |
build.gradle
code/gradle/autobuild.gradle
code/gradle/distribution.gradle
code/gradle/release.gradle
code/gradle/reporting.gradle
code/gradle/plugins.gradle

# Configure Gradle for optimal use in GitHub Actions, including caching of downloaded dependencies.

# setup-gradle@v4 is the canonical Gradle cache for GitHub Actions.
# See: https://github.com/gradle/actions/blob/main/setup-gradle/README.md
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
Expand All @@ -138,57 +130,48 @@ jobs:
cache-read-only: false
cache-overwrite-existing: true

- uses: actions/cache@v4
# Cache cross-platform JDK and JavaFX jmod archives downloaded by
# downloadJdk_* / downloadJavaFXMods_* tasks. These are pinned by
# javaVersion (gradle.properties) and the URL templates (build.gradle),
# so keying on those file hashes invalidates correctly when we bump
# the JDK or JavaFX version. We cache only the archives (.tar.gz / .zip)
# and let Gradle re-extract them each run via its own up-to-date checks.
- name: Cache downloaded JDK and JavaFX archives
uses: actions/cache@v4
with:
path: |
${{ github.workspace }}/build/jre
${{ github.workspace }}/build/libs
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
jdks/jdk_*.tar.gz
jdks/jdk_*.zip
jdks/jfx_jmods_*.zip
key: jdks-${{ hashFiles('gradle.properties', 'build.gradle') }}
restore-keys: |
${{ matrix.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
${{ matrix.os }}-gradle
jdks-

- name: Build the image
if: success()
run: ./gradlew clean build copyToOutput test compileSlowtest datatest pfinttest allReports buildDist prepareRelease pcgenRelease
- name: Compile and run unit tests
run: ./gradlew clean build

- name: Upload zip based release assets for all platforms
uses: actions/upload-artifact@v4
if: matrix.os == 'macos-latest'
with:
name: ${{ matrix.os }}-zip
path: ${{ github.workspace }}/build/release/image-*.zip
- name: Run data and integration tests
run: ./gradlew compileSlowtest datatest pfinttest

- name: Run static analysis reports
run: ./gradlew allReports

- name: Build distribution zips
run: ./gradlew buildDist

- name: Upload DMG release asset for macos
- name: Build release artifacts
run: ./gradlew pcgenRelease

- name: Upload release artifacts as workflow artifacts
uses: actions/upload-artifact@v4
if: matrix.os == 'macos-latest'
with:
name: ${{ matrix.os }}-dmg
path: ${{ github.workspace }}/build/release/*.dmg
name: ${{ matrix.release_suffix }}-release
path: ${{ github.workspace }}/build/release/*
if-no-files-found: error

- name: Upload PKG release asset for macos
uses: actions/upload-artifact@v4
if: matrix.os == 'macos-latest'
- name: Attach release artifacts to GitHub Release
uses: softprops/action-gh-release@v2
with:
name: ${{ matrix.os }}-pkg
path: ${{ github.workspace }}/build/release/*.pkg

# - name: Upload release assets for ubuntu
# uses: actions/upload-artifact@v4
# if: matrix.os == 'ubuntu-latest'
# with:
# name: ${{ matrix.os }}
# path: ${{ github.workspace }}/build/jpackage/*.deb
#
# - name: Upload release assets for windows
# uses: actions/upload-artifact@v4
# if: matrix.os == 'windows-latest'
# with:
# name: ${{ matrix.os }}
# path: ${{ github.workspace }}/build/jpackage/*.msi
#
# - name: Release - ${{ matrix.os }}
# uses: softprops/action-gh-release@v2
# with:
# tag_name: ${{ needs.create_release.outputs.tag-name }}
# files: ${{ github.workspace }}/build/release/pcgen-*.*
tag_name: ${{ inputs.tag_name || github.ref_name }}
files: ${{ github.workspace }}/build/release/*
fail_on_unmatched_files: true
28 changes: 3 additions & 25 deletions .github/workflows/gradle-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,39 +22,17 @@ jobs:
with:
java-version: '25'
distribution: 'temurin'
cache: gradle
cache-dependency-path: |
build.gradle
code/gradle/autobuild.gradle
code/gradle/distribution.gradle
code/gradle/release.gradle
code/gradle/reporting.gradle
code/gradle/plugins.gradle

# Configure Gradle for optimal use in GitHub Actions, including caching of downloaded dependencies.
# setup-gradle@v4 is the canonical Gradle cache for GitHub Actions.
# See: https://github.com/gradle/actions/blob/main/setup-gradle/README.md
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
with:
cache-disabled: false
cache-read-only: false
cache-overwrite-existing: true

- uses: actions/cache@v4
with:
path: |
${{ github.workspace }}/build/jre
${{ github.workspace }}/build/libs
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
${{ runner.os }}-gradle

- name: Build with Gradle Wrapper
run: ./gradlew build

- name: Run tests
run: ./gradlew test itest datatest slowtest
- name: Run integration, data, and slow tests
run: ./gradlew itest datatest slowtest

- name: Publish Test Results
uses: EnricoMi/publish-unit-test-result-action@v2
Expand Down
7 changes: 5 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -193,9 +193,12 @@ substitute `./gradlew` for `gradle` on the command line.

### Run Full Test Suite
Do this primarily __before__ pull requests.
This is almost exactly the command Travis runs to verify, if it fails locally you will fail the build, and your PR will not be merged.
This mirrors what GitHub Actions runs to verify a PR; if it fails locally your CI build will also fail and your PR will not be merged.

./gradlew clean build copyToOutput test compileSlowtest datatest pfinttest allReports buildDist
./gradlew build
./gradlew itest datatest slowtest

`build` already runs the unit `test` task via the standard Java lifecycle, so it is not repeated. The second command runs the integration, data, and slow test suites.

### Clean All Build Files
./gradlew clean
Expand Down
Loading
Loading