87 lines
3.0 KiB
YAML
87 lines
3.0 KiB
YAML
name: Java CI
|
|
|
|
# Pushes to main and pull requests only. A branch with an open pull request used to build twice
|
|
# (once for the push, once for the pull request), which kept the runners queued.
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
tags:
|
|
- '*'
|
|
pull_request:
|
|
paths-ignore:
|
|
- '**.md'
|
|
|
|
# A newer run for the same pull request or branch replaces the older one.
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
build:
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
- name: Set up JDK 17
|
|
uses: actions/setup-java@v6
|
|
with:
|
|
distribution: 'liberica'
|
|
java-version: '17'
|
|
java-package: 'jdk+fx'
|
|
- name: Setup Gradle
|
|
uses: gradle/actions/setup-gradle@v5
|
|
with:
|
|
cache-cleanup: never
|
|
# Only main writes the dependency cache; pull requests read it.
|
|
cache-read-only: ${{ github.ref != 'refs/heads/main' }}
|
|
# The repository's wrapper downloads Gradle itself, so cache that download too.
|
|
- name: Cache Gradle distribution
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: |
|
|
~/.gradle/wrapper
|
|
.gradle/wrapper-neo
|
|
key: gradle-dist-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/wrapper/GradleWrapperNeo.java') }}
|
|
- name: Install Xvfb
|
|
run: |
|
|
# Installing is the slowest setup step, so skip it when the runner already has xvfb, and
|
|
# only refresh the package index when a plain install fails.
|
|
command -v xvfb-run >/dev/null || sudo apt-get install -y --no-install-recommends xvfb \
|
|
|| { sudo apt-get update && sudo apt-get install -y --no-install-recommends xvfb; }
|
|
# One Gradle run builds, tests and runs the code and translation checks, so the
|
|
# project is configured and compiled once instead of in two workflows.
|
|
- name: Build and check with Gradle
|
|
run: xvfb-run --auto-servernum ./gradlew build checkstyle checkTranslations --no-daemon --parallel
|
|
env:
|
|
JAVA_TOOL_OPTIONS: -Djava.awt.headless=true
|
|
MICROSOFT_AUTH_ID: ${{ secrets.MICROSOFT_AUTH_ID }}
|
|
CURSEFORGE_API_KEY: ${{ secrets.CURSEFORGE_API_KEY }}
|
|
- name: Get short SHA
|
|
run: echo "SHORT_SHA=${GITHUB_SHA::7}" >> $GITHUB_ENV
|
|
- name: Upload JAR
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: HMCL-${{ env.SHORT_SHA }}-jar
|
|
path: HMCL/build/libs/HMCL-*.jar
|
|
archive: false
|
|
- name: Upload EXE
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: HMCL-${{ env.SHORT_SHA }}-exe
|
|
path: HMCL/build/libs/HMCL-*.exe
|
|
archive: false
|
|
- name: Upload SH
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: HMCL-${{ env.SHORT_SHA }}-sh
|
|
path: HMCL/build/libs/HMCL-*.sh
|
|
archive: false
|
|
- name: Upload DEB
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: HMCL-${{ env.SHORT_SHA }}-deb
|
|
path: HMCL/build/libs/HMCL-*.deb
|
|
archive: false
|