Test Tools Data #177
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
name: Test Tools Data | |
on: | |
schedule: | |
# At 03:07 on Saturday (because why not) | |
- cron: "7 3 * * 6" | |
workflow_dispatch: | |
env: | |
JAVA_VERSION: 17 | |
NATIVE_VERSION: 22.3.2 | |
GRAALVM_DIST: graalvm-community | |
JAVA_DISTRO: temurin | |
FAIL_ISSUE: 140 | |
permissions: read-all | |
jobs: | |
cache-setup: | |
runs-on: ubuntu-latest | |
outputs: | |
cache_key: ${{ steps.test-data-key.outputs.cache_key }} | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
fetch-depth: 1 | |
- name: Tools release cache key | |
id: test-data-key | |
run: | | |
LATEST_VERSION="v1.209.3" | |
echo "🔹 Use $LATEST_VERSION" | |
echo "tools_version=${LATEST_VERSION}" >> $GITHUB_OUTPUT | |
echo "cache_key=Data-5etools-${LATEST_VERSION}" >> $GITHUB_OUTPUT | |
- name: Check Cache Data | |
id: test-data-check | |
uses: actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2 | |
with: | |
path: sources | |
key: ${{ steps.test-data-key.outputs.cache_key }} | |
lookup-only: true | |
enableCrossOsArchive: true | |
- name: Download Test Data | |
id: test-data-download | |
if: steps.test-data-check.outputs.cache-hit != 'true' | |
env: | |
LATEST_VERSION: ${{ steps.test-data-key.outputs.tools_version }} | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: | | |
mkdir -p sources | |
# echo "🔹 Download $LATEST_VERSION" | |
# ARTIFACT_URL="https://github.com/5etools-mirror-2/5etools-mirror-2.github.io/archive/refs/tags/$LATEST_VERSION.tar.gz" | |
# VER=$(echo $LATEST_VERSION | cut -c 2-) | |
# ROOT="5etools-mirror-2.github.io-$VER" | |
# curl -LsS -o 5etools.tar.gz $ARTIFACT_URL | |
# tar xzf 5etools.tar.gz ${ROOT}/data | |
# mv ${ROOT} sources/5etools-mirror-2.github.io | |
# gh repo clone 5etools-mirror-2/5etools-img sources/5etools-img -- --depth=1 | |
# gh repo clone TheGiddyLimit/unearthed-arcana sources/5e-unearthed-arcana -- --depth=1 | |
# gh repo clone TheGiddyLimit/homebrew sources/5e-homebrew -- --depth=1 | |
# # Remove image contents. We just need the files to exist (linking) | |
# find sources -type f -type f \ | |
# \( -iname \*.jpg -o -iname \*.png -o -iname \*.webp \) \ | |
# | while read FILE; do echo > "$FILE"; done | |
ls -al sources | |
test-with-data: | |
name: Test with data | |
needs: cache-setup | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
fetch-depth: 1 | |
- uses: actions/cache/restore@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2 | |
id: cache | |
with: | |
path: sources | |
key: ${{ needs.cache-setup.outputs.cache_key }} | |
fail-on-cache-miss: true | |
- name: Set up JDK ${{ env.JAVA_VERSION }} | |
uses: actions/setup-java@8df1039502a15bceb9433410b1a100fbe190c53b # v4.5.0 | |
with: | |
java-version: ${{ env.JAVA_VERSION }} | |
distribution: ${{ env.JAVA_DISTRO }} | |
cache: maven | |
- name: Build with Maven | |
id: mvn-build | |
run: | | |
ls -al sources | |
./mvnw -B -ntp -DskipFormat verify | |
native-test-with-data: | |
name: Test on ${{ matrix.os }} | |
needs: [cache-setup, test-with-data] | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
max-parallel: 1 | |
matrix: | |
os: [windows-latest, macos-latest, ubuntu-latest] | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
fetch-depth: 1 | |
- uses: actions/cache/restore@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2 | |
id: cache | |
with: | |
path: sources | |
key: ${{ needs.cache-setup.outputs.cache_key }} | |
fail-on-cache-miss: true | |
enableCrossOsArchive: true | |
- uses: graalvm/setup-graalvm@557ffcf459751b4d92319ee255bf3bec9b73964c # v1.2.5 | |
with: | |
distribution: ${{ env.GRAALVM_DIST }} | |
java-version: ${{ env.JAVA_VERSION }} | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
version: ${{ env.NATIVE_VERSION }} | |
cache: 'maven' | |
- name: Build and run | |
id: mvn-build | |
run: | | |
./mvnw -B -ntp -DskipFormat -DargLine="-Xmx6g" verify | |
- if: runner.os == 'Windows' | |
name: clean before native build | |
shell: cmd | |
run: | | |
./mvnw -B -ntp -DskipFormat clean | |
- name: Build and run in native mode | |
id: mvn-native-build | |
run: | | |
./mvnw -B -ntp -Dnative -DskipTests -DskipFormat verify | |
report-native-build: | |
name: Report errors | |
runs-on: ubuntu-latest | |
if: ${{ failure() }} | |
needs: [test-with-data, native-test-with-data] | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
fetch-depth: 1 | |
- id: gh-issue | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: | | |
gh issue comment ${{ env.FAIL_ISSUE }} --body "[Maven build failed: ${{ github.run_id }}](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }})" | |
gh issue reopen ${{ env.FAIL_ISSUE }} |