Test Tools Data #110
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 | |
GRAALVM_DIST: graalvm-community | |
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@v4 | |
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 }} | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: | | |
mkdir -p sources | |
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 | |
mv ${ROOT} sources/5etools-mirror-1.github.io | |
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@v4 | |
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@v4 | |
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: | |
distribution: ${{ env.GRAALVM_DIST }} | |
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@v4 | |
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 }} |