Skip to content

Test Tools Data

Test Tools Data #79

Workflow file for this run

name: Test Tools Data
on:
schedule:
# At 03:07 on Saturday (because why not)
- cron: "7 3 * * 6"
workflow_dispatch:
env:
JAVA_VERSION: 17
GRAALVM_VERSION: 22.3.2
JAVA_DISTRO: temurin
FAIL_ISSUE: 140
jobs:
cache-setup:
runs-on: ubuntu-latest
outputs:
cache_key: ${{ steps.test-data-key.outputs.cache_key }}
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 1
- name: Tools release cache key
id: test-data-key
run: |
LATEST_RELEASE=$(curl -sLH 'Accept: application/json' https://api.github.com/repos/5etools-mirror-1/5etools-mirror-1.github.io/releases/latest)
LATEST_VERSION=$(echo $LATEST_RELEASE | grep tag_name | sed -e 's/.*"tag_name": "\([^"]*\)".*/\1/')
echo $LATEST_VERSION
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/[email protected]
with:
path: sources/5etools-mirror-1.github.io
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 }}
run: |
echo "🔹 Download $LATEST_VERSION"
ARTIFACT_URL="https://github.com/5etools-mirror-1/5etools-mirror-1.github.io/archive/refs/tags/$LATEST_VERSION.tar.gz"
VER=$(echo $LATEST_VERSION | cut -c 2-)
ROOT="5etools-mirror-1.github.io-$VER"
curl -LsS -o 5etools.tar.gz $ARTIFACT_URL
tar xzf 5etools.tar.gz ${ROOT}/data ${ROOT}/img
# Remove image contents. We just need the files to exist (linking)
find ${ROOT}/img -type f | while read FILE; do echo > "$FILE"; done
mkdir -p sources
rm -rvf sources/5etools-mirror-1.github.io
mv ${ROOT} sources/5etools-mirror-1.github.io
test-with-data:
name: Test with data
needs: cache-setup
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 1
- uses: actions/cache/[email protected]
id: cache
with:
path: sources/5etools-mirror-1.github.io
key: ${{ needs.cache-setup.outputs.cache_key }}
fail-on-cache-miss: true
- name: Set up JDK ${{ env.JAVA_VERSION }}
uses: actions/setup-java@v3
with:
java-version: ${{ env.JAVA_VERSION }}
distribution: ${{ env.JAVA_DISTRO }}
cache: maven
- name: Build with Maven
id: mvn-build
run: |
./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@v3
with:
fetch-depth: 1
- uses: actions/cache/[email protected]
id: cache
with:
path: sources/5etools-mirror-1.github.io
key: ${{ needs.cache-setup.outputs.cache_key }}
fail-on-cache-miss: true
enableCrossOsArchive: true
- uses: graalvm/setup-graalvm@v1
with:
version: ${{ env.GRAALVM_VERSION }}
java-version: ${{ env.JAVA_VERSION }}
components: "native-image"
cache: 'maven'
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Build and run
id: mvn-build
env:
MAVEN_OPTS: "-Xmx1g"
run: |
./mvnw -B -ntp -DskipFormat 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
env:
MAVEN_OPTS: "-Xmx1g"
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@v3
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 }}