Deploy Workflow #37
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: Deploy Workflow | |
on: | |
push: | |
tags: | |
- "*" | |
jobs: | |
build-linux: | |
name: Build Linux | |
timeout-minutes: 30 | |
runs-on: ubuntu-latest | |
container: rust:1.74.0 | |
steps: | |
- name: Checkout code from repository | |
uses: actions/checkout@v4 | |
- name: Build Base | |
run: cargo build --release | |
- name: Build SDL | |
run: | | |
cd frontends/sdl | |
apt-get update && apt-get install -y -q zip | |
cargo install cargo-vcpkg && cargo vcpkg -v build | |
cargo build --release | |
- name: Build Libretro | |
run: | | |
cd frontends/libretro | |
cargo build --release | |
- name: Bundle files | |
run: | | |
cp -p frontends/libretro/res/boytacean_libretro.info target/release/boytacean_libretro.info | |
- name: Transform filenames | |
run: | | |
cd target/release | |
mv boytacean-sdl boytacean-sdl-linux-x64 | |
mv libboytacean_libretro.so boytacean_libretro.so | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: boytacean-linux | |
path: | | |
target/release/boytacean_libretro.info | |
target/release/boytacean-sdl-linux-x64 | |
target/release/libboytacean.so | |
target/release/boytacean_libretro.so | |
retention-days: 5 | |
build-windows: | |
name: Build Windows | |
timeout-minutes: 30 | |
runs-on: windows-latest | |
steps: | |
- name: Checkout code from repository | |
uses: actions/checkout@v4 | |
- name: Setup Rust | |
run: | | |
rustup install 1.74.0 | |
rustup override set 1.74.0 | |
rustup default stable-msvc | |
- name: Build Base | |
run: cargo build --release | |
- name: Build SDL | |
run: | | |
cd frontends/sdl | |
cargo install cargo-vcpkg && cargo vcpkg -v build | |
cargo build --release | |
- name: Build Libretro | |
run: | | |
cd frontends/libretro | |
cargo build --release | |
- name: Transform filenames | |
run: | | |
cd target/release | |
mv boytacean-sdl.exe boytacean-sdl-win32-x64.exe | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: boytacean-win32 | |
path: | | |
target/release/boytacean-sdl-win32-x64.exe | |
target/release/boytacean.dll | |
target/release/boytacean_libretro.dll | |
retention-days: 5 | |
build-mac: | |
name: Build Mac | |
timeout-minutes: 30 | |
runs-on: macos-latest | |
steps: | |
- name: Checkout code from repository | |
uses: actions/checkout@v4 | |
- name: Setup Rust | |
run: | | |
rustup install 1.74.0 | |
rustup override set 1.74.0 | |
- name: Build Base | |
run: cargo build --release | |
- name: Build SDL | |
run: | | |
cd frontends/sdl | |
cargo install cargo-vcpkg && cargo vcpkg -v build | |
cargo build --release | |
- name: Build Libretro | |
run: | | |
cd frontends/libretro | |
cargo build --release | |
- name: Transform filenames | |
run: | | |
cd target/release | |
mv boytacean-sdl boytacean-sdl-mac-x64 | |
mv libboytacean_libretro.dylib boytacean_libretro.dylib | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: boytacean-mac | |
path: | | |
target/release/boytacean-sdl-mac-x64 | |
target/release/libboytacean.dylib | |
target/release/boytacean_libretro.dylib | |
retention-days: 5 | |
build-wasm: | |
name: Build WASM | |
timeout-minutes: 30 | |
runs-on: ubuntu-latest | |
container: rust:1.74.0 | |
steps: | |
- name: Checkout code from repository | |
uses: actions/checkout@v4 | |
- name: Install Dependencies | |
run: | | |
apt-get update | |
apt-get install -y -q cmake | |
- name: Install wasm-pack | |
run: cargo install wasm-pack | |
- name: Build WASM | |
run: wasm-pack build --release --target=web --out-dir=frontends/web/lib -- --features wasm | |
- name: Install Node.js 16 | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 16 | |
- name: Build Web code | |
run: | | |
cd frontends/web | |
npm install && NODE_ENV=production npm run build | |
- name: Bundle files | |
run: | | |
apt-get update && apt-get install -y -q zip | |
cd frontends/web | |
zip -r -j boytacean-wasm.zip dist/* | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: boytacean-wasm | |
path: frontends/web/boytacean-wasm.zip | |
retention-days: 5 | |
release: | |
name: Release | |
needs: [build-linux, build-windows, build-mac, build-wasm] | |
timeout-minutes: 10 | |
runs-on: ubuntu-latest | |
steps: | |
- name: Download artifacts | |
uses: actions/download-artifact@v4 | |
- name: Create release | |
uses: softprops/action-gh-release@v2 | |
with: | |
files: | | |
boytacean-linux/boytacean_libretro.info | |
boytacean-linux/boytacean-sdl-linux-x64 | |
boytacean-linux/libboytacean.so | |
boytacean-linux/boytacean_libretro.so | |
boytacean-win32/boytacean-sdl-win32-x64.exe | |
boytacean-win32/boytacean.dll | |
boytacean-win32/boytacean_libretro.dll | |
boytacean-mac/boytacean-sdl-mac-x64 | |
boytacean-mac/libboytacean.dylib | |
boytacean-mac/boytacean_libretro.dylib | |
boytacean-wasm/boytacean-wasm.zip |