# SPDX-FileCopyrightText: 2022 yuzu Emulator Project # SPDX-FileCopyrightText: 2024 suyu Emulator Project # SPDX-License-Identifier: GPL-3.0-or-later # Actions Documentation: https://forgejo.org/docs/next/user/actions/#list-of-tasks-in-a-repository name: 'suyu verify' on: pull_request: branches: [ "dev" ] paths: - 'src/**' - 'CMakeModules/**' - 'dist/**' - 'externals/**' - 'CMakeLists.txt' - 'vcpkg.json' # paths-ignore: # - 'src/android/**' push: branches: [ "dev" ] paths: - 'src/**' - 'CMakeModules/**' - 'dist/**' - 'externals/**' - 'CMakeLists.txt' - 'vcpkg.json' - '.forgejo/workflows/verify.yml' - '.ci/**' # paths-ignore: # - 'src/android/**' env: PR_NUMBER: pr${{ github.event.number }} jobs: format: name: 'Verify Format' runs-on: docker container: fijxu/build-environments:linux-clang-format steps: - uses: https://code.forgejo.org/actions/checkout@v3 with: submodules: false # - name: set up JDK 17 # uses: https://github.com/actions/setup-java@v3 # with: # java-version: '17' # distribution: 'temurin' - name: 'Verify Formatting' run: bash -ex ./.ci/scripts/format/script.sh build-linux: name: 'test build' needs: format runs-on: docker strategy: fail-fast: false matrix: include: - type: clang image: linux-fresh - type: linux image: linux-fresh - type: windows image: linux-mingw container: fijxu/build-environments:${{ matrix.image }} # User 1001 doesn't exists on the images. # options: -u 1001 steps: - uses: https://code.forgejo.org/actions/checkout@v3 with: submodules: recursive fetch-depth: 0 - name: Set up cache uses: https://code.forgejo.org/actions/cache@v3 id: ccache-restore with: path: ~/.ccache key: ${{ runner.os }}-${{ matrix.type }}-${{ github.sha }} restore-keys: | ${{ runner.os }}-${{ matrix.type }}- - name: Create ccache directory if: steps.ccache-restore.outputs.cache-hit != 'true' run: mkdir -p ~/.ccache - name: Build run: ./.ci/scripts/${{ matrix.type }}/docker.sh env: ENABLE_COMPATIBILITY_REPORTING: "ON" - name: Pack run: ./.ci/scripts/${{ matrix.type }}/upload.sh env: NO_SOURCE_PACK: "YES" - name: Upload uses: https://code.forgejo.org/actions/upload-artifact@v3 with: name: ${{ matrix.type }} path: artifacts/ # build-mac: # name: 'test build (macos)' # needs: format # runs-on: macos-14 # steps: # - uses: https://code.forgejo.org/actions/checkout@v3 # with: # submodules: recursive # fetch-depth: 0 # - name: Install dependencies # run: | # brew install autoconf automake boost ccache ffmpeg fmt glslang hidapi libtool libusb lz4 ninja nlohmann-json openssl pkg-config qt@5 sdl2 speexdsp zlib zlib zstd # - name: Build # run: | # mkdir build # cd build # export Qt5_DIR="$(brew --prefix qt@5)/lib/cmake" # cmake .. -GNinja -DCMAKE_BUILD_TYPE=RelWithDebInfo -DSUYU_USE_BUNDLED_VCPKG=OFF -DSUYU_TESTS=OFF -DENABLE_WEB_SERVICE=OFF -DENABLE_LIBUSB=OFF # ninja # build-msvc: # name: 'test build (windows, msvc)' # needs: format # runs-on: windows-2022 # steps: # - uses: https://code.forgejo.org/actions/checkout@v3 # with: # submodules: recursive # fetch-depth: 0 # - name: Set up cache # uses: https://code.forgejo.org/actions/cache@v3 # with: # path: ~/.buildcache # key: ${{ runner.os }}-msvc-${{ github.sha }} # restore-keys: | # ${{ runner.os }}-msvc- # - name: Install dependencies # shell: pwsh # run: | # $ErrorActionPreference = "Stop" # $BuildCacheVer = "v0.28.4" # $File = "buildcache-windows.zip" # $Uri = "https://github.com/mbitsnbites/buildcache/releases/download/$BuildCacheVer/$File" # $WebClient = New-Object System.Net.WebClient # $WebClient.DownloadFile($Uri, $File) # 7z x $File # $CurrentDir = Convert-Path . # echo "$CurrentDir/buildcache/bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append # - name: Install Vulkan SDK # shell: pwsh # run: .\.ci\scripts\windows\install-vulkan-sdk.ps1 # - name: Set up MSVC # uses: https://github.com/ilammy/msvc-dev-cmd@v1 # - name: Configure # env: # CC: cl.exe # CXX: cl.exe # run: | # glslangValidator --version # mkdir build # cmake . -B build -GNinja -DCMAKE_TOOLCHAIN_FILE="CMakeModules/MSVCCache.cmake" -DUSE_CCACHE=ON -DSUYU_USE_BUNDLED_QT=1 -DSUYU_USE_BUNDLED_SDL2=1 -DSUYU_USE_QT_WEB_ENGINE=ON -DENABLE_COMPATIBILITY_LIST_DOWNLOAD=ON -DSUYU_ENABLE_COMPATIBILITY_REPORTING=ON -DUSE_DISCORD_PRESENCE=ON -DENABLE_QT_TRANSLATION=ON -DCMAKE_BUILD_TYPE=Release -DGIT_BRANCH=pr-verify -DSUYU_CRASH_DUMPS=ON # - name: Build # run: cmake --build build # - name: Cache Summary # run: buildcache -s # - name: Pack # shell: pwsh # run: .\.ci\scripts\windows\upload.ps1 # - name: Upload # uses: https://code.forgejo.org/actions/upload-artifact@v3 # with: # name: msvc # path: artifacts/ # - name: Upload EXE # uses: https://code.forgejo.org/actions/upload-artifact@v3 # with: # name: ${{ env.INDIVIDUAL_EXE }} # path: ${{ env.INDIVIDUAL_EXE }} android: runs-on: docker container: fijxu/build-environments:android needs: format steps: - uses: https://code.forgejo.org/actions/checkout@v3 with: submodules: recursive fetch-depth: 0 - name: set up JDK 17 uses: https://github.com/actions/setup-java@v3 with: java-version: '17' distribution: 'temurin' - name: Set up cache uses: https://code.forgejo.org/actions/cache@v3 with: path: | ~/.gradle/caches ~/.gradle/wrapper ~/.ccache key: ${{ runner.os }}-android-${{ github.sha }} restore-keys: | ${{ runner.os }}-android- - name: Query tag name uses: https://github.com/olegtarasov/get-tag@v2.1.2 id: tagName - name: Build run: ./.ci/scripts/android/build.sh - name: Copy and sign artifacts env: ANDROID_KEYSTORE_B64: ${{ secrets.ANDROID_KEYSTORE_B64 }} ANDROID_KEY_ALIAS: ${{ secrets.ANDROID_KEY_ALIAS }} ANDROID_KEYSTORE_PASS: ${{ secrets.ANDROID_KEYSTORE_PASS }} run: ./.ci/scripts/android/upload.sh - name: Upload uses: https://code.forgejo.org/actions/upload-artifact@v3 with: name: android path: artifacts/