diff --git a/.github/workflows/rpcs3.yml b/.github/workflows/rpcs3.yml index a249c0b1e9..a0f18a7b14 100644 --- a/.github/workflows/rpcs3.yml +++ b/.github/workflows/rpcs3.yml @@ -20,35 +20,40 @@ concurrency: env: BUILD_REPOSITORY_NAME: ${{ github.repository }} BUILD_SOURCEBRANCHNAME: ${{ github.ref_name }} + BUILD_ARTIFACTSTAGINGDIRECTORY: ${{ github.workspace }}/build jobs: Linux_Build: strategy: fail-fast: false matrix: - compiler: [clang, gcc] - cfg: - - os: ubuntu-24.04-arm - docker_img: "rpcs3/rpcs3-ci-focal-aarch64:1.0" - build_sh: "/rpcs3/.ci/build-linux-aarch64.sh" + include: - os: ubuntu-24.04 - docker_img: "rpcs3/rpcs3-ci-focal:1.9" + docker_img: "rpcs3/rpcs3-ci-jammy:1.0" build_sh: "/rpcs3/.ci/build-linux.sh" - runs-on: ${{ matrix.cfg.os }} + compiler: clang + - os: ubuntu-24.04 + docker_img: "rpcs3/rpcs3-ci-jammy:1.0" + build_sh: "/rpcs3/.ci/build-linux.sh" + compiler: gcc + - os: ubuntu-24.04-arm + docker_img: "rpcs3/rpcs3-ci-jammy-aarch64:1.0" + build_sh: "/rpcs3/.ci/build-linux-aarch64.sh" + compiler: clang + runs-on: ${{ matrix.os }} env: CCACHE_DIR: ${{ github.workspace }}/ccache CI_HAS_ARTIFACTS: true DEPLOY_APPIMAGE: true APPDIR: "/rpcs3/build/appdir" ARTDIR: "/root/artifacts" - RELEASE_MESSAGE: "/rpcs3/GitHubReleaseMessage-${{ matrix.compiler }}.txt" + RELEASE_MESSAGE: "/rpcs3/GitHubReleaseMessage.txt" COMPILER: ${{ matrix.compiler }} steps: - name: Checkout repository uses: actions/checkout@main with: - submodules: recursive fetch-depth: 0 - name: Setup Cache @@ -57,27 +62,29 @@ jobs: path: ${{ env.CCACHE_DIR }} key: ${{ runner.os }}-ccache-${{ matrix.compiler }} - - name: Append Compiler version to appimage - run: | - file=".ci/deploy-linux.sh" - sed -i 's/RPCS3_APPIMAGE="rpcs3-v${COMM_TAG}-${COMM_COUNT}-${COMM_HASH}_linux64.AppImage"/RPCS3_APPIMAGE="rpcs3-v${COMM_TAG}-${COMM_COUNT}-${COMM_HASH}-${COMPILER}_linux64.AppImage"/g' $file - - name: Docker setup and build run: | - docker pull --quiet ${{ matrix.cfg.docker_img }} + docker pull --quiet ${{ matrix.docker_img }} docker run \ -v $PWD:/rpcs3 \ --env-file .ci/docker.env \ -v ${{ env.CCACHE_DIR }}:/root/.ccache \ -v ${{ github.workspace }}/artifacts:/root/artifacts \ - ${{ matrix.cfg.docker_img }} \ - ${{ matrix.cfg.build_sh }} + ${{ matrix.docker_img }} \ + ${{ matrix.build_sh }} - name: Upload artifacts + #TODO: Upload artifact to release repository + #condition for release + #if: | + # github.event_name != 'pull_request' && + # github.repository == 'RPCS3/rpcs3' && + # github.ref == 'refs/heads/master' && + # matrix.compiler == 'clang' uses: actions/upload-artifact@main with: name: RPCS3 for Linux (${{ runner.arch }}, ${{ matrix.compiler }}) - path: ${{ github.workspace }}/build/*.AppImage + path: ${{ env.BUILD_ARTIFACTSTAGINGDIRECTORY }}/*.AppImage compression-level: 0 Windows_Build: @@ -91,13 +98,11 @@ jobs: VULKAN_VER: '1.3.268.0' VULKAN_SDK_SHA: '8459ef49bd06b697115ddd3d97c9aec729e849cd775f5be70897718a9b3b9db5' CACHE_DIR: ./cache - BUILD_ARTIFACTSTAGINGDIRECTORY: ${{ github.workspace }}\build steps: - name: Checkout repository uses: actions/checkout@main with: - submodules: recursive fetch-depth: 0 - name: Setup env @@ -113,7 +118,7 @@ jobs: uses: actions/cache@main with: path: ${{ env.CACHE_DIR }} - key: ${{ runner.os }}-${{ env.COMPILER }}-${{ env.QT_VER }}-${{ env.VULKAN_SDK_SHA }}-llvm.lock-glslang.lock + key: "${{ runner.os }}-${{ env.COMPILER }}-${{ env.QT_VER }}-${{ env.VULKAN_SDK_SHA }}-${{ hashFiles('llvm.lock') }}-${{ hashFiles('glslang.lock') }}" restore-keys: ${{ runner.os }}-${{ env.COMPILER }} - name: Download and unpack dependencies @@ -121,17 +126,13 @@ jobs: run: .ci/setup-windows.sh - name: Export Variables + shell: bash run: | - Get-Content ".ci/ci-vars.env" | ForEach-Object { - # Skip over lines containing comments. - if ($_ -notmatch '^\s*#') - { - $line = $_ -split '=' - $key = $line[0] - $val = $line[1] - echo "$key=$val" >> $env:GITHUB_ENV - } - } + while IFS='=' read -r key val; do + # Skip lines that are empty or start with '#' + [[ -z "$key" || "$key" =~ ^# ]] && continue + echo "$key=$val" >> "${{ github.env }}" + done < .ci/ci-vars.env - name: Add msbuild to PATH uses: microsoft/setup-msbuild@main @@ -142,26 +143,23 @@ jobs: - name: Pack up build artifacts shell: bash run: | - mkdir -p build + mkdir -p ${{ env.BUILD_ARTIFACTSTAGINGDIRECTORY }} .ci/deploy-windows.sh - mkdir -p bin2/${{ env.BUILD_RAW }} - mv bin/* bin2/${{ env.BUILD_RAW }} - - - name: Upload artifacts (zip) - uses: actions/upload-artifact@main - with: - name: RPCS3 for Windows (MSVC) (zip) - path: bin2 - if-no-files-found: error - name: Upload artifacts (7z) + #TODO: Upload artifact to release repository + #condition for release + #if: | + # github.event_name != 'pull_request' && + # github.repository == 'RPCS3/rpcs3' && + # github.ref == 'refs/heads/master' uses: actions/upload-artifact@main with: - name: RPCS3 for Windows (MSVC) (7z) + name: RPCS3 for Windows (MSVC) # 7z # 7z.sha256 path: | - build/${{ env.BUILD }} - build/${{ env.BUILD }}.sha256 + ${{ env.BUILD_ARTIFACTSTAGINGDIRECTORY }}/${{ env.BUILD }} + ${{ env.BUILD_ARTIFACTSTAGINGDIRECTORY }}/${{ env.BUILD }}.sha256 compression-level: 0 if-no-files-found: error