123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- # SuperTux
- # Copyright (C) 2020-2021 Jacob Burroughs <maths22@gmail.com>
- # 2020-2022 A. Semphris <semphris@protonmail.com>
- #
- # This program is free software: you can redistribute it and/or modify
- # it under the terms of the GNU General Public License as published by
- # the Free Software Foundation, either version 3 of the License, or
- # (at your option) any later version.
- #
- # This program is distributed in the hope that it will be useful,
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- # GNU General Public License for more details.
- #
- # You should have received a copy of the GNU General Public License
- # along with this program. If not, see <https://www.gnu.org/licenses/>.
- name: WebAssembly
- on:
- workflow_dispatch:
- push:
- branches:
- - master
- tags:
- - '*'
- pull_request: {}
- jobs:
- wasm:
- strategy:
- fail-fast: false
- matrix:
- build_type: ["Release", "Debug"]
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v4
- with:
- # Fetch the whole tree so git describe works
- fetch-depth: 0
- submodules: recursive
- - name: Install emscripten tools
- run: |
- cd ~
- sudo apt-get update
- sudo apt-get install -y git cmake build-essential curl zip
- git clone https://github.com/emscripten-core/emsdk.git
- cd emsdk
- ./emsdk install latest
- ./emsdk activate latest
- - name: Configure build
- env:
- BUILD_TYPE: ${{ matrix.build_type }}
- run: |
- source ~/emsdk/emsdk_env.sh
- mkdir build
- cd build
- # TODO: Re-add -DWERROR=ON when warnings will be fixed
- emcmake cmake -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DWARNINGS=ON ..
- - name: Sync data folder
- working-directory: build
- run: |
- rsync -aP ../data/ data/
- - name: Build
- working-directory: build
- run: |
- source ~/emsdk/emsdk_env.sh
- emmake make -j$(nproc)
- # Now you can run a local server with: `emrun supertux2.html`
- # Or any traditional web server will do the job
- # Note: opening the html file manually (file:///) won't work
- - name: Setup files for upload
- working-directory: build
- env:
- BUILD_TYPE: ${{ matrix.build_type }}
- run: |
- cp template.html supertux2.html
- mkdir upload/
- mv supertux2* upload/
- - uses: actions/upload-artifact@v4
- with:
- name: "wasm32-emscripten-${{ matrix.build_type }}-html"
- path: build/upload/*
- if-no-files-found: ignore
- - name: Upload to server
- if: ${{ github.ref == 'refs/heads/master' && matrix.build_type == 'Release' }}
- env:
- UPLOAD_URL: ${{ secrets.UPLOAD_URL }}
- run: |
- cd build/upload/
- mv supertux2.html index.html
- zip supertux2.zip *
- curl -F "archive=@$(pwd)/supertux2.zip" -F "message=$(git log --format=%B -n 1 | head -1)" $UPLOAD_URL
|