Test Tools Data #79
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_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 }} |