-
Notifications
You must be signed in to change notification settings - Fork 135
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'refs/heads/master' into mass-print-CGL
- Loading branch information
Showing
1,148 changed files
with
3,359 additions
and
2,144 deletions.
There are no files selected for viewing
This file was deleted.
Oops, something went wrong.
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
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,148 +1,94 @@ | ||
# Builds MegaMekLab for CI (and CD via artifacts) | ||
# | ||
# Jobs: | ||
# - ci_cd: Build MegaMekLab for CI/CD on the specified Operating Systems for the specified Java versions | ||
# - This job will use the MM source directly for the build. | ||
name: MegaMekLab CI with Gradle | ||
|
||
# This Action Definition should be triggered only on | ||
# Pull Requests being added/updated against master. | ||
on: | ||
pull_request: | ||
branches: [ master ] | ||
branches: [master] | ||
|
||
# Setup the Build Scan "VCS" link for all gradle invocations | ||
env: | ||
GRADLE_OPTS: "-Dscan.link.VCS=${{ github.event.pull_request.html_url }}" | ||
|
||
jobs: | ||
# Perform CI (and CD as an artifact) of MegaMekLab any time a pull request is added or updated. | ||
ci_cd: | ||
runs-on: ${{ matrix.os }} | ||
|
||
# Run this job once for each combination in the matrix below. | ||
outputs: | ||
mmRepo: ${{ steps.find_mm.outputs.mmRepo }} | ||
mmBranch: ${{ steps.find_mm.outputs.mmBranch }} | ||
|
||
strategy: | ||
matrix: | ||
os: [ ubuntu-latest ] # For CI/CD running on *nix is sufficient | ||
java-distribution: [ temurin ] | ||
java-version: [ 11, 17 ] | ||
os: [ubuntu-latest] # For CI/CD running on *nix is sufficient | ||
java-distribution: [temurin] | ||
java-version: [17] | ||
fail-fast: false | ||
|
||
steps: | ||
# Checkout the Pull Request source and put it in: ./megameklab | ||
- uses: actions/checkout@v3 | ||
with: | ||
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 "includeBuild '../megamek'" >./megameklab/settings_local.gradle | ||
# Find the repo and branch to use for MM | ||
# | ||
# Output variables: | ||
# | ||
# - mmRepo: The MM repository to use. | ||
# - mmBranch: The MM branch to use. | ||
- name: Find the Right MegaMek Branch | ||
id: find_mm | ||
# Override bash so that it doesn't fail fast (the default) | ||
# if we can't find the branch | ||
shell: bash {0} | ||
# This shell script searches the PR submitter's MM repo for | ||
# a branch that has the same name as the current PR branch. | ||
# If found it sets the `mmRepo` and `mmBranch` step output variables | ||
# to that branch. | ||
run: | | ||
git ls-remote --exit-code --heads ${{ github.event.pull_request.head.repo.owner.html_url }}/megamek.git ${{ github.event.pull_request.head.ref }} | ||
if [ "$?" == "0" ] | ||
then | ||
echo "${{ github.event.pull_request.head.repo.owner.html_url }}" | awk -F/ '{print "::set-output name=mmRepo::" $4 "/megamek"}' | ||
echo "::set-output name=mmBranch::${{ github.event.pull_request.head.ref }}" | ||
else | ||
echo "::set-output name=mmRepo::MegaMek/megamek" | ||
echo "::set-output name=mmBranch::master" | ||
fi | ||
exit 0 | ||
# Checkout the latest MegaMek source and put it in: ./megamek | ||
- name: Checkout MegaMek | ||
uses: actions/checkout@v3 | ||
with: | ||
repository: ${{ steps.find_mm.outputs.mmRepo }} | ||
ref: ${{ steps.find_mm.outputs.mmBranch }} | ||
path: megamek | ||
|
||
# Setup the requested Java Distribution and Version from the matrix | ||
- name: Set up ${{ matrix.java-distribution }} JDK ${{ matrix.java-version }} | ||
uses: actions/setup-java@v3 | ||
with: | ||
distribution: ${{ matrix.java-distribution }} | ||
java-version: ${{ matrix.java-version }} | ||
|
||
# Make sure we can execute the Gradle wrapper | ||
- name: Grant execute permission for gradlew (*nix or MacOS) | ||
working-directory: megameklab | ||
run: chmod +x gradlew | ||
if: runner.os != 'Windows' | ||
|
||
# Build the MegaMekLab project | ||
# | ||
# Directory layout: | ||
# /megameklab | ||
# /gradlew | ||
# /megamek | ||
# | ||
# Output Variables: | ||
# - buildScanUri | ||
- name: Build with Gradle | ||
uses: gradle/gradle-build-action@v2 | ||
with: | ||
arguments: build --stacktrace --max-workers=1 --scan | ||
build-root-directory: megameklab | ||
|
||
# If the build step fails, try to upload any test logs in case it was a unit test failure. | ||
# The logs will be relative to the ./megameklab directory. | ||
- name: Upload Test Logs on Failure | ||
uses: actions/upload-artifact@v3 | ||
if: failure() | ||
with: | ||
name: cd-failure-logs | ||
path: ./megameklab/megameklab/build/reports/ | ||
|
||
# Upload our Code Coverage Reports to CodeCov.io | ||
- name: CodeCov.io Coverage Report | ||
uses: codecov/codecov-action@v3 | ||
with: | ||
directory: ./megameklab/megameklab/build/reports/jacoco/test | ||
fail_ci_if_error: false | ||
verbose: true | ||
|
||
# If we have a buildScanUri comment on the PR | ||
# | ||
# NB: This only works if you're on the main MegaMek\megameklab repo | ||
# for now due to a GitHub Actions limitation. | ||
# CAW: temporarily halted https://github.com/thollander/actions-comment-pull-request/issues/17 | ||
# - name: Comment on PR with Build Scan URI | ||
# uses: thollander/actions-comment-pull-request@master | ||
# if: always() && steps.gradle_build.outputs.buildScanUri != '' | ||
# with: | ||
# message: Build scan available at ${{ steps.gradle_build.outputs.buildScanUri }} | ||
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
|
||
# 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@v3 | ||
with: | ||
name: mml-release-win-${{ matrix.java-distribution }}-jdk${{ matrix.java-version }} | ||
path: ./megameklab/megameklab/build/distributions/*.zip | ||
|
||
# Put the non-Windows release in an artifact | ||
- name: Upload Nix/Mac Release | ||
uses: actions/upload-artifact@v3 | ||
with: | ||
name: mml-release-nix-mac-${{ matrix.java-distribution }}-jdk${{ matrix.java-version }} | ||
path: ./megameklab/megameklab/build/distributions/*.tar | ||
- name: Checking out MegaMekLab | ||
uses: actions/checkout@v4 | ||
with: | ||
path: megameklab | ||
|
||
- name: Find the Right MegaMek Branch | ||
id: find_mm | ||
shell: bash {0} | ||
run: | | ||
git ls-remote --exit-code --heads ${{ github.event.pull_request.head.repo.owner.html_url }}/megamek.git ${{ github.event.pull_request.head.ref }} | ||
if [ "$?" == "0" ] | ||
then | ||
echo "mmRepo=${{ github.event.pull_request.head.repo.owner.login }}/megamek" >> $GITHUB_OUTPUT | ||
echo "mmBranch=${{ github.event.pull_request.head.ref }}" >> $GITHUB_OUTPUT | ||
else | ||
echo "mmRepo=MegaMek/megamek" >> $GITHUB_OUTPUT | ||
echo "mmBranch=master" >> $GITHUB_OUTPUT | ||
fi | ||
exit 0 | ||
- name: Checkout MegaMek | ||
uses: actions/checkout@v4 | ||
with: | ||
repository: ${{ steps.find_mm.outputs.mmRepo }} | ||
ref: ${{ steps.find_mm.outputs.mmBranch }} | ||
path: megamek | ||
|
||
- 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 }} | ||
|
||
- name: Setup Gradle | ||
uses: gradle/actions/setup-gradle@v3 | ||
with: | ||
build-scan-publish: true | ||
build-scan-terms-of-use-url: "https://gradle.com/terms-of-service" | ||
build-scan-terms-of-use-agree: "yes" | ||
|
||
- name: Build with Gradle | ||
working-directory: megameklab | ||
run: ./gradlew build --stacktrace --scan | ||
|
||
- name: Upload Test Logs on Failure | ||
uses: actions/upload-artifact@v4 | ||
if: failure() | ||
with: | ||
name: cd-failure-logs | ||
path: ./megameklab/megameklab/build/reports/ | ||
|
||
- name: CodeCov.io Coverage Report | ||
uses: codecov/codecov-action@v4 | ||
with: | ||
directory: ./megameklab/megameklab/build/reports/jacoco/test | ||
fail_ci_if_error: false | ||
verbose: true | ||
|
||
- name: Upload Windows Release | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: mml-release-win-${{ matrix.java-distribution }}-jdk${{ matrix.java-version }} | ||
path: ./megameklab/megameklab/build/distributions/megameklab-windows-*.zip | ||
|
||
- name: Upload Nix/Mac Release | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: mml-release-nix-mac-${{ matrix.java-distribution }}-jdk${{ matrix.java-version }} | ||
path: ./megameklab/megameklab/build/distributions/megameklab-unix-*.tar.gz |
Oops, something went wrong.