name: citra-ci on: push: branches: [ "*" ] tags: [ "*" ] pull_request: branches: [ master ] jobs: clang-format: runs-on: ubuntu-latest container: image: citraemu/build-environments:linux-clang-format options: -u 1001 steps: - uses: actions/checkout@v3 with: fetch-depth: 0 - name: Build env: COMMIT_RANGE: ${{ github.event.pull_request.base.sha }}..${{ github.event.pull_request.head.sha }} run: ./.ci/linux-clang-format/docker.sh build: runs-on: ubuntu-latest strategy: matrix: image: ["linux-appimage", "linux-fresh", "linux-frozen", "linux-mingw"] container: image: citraemu/build-environments:${{ matrix.image }} options: -u 1001 steps: - uses: actions/checkout@v3 with: submodules: recursive - name: Set up cache uses: actions/cache@v3 with: path: ~/.ccache key: ${{ runner.os }}-${{ matrix.image }}-${{ github.sha }} restore-keys: | ${{ runner.os }}-${{ matrix.image }}- - name: Build run: ./.ci/${{ matrix.image }}/docker.sh env: ENABLE_COMPATIBILITY_REPORTING: "ON" - name: Pack run: ./.ci/${{ matrix.image }}/upload.sh if: ${{ matrix.image == 'linux-appimage' || matrix.image == 'linux-mingw' }} env: NAME: ${{ matrix.image }} - name: Upload uses: actions/upload-artifact@v3 if: ${{ matrix.image == 'linux-appimage' || matrix.image == 'linux-mingw' }} with: name: ${{ matrix.image }} path: artifacts/ source: if: ${{ !github.head_ref }} runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 with: submodules: recursive - name: Pack run: ./.ci/source/build.sh - name: Upload uses: actions/upload-artifact@v3 with: name: source path: artifacts/ macos: runs-on: macos-latest strategy: matrix: arch: ["x86_64", "arm64"] steps: - uses: actions/checkout@v3 with: submodules: recursive - name: Set up cache uses: actions/cache@v3 with: path: ~/Library/Caches/ccache key: ${{ runner.os }}-macos-${{ matrix.arch }}-${{ github.sha }} restore-keys: | ${{ runner.os }}-macos-${{ matrix.arch }}- - name: Install dependencies run: ./.ci/macos/deps.sh - name: Build run: ./.ci/macos/build.sh env: MACOSX_DEPLOYMENT_TARGET: "11" ENABLE_COMPATIBILITY_REPORTING: "ON" TARGET_ARCH: ${{ matrix.arch }} - name: Pack run: ./.ci/macos/upload.sh - name: Upload uses: actions/upload-artifact@v3 with: name: macos-${{ matrix.arch }} path: artifacts/ macos-universal: runs-on: macos-latest needs: macos steps: - uses: actions/checkout@v3 with: submodules: recursive - name: Download x86 build uses: actions/download-artifact@master with: name: macos-x86_64 path: macos-x86_64/ - name: Download ARM64 build uses: actions/download-artifact@master with: name: macos-arm64 path: macos-arm64/ - name: Create universal app run: ./.ci/macos/universal.sh env: ARTIFACTS: macos-x86_64 macos-arm64 # - name: Upload # uses: actions/upload-artifact@v3 # with: # name: macos # path: artifacts/ - name: Delete intermediate artifacts uses: geekyeggo/delete-artifact@v2 with: name: | macos-x86_64 macos-arm64 windows: runs-on: windows-latest steps: - uses: actions/checkout@v3 with: submodules: recursive - name: Set up cache uses: actions/cache@v3 with: path: ~/.buildcache key: ${{ runner.os }}-win-${{ github.sha }} restore-keys: | ${{ runner.os }}-win- - name: Install dependencies run: ./.ci/windows-msvc/deps.sh shell: bash - name: Set up MSVC uses: ilammy/msvc-dev-cmd@v1 - name: Setup Vulkan SDK uses: humbletim/setup-vulkan-sdk@v1.2.0 with: vulkan-query-version: latest vulkan-components: Glslang vulkan-use-cache: true - name: Test glslangValidator run: glslangValidator --version - name: Build run: ./.ci/windows-msvc/build.sh shell: bash env: ENABLE_COMPATIBILITY_REPORTING: "ON" - name: Pack run: ./.ci/windows-msvc/upload.ps1 - name: Upload uses: actions/upload-artifact@v3 with: name: msvc path: artifacts/ android: runs-on: ubuntu-latest 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: Set tag name run: | if [[ "$GITHUB_REF_NAME" =~ ^canary- ]] || [[ "$GITHUB_REF_NAME" =~ ^nightly- ]]; then echo "GIT_TAG_NAME=$GITHUB_REF_NAME" >> $GITHUB_ENV fi echo $GIT_TAG_NAME - name: Deps run: | sudo add-apt-repository -y ppa:theofficialgman/gpu-tools sudo apt-get update -y sudo apt-get install ccache glslang-dev glslang-tools apksigner -y - name: Build run: JAVA_HOME=$JAVA_HOME_17_X64 ./.ci/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/android/upload.sh - name: Upload uses: actions/upload-artifact@v3 with: name: android path: artifacts/ transifex: runs-on: ubuntu-latest container: citraemu/build-environments:linux-transifex if: ${{ github.repository == 'citra-emu/citra' && !github.head_ref }} steps: - uses: actions/checkout@v3 with: submodules: recursive fetch-depth: 0 - name: Update Translation run: ./.ci/transifex/docker.sh env: TX_TOKEN: ${{ secrets.TRANSIFEX_API_TOKEN }} release: runs-on: ubuntu-latest needs: [build, android, macos-universal, source, windows] 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"]'