123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- name: Export projects to HTML5 and deploy to GitHub Pages
- on:
- push:
- branches:
- - master
- env:
- GODOT_VERSION: 3.3.3
- jobs:
- export-html5:
- name: Export projects to HTML5 and deploy to GitHub Pages
- runs-on: ubuntu-20.04
- container:
- image: barichello/godot-ci:3.3.3
- steps:
- - name: Checkout
- uses: actions/checkout@v3
- - name: Setup
- run: |
- mkdir -p ~/.local/share/godot/templates/
- mv /root/.local/share/godot/templates/$GODOT_VERSION.stable ~/.local/share/godot/templates/$GODOT_VERSION.stable
- - name: Export projects to HTML5
- run: |
- apt-get update -qq && apt-get install -qqq imagemagick
- # Don't export Mono demos (not supported yet), demos that can't be run in HTML5
- # since they're platform-specific or demos that are currently broken in HTML5.
- # Remember to update `.github/dist/footer.html` when updating the list of excluded demos.
- rm -rf \
- 2d/hdr/ \
- 3d/global_illumination/ \
- 3d/voxel/ \
- audio/device_changer/ \
- loading/background_load/ \
- loading/multiple_threads_loading/ \
- loading/threads/ \
- misc/matrix_transform/ \
- mobile/android_iap/ \
- mobile/sensors/ \
- mono/ \
- networking/ \
- plugins/
- for panorama in 3d/material_testers/backgrounds/*.hdr; do
- # Decrease the resolution to get below the 20 MB per-file limit.
- # Otherwise, the website can't be deployed as files larger than 20 MB
- # can't be pushed to GitHub anymore.
- mogrify -resize 75% "$panorama"
- done
- BASEDIR="$PWD"
- # Use absolute paths so that we can `cd` without having to go back to the parent directory manually.
- for demo in */*/; do
- echo ""
- echo "================================"
- echo "Exporting demo $demo..."
- echo "================================"
- mkdir -p "$BASEDIR/.github/dist/$demo"
- cd "$BASEDIR/$demo"
- # Copy an export template preset file configured for HTML5 exporting.
- # This way, we don't have to commit `export_presets.cfg` for each project.
- cp "$BASEDIR/.github/dist/export_presets.cfg" .
- godot --export "HTML5" "$BASEDIR/.github/dist/$demo/index.html"
- # Replace the WASM file with a symbolic link to avoid duplicating files in the pushed branch.
- # (WASM files are identical across projects, but not PCK or HTML files.)
- mv -f "$BASEDIR/.github/dist/$demo/index.wasm" "$BASEDIR/.github/dist/index.wasm"
- # The symlink must be relative as it needs to point to a file within the pushed repository.
- ln -s "../../index.wasm" "$BASEDIR/.github/dist/$demo/index.wasm"
- # Append the demo to the list of demos for the website.
- PROJECT_NAME=$(cat project.godot | grep "config/name" | cut -d '"' -f 2 | tr -d "\n")
- echo "<li><a href='$demo'><img width="64" height="64" src="$demo/favicon.png" alt=""><p>$PROJECT_NAME</p></a></li>" >> "$BASEDIR/.github/dist/demos.html"
- done
- cat "$BASEDIR/.github/dist/header.html" "$BASEDIR/.github/dist/demos.html" "$BASEDIR/.github/dist/footer.html" > "$BASEDIR/.github/dist/index.html"
- # Clean up files that don't need to be deployed.
- rm -f "$BASEDIR/.github/dist/header.html" "$BASEDIR/.github/dist/demos.html" "$BASEDIR/.github/dist/footer.html" "$BASEDIR/.github/dist/export_presets.cfg"
- # Installing rsync is needed in order to deploy to GitHub Pages. Without it, the build will fail.
- - name: Install rsync 📚
- run: |
- apt-get update -qq && apt-get install -qqq rsync
- - name: Deploy to GitHub Pages 🚀
- uses: JamesIves/github-pages-deploy-action@releases/v3
- with:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- # The branch the action should deploy to.
- BRANCH: gh-pages
- # The folder the action should deploy.
- FOLDER: .github/dist
- # Artifacts are large; don't keep the branch's history.
- SINGLE_COMMIT: true
|