From be6159842ab1790d2efb48f8dad14f80e47d7b1f Mon Sep 17 00:00:00 2001 From: liushuyu Date: Sat, 27 May 2023 22:36:56 -0600 Subject: CI: use the verify pipeline to do releases --- .github/workflows/build.yml | 186 +++++++++++++++++++++++++++++++++++++++++++ .github/workflows/verify.yml | 162 ------------------------------------- 2 files changed, 186 insertions(+), 162 deletions(-) create mode 100644 .github/workflows/build.yml delete mode 100644 .github/workflows/verify.yml (limited to '.github') diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 000000000..298eb4745 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,186 @@ +# SPDX-FileCopyrightText: 2022 yuzu Emulator Project +# SPDX-License-Identifier: GPL-3.0-or-later + +name: 'yuzu verify' + +on: + push: +# branches: [ main ] + tags: [ "*" ] + pull_request: + branches: [ main ] +env: + PR_NUMBER: pr${{ github.event.number }} + +jobs: + format: + name: 'verify format' + runs-on: ubuntu-latest + container: + image: yuzuemu/build-environments:linux-clang-format + options: -u 1001 + steps: + - uses: actions/checkout@v3 + with: + submodules: false + - name: 'Verify Formatting' + run: bash -ex ./.ci/scripts/format/script.sh + build: + name: 'test build' + needs: format + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + include: + - type: clang + image: linux-fresh + - type: linux + image: linux-fresh + - type: windows + image: linux-mingw + container: + image: yuzuemu/build-environments:${{ matrix.image }} + options: -u 1001 + steps: + - uses: actions/checkout@v3 + with: + submodules: recursive + fetch-depth: 0 + - name: Set up cache + uses: 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: actions/upload-artifact@v3 + with: + name: ${{ matrix.type }} + path: artifacts/ + build-msvc: + name: 'test build (windows, msvc)' + needs: format + runs-on: windows-2022 + steps: + - name: Set up cache + uses: actions/cache@v3 + with: + path: ~/.buildcache + key: ${{ runner.os }}-msvc-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-msvc- + - name: Install dependencies + # due to how chocolatey works, only cmd.exe is supported here + shell: cmd + run: | + choco install vulkan-sdk wget + call refreshenv + wget https://github.com/mbitsnbites/buildcache/releases/download/v0.27.6/buildcache-windows.zip + 7z x buildcache-windows.zip + copy buildcache\bin\buildcache.exe C:\ProgramData\chocolatey\bin + rmdir buildcache + echo %PATH% >> %GITHUB_PATH% + - name: Set up MSVC + uses: ilammy/msvc-dev-cmd@v1 + - uses: actions/checkout@v3 + with: + submodules: recursive + fetch-depth: 0 + - 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 -DYUZU_USE_BUNDLED_QT=1 -DYUZU_USE_BUNDLED_SDL2=1 -DYUZU_USE_QT_WEB_ENGINE=ON -DENABLE_COMPATIBILITY_LIST_DOWNLOAD=ON -DYUZU_ENABLE_COMPATIBILITY_REPORTING=ON -DUSE_DISCORD_PRESENCE=ON -DENABLE_QT_TRANSLATION=ON -DCMAKE_BUILD_TYPE=Release -DGIT_BRANCH=pr-verify -DYUZU_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: actions/upload-artifact@v3 + with: + name: msvc + path: artifacts/ + - name: Upload EXE + uses: actions/upload-artifact@v3 + with: + name: ${{ env.INDIVIDUAL_EXE }} + path: ${{ env.INDIVIDUAL_EXE }} + android: + runs-on: ubuntu-latest + needs: format + steps: + - uses: actions/checkout@v3 + with: + submodules: recursive + - name: Set up cache + uses: 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: olegtarasov/get-tag@v2.1.2 + id: tagName + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install -y ccache apksigner glslang-dev glslang-tools + git -C ./externals/vcpkg/ fetch --all --unshallow + - 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: actions/upload-artifact@v3 + with: + name: android + path: artifacts/ + release: + runs-on: ubuntu-latest + needs: [ android ] + if: ${{ startsWith(github.ref, 'refs/tags/') }} + steps: + - uses: actions/download-artifact@v3 + - name: Create release + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: ${{ github.ref_name }} + release_name: ${{ github.ref_name }} + draft: false + prerelease: false + - name: Upload artifacts + uses: alexellis/upload-assets@0.4.0 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + asset_paths: '["./**/*.tar.*","./**/*.AppImage","./**/*.7z","./**/*.zip","./**/*.apk","./**/*.aab"]' diff --git a/.github/workflows/verify.yml b/.github/workflows/verify.yml deleted file mode 100644 index c65e0bc5b..000000000 --- a/.github/workflows/verify.yml +++ /dev/null @@ -1,162 +0,0 @@ -# SPDX-FileCopyrightText: 2022 yuzu Emulator Project -# SPDX-License-Identifier: GPL-3.0-or-later - -name: 'yuzu verify' - -on: - pull_request: - branches: [ master ] -env: - PR_NUMBER: pr${{ github.event.number }} - -jobs: - format: - name: 'verify format' - runs-on: ubuntu-latest - container: - image: yuzuemu/build-environments:linux-clang-format - options: -u 1001 - steps: - - uses: actions/checkout@v3 - with: - submodules: false - - name: 'Verify Formatting' - run: bash -ex ./.ci/scripts/format/script.sh - build: - name: 'test build' - needs: format - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - include: - - type: clang - image: linux-fresh - - type: linux - image: linux-fresh - - type: windows - image: linux-mingw - container: - image: yuzuemu/build-environments:${{ matrix.image }} - options: -u 1001 - steps: - - uses: actions/checkout@v3 - with: - submodules: recursive - fetch-depth: 0 - - name: Set up cache - uses: 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: actions/upload-artifact@v3 - with: - name: ${{ matrix.type }} - path: artifacts/ - build-msvc: - name: 'test build (windows, msvc)' - needs: format - runs-on: windows-2022 - steps: - - name: Set up cache - uses: actions/cache@v3 - with: - path: ~/.buildcache - key: ${{ runner.os }}-msvc-${{ github.sha }} - restore-keys: | - ${{ runner.os }}-msvc- - - name: Install dependencies - # due to how chocolatey works, only cmd.exe is supported here - shell: cmd - run: | - choco install vulkan-sdk wget - call refreshenv - wget https://github.com/mbitsnbites/buildcache/releases/download/v0.27.6/buildcache-windows.zip - 7z x buildcache-windows.zip - copy buildcache\bin\buildcache.exe C:\ProgramData\chocolatey\bin - rmdir buildcache - echo %PATH% >> %GITHUB_PATH% - - name: Set up MSVC - uses: ilammy/msvc-dev-cmd@v1 - - uses: actions/checkout@v3 - with: - submodules: recursive - fetch-depth: 0 - - 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 -DYUZU_USE_BUNDLED_QT=1 -DYUZU_USE_BUNDLED_SDL2=1 -DYUZU_USE_QT_WEB_ENGINE=ON -DENABLE_COMPATIBILITY_LIST_DOWNLOAD=ON -DYUZU_ENABLE_COMPATIBILITY_REPORTING=ON -DUSE_DISCORD_PRESENCE=ON -DENABLE_QT_TRANSLATION=ON -DCMAKE_BUILD_TYPE=Release -DGIT_BRANCH=pr-verify -DYUZU_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: actions/upload-artifact@v3 - with: - name: msvc - path: artifacts/ - - name: Upload EXE - uses: actions/upload-artifact@v3 - with: - name: ${{ env.INDIVIDUAL_EXE }} - path: ${{ env.INDIVIDUAL_EXE }} - android: - runs-on: ubuntu-latest - needs: format - steps: - - uses: actions/checkout@v3 - with: - submodules: recursive - - name: Set up cache - uses: 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: little-core-labs/get-git-tag@v3.0.2 - id: tagName - - name: Install dependencies - run: | - sudo apt-get update - sudo apt-get install -y ccache apksigner glslang-dev glslang-tools - git -C ./externals/vcpkg/ fetch --all --unshallow - - 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: actions/upload-artifact@v3 - with: - name: android - path: artifacts/ -- cgit v1.2.3