trigger: branches: include: - master tags: exclude: - '*' pr: branches: include: - master jobs: - job: Linux_Build strategy: matrix: Clang: COMPILER: clang GCC: COMPILER: gcc variables: CCACHE_DIR: $(Pipeline.Workspace)/ccache CI_HAS_ARTIFACTS: true UPLOAD_COMMIT_HASH: d812f1254a1157c80fd402f94446310560f54e5f UPLOAD_REPO_FULL_NAME: "RPCS3/rpcs3-binaries-linux" DEPLOY_APPIMAGE: true APPDIR: "/rpcs3/build/appdir" ARTDIR: "/root/artifacts" RELEASE_MESSAGE: "/rpcs3/GitHubReleaseMessage.txt" pool: vmImage: 'ubuntu-latest' steps: - task: Cache@2 inputs: key: ccache | $(Agent.OS) | $(COMPILER) path: $(CCACHE_DIR) displayName: ccache - bash: | docker pull --quiet rpcs3/rpcs3-ci-focal:1.4 docker run \ -v $(pwd):/rpcs3 \ --env-file .ci/docker.env \ -v $CCACHE_DIR:/root/.ccache \ -v $BUILD_ARTIFACTSTAGINGDIRECTORY:/root/artifacts \ rpcs3/rpcs3-ci-focal:1.4 \ /rpcs3/.ci/build-linux.sh displayName: Docker setup and build - publish: $(Build.ArtifactStagingDirectory) condition: succeeded() artifact: RPCS3 for Linux ($(COMPILER)) - bash: | COMM_TAG=$(awk '/version{.*}/ { printf("%d.%d.%d", $5, $6, $7) }' ./rpcs3/rpcs3_version.cpp) COMM_COUNT=$(git rev-list --count HEAD) COMM_HASH=$(git rev-parse --short=8 HEAD) export AVVER="${COMM_TAG}-${COMM_COUNT}" .ci/github-upload.sh condition: and(ne(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.Repository.Name'], 'RPCS3/rpcs3'), eq(variables['Build.SourceBranch'], 'refs/heads/master'), eq(variables['COMPILER'], 'clang')) displayName: Push build to GitHub env: RPCS3_TOKEN: $(RPCS3-Token) - job: Windows_Build variables: COMPILER: msvc QT_VER_MAIN: '6' QT_VER: '6.6.1' QT_VER_MSVC: 'msvc2019' QT_DATE: '202311210527' QTDIR: C:\Qt\$(QT_VER)\$(QT_VER_MSVC)_64 VULKAN_VER: '1.3.224.1' VULKAN_SDK_SHA: '2029e652e39ee6a6036cff3765da31e1e6c595fd2413d3cd111dfab7855621ea' VULKAN_SDK: C:\VulkanSDK\$(VULKAN_VER) CACHE_DIR: ./cache UPLOAD_COMMIT_HASH: 7d09e3be30805911226241afbb14f8cdc2eb054e UPLOAD_REPO_FULL_NAME: "RPCS3/rpcs3-binaries-win" pool: vmImage: "windows-latest" steps: - bash: .ci/get_keys-windows.sh displayName: Get Cache Keys - task: Cache@2 inputs: key: $(Agent.OS) | $(COMPILER) | "$(QT_VER)" | $(VULKAN_SDK_SHA) | llvm.lock | glslang.lock path: $(CACHE_DIR) restoreKeys: | $(Agent.OS) | $(COMPILER) displayName: Cache - bash: .ci/setup-windows.sh displayName: Download and unpack dependencies - bash: .ci/export-azure-vars.sh displayName: Export Variables - task: VSBuild@1 inputs: solution: 'rpcs3.sln' maximumCpuCount: true platform: x64 configuration: 'Release' displayName: Compile RPCS3 - bash: .ci/deploy-windows.sh displayName: Pack up build artifacts - publish: $(Build.ArtifactStagingDirectory) condition: succeeded() artifact: RPCS3 for Windows - bash: .ci/github-upload.sh condition: and(ne(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.Repository.Name'], 'RPCS3/rpcs3'), eq(variables['Build.SourceBranch'], 'refs/heads/master')) displayName: Push build to GitHub env: RPCS3_TOKEN: $(RPCS3-Token) - job: Mac_Build timeoutInMinutes: 180 variables: CCACHE_DIR: "/tmp/ccache_dir" CCACHE_MAXSIZE: 300M CI_HAS_ARTIFACTS: true UPLOAD_COMMIT_HASH: 51ae32f468089a8169aaf1567de355ff4a3e0842 UPLOAD_REPO_FULL_NAME: "RPCS3/rpcs3-binaries-mac" RELEASE_MESSAGE: "../GitHubReleaseMessage.txt" ARTDIR: $(Build.ArtifactStagingDirectory) QT_VER: '6.6.1' QT_VER_MAIN: '6' pool: vmImage: "macOS-12" steps: - task: Cache@2 inputs: key: ccache | "$(Agent.OS)" path: $(CCACHE_DIR) restoreKeys: | ccache | "$(Agent.OS)" displayName: Ccache cache - task: Cache@2 inputs: key: qt | "$(Agent.OS)" | "$(QT_VER)" path: /tmp/Qt restoreKeys: | qt | "$(Agent.OS)" | "$(QT_VER)" displayName: Qt cache - task: Cache@2 inputs: key: brew | "$(Agent.OS)" path: /Users/runner/Library/Caches/Homebrew restoreKeys: | brew | "$(Agent.OS)" displayName: Homebrew cache - bash: | chmod +x ".ci/build-mac.sh" chmod +x ".ci/deploy-mac.sh" ".ci/build-mac.sh" displayName: Build MacOS - publish: $(Build.ArtifactStagingDirectory) condition: succeeded() artifact: RPCS3 for Mac - bash: | source './.ci/export-cirrus-vars.sh' .ci/github-upload.sh condition: and(ne(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.Repository.Name'], 'RPCS3/rpcs3'), eq(variables['Build.SourceBranch'], 'refs/heads/master')) displayName: Push build to GitHub env: RPCS3_TOKEN: $(RPCS3-Token)