Skip to content
Snippets Groups Projects
deploy.yml 4.2 KiB
Newer Older
  • Learn to ignore specific revisions
  • name: Deploy Workflow
    
    on:
      push:
        tags:
          - "*"
    
    João Magalhães's avatar
    João Magalhães committed
      build-linux:
    
    João Magalhães's avatar
    João Magalhães committed
        name: Build Linux
    
    João Magalhães's avatar
    João Magalhães committed
        timeout-minutes: 30
    
        runs-on: ubuntu-latest
    
        container: rust:1.71.0
    
        steps:
          - name: Checkout code from repository
            uses: actions/checkout@v3
          - 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
    
    João Magalhães's avatar
    João Magalhães committed
          - name: Transform filenames
            run: |
              cd target/release
              mv boytacean-sdl boytacean-sdl-linux-x64
              mv libboytacean_libretro.so boytacean_libretro.so
    
          - name: Upload artifacts
    
    João Magalhães's avatar
    João Magalhães committed
            uses: actions/upload-artifact@v3
            with:
    
    João Magalhães's avatar
    João Magalhães committed
              name: boytacean-linux
    
    João Magalhães's avatar
    João Magalhães committed
              path: |
                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@v3
          - name: Setup Rust
    
            run: |
              rustup install 1.71.0
              rustup override set 1.71.0
    
    João Magalhães's avatar
    João Magalhães committed
              rustup default stable-msvc
    
    João Magalhães's avatar
    João Magalhães committed
          - name: Build Base
            run: |
              cargo build --release
          - name: Build SDL
            run: |
              cd frontends/sdl
    
    João Magalhães's avatar
    João Magalhães committed
              cargo install cargo-vcpkg && cargo vcpkg -v build
    
    João Magalhães's avatar
    João Magalhães committed
              cargo build --release
          - name: Build Libretro
            run: |
              cd frontends/libretro
              cargo build --release
    
          - name: Transform filenames
    
    João Magalhães's avatar
    João Magalhães committed
            run: |
              cd target/release
              mv boytacean-sdl.exe boytacean-sdl-win32-x64.exe
    
          - name: Upload artifacts
    
    João Magalhães's avatar
    João Magalhães committed
            uses: actions/upload-artifact@v3
            with:
              name: boytacean-win32
              path: |
                target/release/boytacean-sdl-win32-x64.exe
                target/release/boytacean.dll
                target/release/boytacean_libretro.dll
              retention-days: 5
    
    João Magalhães's avatar
    João Magalhães committed
      build-mac:
        name: Build Mac
        timeout-minutes: 30
        runs-on: macos-latest
        steps:
          - name: Checkout code from repository
            uses: actions/checkout@v3
          - name: Setup Rust
            run: |
              rustup install 1.71.0
              rustup override set 1.71.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
    
    João Magalhães's avatar
    João Magalhães committed
            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@v3
            with:
              name: boytacean-mac
              path: |
                target/release/boytacean-sdl-mac-x64
                target/release/libboytacean.dylib
                target/release/boytacean_libretro.dylib
              retention-days: 5
    
    João Magalhães's avatar
    João Magalhães committed
      release:
        name: Release
    
        needs: [build-linux, build-windows, build-mac]
    
    João Magalhães's avatar
    João Magalhães committed
        timeout-minutes: 10
        runs-on: ubuntu-latest
        steps:
          - name: Download artifacts
            uses: actions/download-artifact@v3
          - name: Create release
    
            uses: softprops/action-gh-release@v1
            with:
              files: |
    
    João Magalhães's avatar
    João Magalhães committed
                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