MekHQ Nightly CI #444
This file contains 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
# Builds MekHQ for CI each Night | |
# | |
# Jobs: | |
# - nightly_ci: Build MekHQ for CI across multiple platforms and Java versions. | |
name: MekHQ Nightly CI | |
on: | |
schedule: | |
# Nightly at Midnight (UTC) | |
# ref: https://crontab.guru/every-night | |
- cron: '0 0 * * *' | |
# Setup the Build Scan "VCS" link for all gradle invocations | |
env: | |
GRADLE_OPTS: "-Dscan.link.VCS=https://github.com/MegaMek/mekhq/commit/${{ github.sha }}" | |
jobs: | |
nightly_ci: | |
runs-on: ${{ matrix.os }} | |
# Run this job once for each combination in the matrix below. | |
strategy: | |
matrix: | |
os: [ ubuntu-latest, windows-latest ] | |
java-distribution: [ temurin ] | |
java-version: [ 11, 17 ] | |
fail-fast: false | |
name: Nightly MekHQ CI ${{ matrix.os }} on ${{ matrix.java-distribution }} JDK ${{ matrix.java-version }} | |
steps: | |
# Checkout the latest source and put it in: ./mekhq | |
- uses: actions/checkout@v4 | |
with: | |
path: mekhq | |
# Setup composite build for MekHQ | |
# See: https://github.com/MegaMek/megamek/wiki/Working-With-Gradle | |
- name: Setup Composite Build for MekHQ | |
run: | | |
echo "includeBuild '../megamek'" >./mekhq/settings_local.gradle | |
echo "includeBuild '../megameklab'" >>./mekhq/settings_local.gradle | |
# Checkout the latest MegaMek source and put it in: ./megamek | |
- name: Checkout MegaMek | |
uses: actions/checkout@v4 | |
with: | |
repository: MegaMek/megamek | |
path: megamek | |
# Checkout the latest MegaMekLab source and put it in: ./megameklab | |
- name: Checkout MegaMekLab | |
uses: actions/checkout@v4 | |
with: | |
repository: MegaMek/megameklab | |
path: megameklab | |
# Setup composite build for MegaMekLab | |
# See: https://github.com/MegaMek/megamek/wiki/Working-With-Gradle | |
- name: Setup Composite Build for MegaMekLab | |
run: | | |
echo "if (gradle.parent == null) includeBuild '../megamek'" >./megameklab/settings_local.gradle | |
# Setup the requested Java Distribution and Version from the matrix | |
- name: Set up ${{ matrix.java-distribution }} JDK ${{ matrix.java-version }} | |
uses: actions/setup-java@v4 | |
with: | |
distribution: ${{ matrix.java-distribution }} | |
java-version: ${{ matrix.java-version }} | |
# Don't run this for Windows. | |
- name: Grant execute permission for gradlew (*nix or MacOS) | |
working-directory: mekhq | |
run: chmod +x gradlew | |
if: runner.os != 'Windows' | |
# Include --stacktrace to make some build failures easier to figure out. | |
- name: Build with Gradle | |
uses: gradle/actions/setup-gradle@v3 | |
with: | |
arguments: clean build -x test --continue --stacktrace --max-workers=1 --scan | |
build-root-directory: mekhq | |
- name: Upload Test Logs on Failure | |
uses: actions/upload-artifact@v4 | |
if: failure() | |
with: | |
name: ${{ matrix.os }}-${{ matrix.java-distribution }}-jdk${{ matrix.java-version }}-ci-failure-logs | |
path: mekhq/MekHQ/build/reports/ | |
# Put the non-Windows Release in an artifact | |
# | |
# NB: Due to a GitHub Actions limitation we won't know what the filename is in order to display it somewhere. | |
- name: Upload Nix/Mac Releases | |
uses: actions/upload-artifact@v4 | |
if: always() && matrix.os == 'ubuntu-latest' | |
with: | |
name: mhq-release-nix-mac-${{ matrix.java-distribution }}-jdk${{ matrix.java-version }} | |
path: mekhq/MekHQ/build/distributions/*.tar | |
# Put the Windows Release in an artifact | |
# | |
# NB: Due to a GitHub Actions limitation we won't know what the filename is in order to display it somewhere. | |
- name: Upload Windows Release | |
uses: actions/upload-artifact@v4 | |
if: always() && matrix.os == 'windows-latest' | |
with: | |
name: mhq-release-win-${{ matrix.java-distribution }}-jdk${{ matrix.java-version }} | |
path: mekhq/MekHQ/build/distributions/mekhq-windows-*.zip |