chore: Optimize wasm build with wasm-opt
and in Cargo.toml
#14
Workflow file for this run
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: Release | |
on: | |
push: | |
tags: | |
- '*' | |
env: | |
binary: insta-kill | |
add_binaries_to_github_release: false | |
itch_target: PraxTube/insta-kill | |
jobs: | |
release-wasm: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: olegtarasov/[email protected] | |
id: get_version | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@stable | |
with: | |
targets: wasm32-unknown-unknown | |
- name: install wasm-bindgen-cli | |
run: | | |
cargo install wasm-bindgen-cli | |
- name: Build | |
run: | | |
cargo build --profile wasm --target wasm32-unknown-unknown --release | |
- name: Download wasm-opt | |
run: | | |
wget https://github.com/WebAssembly/binaryen/releases/download/version_116/binaryen-version_116-x86_64-linux.tar.gz | |
tar -xvf binaryen-version_116-x86_64-linux.tar.gz | |
chmod +x binaryen-version_116/bin/wasm-opt | |
- name: Prepare package | |
run: | | |
wasm-bindgen --no-typescript --out-name bevy_game --out-dir wasm --target web target/wasm/release/${{ env.binary }}.wasm | |
cp -r assets wasm/ | |
- name: Optimize Wasm Build | |
run: | | |
./binaryen-version_116/bin/wasm-opt -Oz -o wasm/bevy_game_bg.wasm wasm/bevy_game_bg.wasm | |
- name: Package as a zip | |
working-directory: ./wasm | |
run: | | |
zip --recurse-paths ../${{ env.binary }}.zip . | |
- name: Upload binaries to artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
path: ${{ env.binary }}.zip | |
name: wasm | |
retention-days: 1 | |
- name: Upload binaries to release | |
if: ${{ env.add_binaries_to_github_release == 'true' }} | |
uses: svenstaro/upload-release-action@v2 | |
with: | |
repo_token: ${{ secrets.GITHUB_TOKEN }} | |
file: ${{ env.binary }}.zip | |
asset_name: ${{ env.binary }}-wasm-${{ steps.get_version.outputs.tag }}.zip | |
tag: ${{ github.ref }} | |
overwrite: true | |
check-if-upload-to-itch-is-configured: | |
runs-on: ubuntu-latest | |
outputs: | |
should-upload: ${{ steps.check-env.outputs.has-itch-target }} | |
steps: | |
- id: check-env | |
run: | | |
if [[ -z "$itch_target" ]]; then | |
echo "has-itch-target=no" >> $GITHUB_OUTPUT | |
else | |
echo "has-itch-target=yes" >> $GITHUB_OUTPUT | |
fi | |
upload-to-itch: | |
runs-on: ubuntu-latest | |
needs: | |
- check-if-upload-to-itch-is-configured | |
- release-wasm | |
if: ${{ needs.check-if-upload-to-itch-is-configured.outputs.should-upload == 'yes' }} | |
steps: | |
- name: Download artifacts | |
uses: actions/download-artifact@v3 | |
with: | |
path: ./builds | |
- name: Install butler | |
run: | | |
curl -L -o butler.zip https://broth.itch.ovh/butler/linux-amd64/LATEST/archive/default | |
unzip butler.zip | |
chmod +x butler | |
./butler -V | |
- uses: olegtarasov/[email protected] | |
id: get_version | |
- name: Upload to itch.io | |
env: | |
BUTLER_API_KEY: ${{ secrets.BUTLER_CREDENTIALS }} | |
run: | | |
for channel in $(ls builds); do | |
./butler push \ | |
--fix-permissions \ | |
--userversion="${{ steps.get_version.outputs.tag }}" \ | |
builds/$channel/* \ | |
${{ env.itch_target }}:$channel | |
done |