Add a 2D polygons and lines demo (#855) #100
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: Export projects to HTML5 and deploy to GitHub Pages | |
on: | |
push: | |
branches: | |
- 3.x | |
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 |