summaryrefslogtreecommitdiffstats
path: root/.ci
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--.ci/scripts/linux/docker.sh5
-rw-r--r--.ci/scripts/linux/exec.sh2
-rw-r--r--.ci/scripts/merge/apply-patches-by-label-private.py45
-rw-r--r--.ci/scripts/merge/apply-patches-by-label.py16
-rw-r--r--.ci/scripts/windows/docker.sh2
-rw-r--r--.ci/scripts/windows/exec.sh2
-rw-r--r--.ci/scripts/windows/upload.ps138
-rw-r--r--.ci/templates/build-mock.yml5
-rw-r--r--.ci/templates/build-msvc.yml22
-rw-r--r--.ci/templates/build-single.yml16
-rw-r--r--.ci/templates/build-standard.yml6
-rw-r--r--.ci/templates/build-testing.yml4
-rw-r--r--.ci/templates/merge-private.yml37
-rw-r--r--.ci/templates/merge.yml12
-rw-r--r--.ci/templates/mergebot-private.yml30
-rw-r--r--.ci/templates/mergebot.yml2
-rw-r--r--.ci/templates/release-download.yml13
-rw-r--r--.ci/templates/release-github.yml13
-rw-r--r--.ci/templates/release-private-tag.yml9
-rw-r--r--.ci/templates/release-universal.yml10
-rw-r--r--.ci/yuzu-mainline-step1.yml8
-rw-r--r--.ci/yuzu-mainline-step2.yml68
-rw-r--r--.ci/yuzu-mainline.yml25
-rw-r--r--.ci/yuzu-patreon-step1.yml8
-rw-r--r--.ci/yuzu-patreon-step2.yml42
-rw-r--r--.ci/yuzu-patreon.yml19
26 files changed, 385 insertions, 74 deletions
diff --git a/.ci/scripts/linux/docker.sh b/.ci/scripts/linux/docker.sh
index f538a4081..090ca75f1 100644
--- a/.ci/scripts/linux/docker.sh
+++ b/.ci/scripts/linux/docker.sh
@@ -5,10 +5,11 @@ cd /yuzu
ccache -s
mkdir build || true && cd build
-cmake .. -G Ninja -DYUZU_USE_BUNDLED_UNICORN=ON -DYUZU_USE_QT_WEB_ENGINE=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=/usr/lib/ccache/gcc -DCMAKE_CXX_COMPILER=/usr/lib/ccache/g++ -DYUZU_ENABLE_COMPATIBILITY_REPORTING=${ENABLE_COMPATIBILITY_REPORTING:-"OFF"} -DENABLE_COMPATIBILITY_LIST_DOWNLOAD=ON -DUSE_DISCORD_PRESENCE=ON
+cmake .. -G Ninja -DDISPLAY_VERSION=$1 -DYUZU_USE_BUNDLED_UNICORN=ON -DYUZU_USE_QT_WEB_ENGINE=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=/usr/lib/ccache/gcc -DCMAKE_CXX_COMPILER=/usr/lib/ccache/g++ -DYUZU_ENABLE_COMPATIBILITY_REPORTING=${ENABLE_COMPATIBILITY_REPORTING:-"OFF"} -DENABLE_COMPATIBILITY_LIST_DOWNLOAD=ON -DUSE_DISCORD_PRESENCE=ON
ninja
ccache -s
-ctest -VV -C Release
+# Ignore zlib's tests, since they aren't gated behind a CMake option.
+ctest -VV -E "(example|example64)" -C Release
diff --git a/.ci/scripts/linux/exec.sh b/.ci/scripts/linux/exec.sh
index a5a6c34b9..9fafa9208 100644
--- a/.ci/scripts/linux/exec.sh
+++ b/.ci/scripts/linux/exec.sh
@@ -2,4 +2,4 @@
mkdir -p "ccache" || true
chmod a+x ./.ci/scripts/linux/docker.sh
-docker run -e ENABLE_COMPATIBILITY_REPORTING -e CCACHE_DIR=/yuzu/ccache -v $(pwd):/yuzu yuzuemu/build-environments:linux-fresh /bin/bash /yuzu/.ci/scripts/linux/docker.sh
+docker run -e ENABLE_COMPATIBILITY_REPORTING -e CCACHE_DIR=/yuzu/ccache -v $(pwd):/yuzu yuzuemu/build-environments:linux-fresh /bin/bash /yuzu/.ci/scripts/linux/docker.sh $1
diff --git a/.ci/scripts/merge/apply-patches-by-label-private.py b/.ci/scripts/merge/apply-patches-by-label-private.py
new file mode 100644
index 000000000..fe0acd510
--- /dev/null
+++ b/.ci/scripts/merge/apply-patches-by-label-private.py
@@ -0,0 +1,45 @@
+# Download all pull requests as patches that match a specific label
+# Usage: python download-patches-by-label.py <Label to Match> <Root Path Folder to DL to>
+
+import requests, sys, json, shutil, subprocess, os, traceback
+
+org = os.getenv("PRIVATEMERGEORG", "yuzu-emu")
+repo = os.getenv("PRIVATEMERGEREPO", "yuzu-private")
+tagline = sys.argv[3]
+user = sys.argv[1]
+
+dl_list = {}
+
+TAG_NAME = sys.argv[2]
+
+def check_individual(repo_id, pr_id):
+ url = 'https://%sdev.azure.com/%s/%s/_apis/git/repositories/%s/pullRequests/%s/labels?api-version=5.1-preview.1' % (user, org, repo, repo_id, pr_id)
+ response = requests.get(url)
+ if (response.ok):
+ try:
+ js = response.json()
+ return any(tag.get('name') == TAG_NAME for tag in js['value'])
+ except:
+ return False
+ return False
+
+def merge_pr(pn, ref):
+ print("Matched PR# %s" % pn)
+ print(subprocess.check_output(["git", "fetch", "https://%sdev.azure.com/%s/_git/%s" % (user, org, repo), ref, "-f"]))
+ print(subprocess.check_output(["git", "merge", "--squash", 'origin/' + ref.replace('refs/heads/','')]))
+ print(subprocess.check_output(["git", "commit", "-m\"Merge %s PR %s\"" % (tagline, pn)]))
+
+def main():
+ url = 'https://%sdev.azure.com/%s/%s/_apis/git/pullrequests?api-version=5.1' % (user, org, repo)
+ response = requests.get(url)
+ if (response.ok):
+ js = response.json()
+ tagged_prs = filter(lambda pr: check_individual(pr['repository']['id'], pr['pullRequestId']), js['value'])
+ map(lambda pr: merge_pr(pr['pullRequestId'], pr['sourceRefName']), tagged_prs)
+
+if __name__ == '__main__':
+ try:
+ main()
+ except:
+ traceback.print_exc(file=sys.stdout)
+ sys.exit(-1)
diff --git a/.ci/scripts/merge/apply-patches-by-label.py b/.ci/scripts/merge/apply-patches-by-label.py
index b346001a5..43ed74d7f 100644
--- a/.ci/scripts/merge/apply-patches-by-label.py
+++ b/.ci/scripts/merge/apply-patches-by-label.py
@@ -1,7 +1,9 @@
# Download all pull requests as patches that match a specific label
# Usage: python download-patches-by-label.py <Label to Match> <Root Path Folder to DL to>
-import requests, sys, json, urllib3.request, shutil, subprocess
+import requests, sys, json, urllib3.request, shutil, subprocess, os
+
+tagline = sys.argv[2]
http = urllib3.PoolManager()
dl_list = {}
@@ -12,17 +14,23 @@ def check_individual(labels):
return True
return False
-try:
- url = 'https://api.github.com/repos/yuzu-emu/yuzu/pulls'
+def do_page(page):
+ url = 'https://api.github.com/repos/yuzu-emu/yuzu/pulls?page=%s' % page
response = requests.get(url)
if (response.ok):
j = json.loads(response.content)
+ if j == []:
+ return
for pr in j:
if (check_individual(pr["labels"])):
pn = pr["number"]
print("Matched PR# %s" % pn)
print(subprocess.check_output(["git", "fetch", "https://github.com/yuzu-emu/yuzu.git", "pull/%s/head:pr-%s" % (pn, pn), "-f"]))
print(subprocess.check_output(["git", "merge", "--squash", "pr-%s" % pn]))
- print(subprocess.check_output(["git", "commit", "-m\"Merge PR %s\"" % pn]))
+ print(subprocess.check_output(["git", "commit", "-m\"Merge %s PR %s\"" % (tagline, pn)]))
+
+try:
+ for i in range(1,30):
+ do_page(i)
except:
sys.exit(-1)
diff --git a/.ci/scripts/windows/docker.sh b/.ci/scripts/windows/docker.sh
index f7093363b..e8f26933a 100644
--- a/.ci/scripts/windows/docker.sh
+++ b/.ci/scripts/windows/docker.sh
@@ -13,7 +13,7 @@ echo '' >> /bin/cmd
chmod +x /bin/cmd
mkdir build || true && cd build
-cmake .. -G Ninja -DCMAKE_TOOLCHAIN_FILE="$(pwd)/../CMakeModules/MinGWCross.cmake" -DUSE_CCACHE=ON -DYUZU_USE_BUNDLED_UNICORN=ON -DENABLE_COMPATIBILITY_LIST_DOWNLOAD=ON -DCMAKE_BUILD_TYPE=Release
+cmake .. -G Ninja -DDISPLAY_VERSION=$1 -DCMAKE_TOOLCHAIN_FILE="$(pwd)/../CMakeModules/MinGWCross.cmake" -DUSE_CCACHE=ON -DYUZU_USE_BUNDLED_UNICORN=ON -DENABLE_COMPATIBILITY_LIST_DOWNLOAD=ON -DCMAKE_BUILD_TYPE=Release
ninja
# Clean up the dirty hacks
diff --git a/.ci/scripts/windows/exec.sh b/.ci/scripts/windows/exec.sh
index d6a994856..4155ed5fc 100644
--- a/.ci/scripts/windows/exec.sh
+++ b/.ci/scripts/windows/exec.sh
@@ -2,4 +2,4 @@
mkdir -p "ccache" || true
chmod a+x ./.ci/scripts/windows/docker.sh
-docker run -e CCACHE_DIR=/yuzu/ccache -v $(pwd):/yuzu yuzuemu/build-environments:linux-mingw /bin/bash -ex /yuzu/.ci/scripts/windows/docker.sh
+docker run -e CCACHE_DIR=/yuzu/ccache -v $(pwd):/yuzu yuzuemu/build-environments:linux-mingw /bin/bash -ex /yuzu/.ci/scripts/windows/docker.sh $1
diff --git a/.ci/scripts/windows/upload.ps1 b/.ci/scripts/windows/upload.ps1
new file mode 100644
index 000000000..3cb709924
--- /dev/null
+++ b/.ci/scripts/windows/upload.ps1
@@ -0,0 +1,38 @@
+$GITDATE = $(git show -s --date=short --format='%ad') -replace "-",""
+$GITREV = $(git show -s --format='%h')
+$RELEASE_DIST = "yuzu-windows-msvc"
+
+$MSVC_BUILD_ZIP = "yuzu-windows-msvc-$GITDATE-$GITREV.zip" -replace " ", ""
+$MSVC_BUILD_PDB = "yuzu-windows-msvc-$GITDATE-$GITREV-debugsymbols.zip" -replace " ", ""
+$MSVC_SEVENZIP = "yuzu-windows-msvc-$GITDATE-$GITREV.7z" -replace " ", ""
+$MSVC_TAR = "yuzu-windows-msvc-$GITDATE-$GITREV.tar" -replace " ", ""
+$MSVC_TARXZ = "yuzu-windows-msvc-$GITDATE-$GITREV.tar.xz" -replace " ", ""
+
+$env:BUILD_ZIP = $MSVC_BUILD_ZIP
+$env:BUILD_SYMBOLS = $MSVC_BUILD_PDB
+$env:BUILD_UPDATE = $MSVC_SEVENZIP
+
+$BUILD_DIR = ".\build\bin\Release"
+
+mkdir pdb
+Get-ChildItem "$BUILD_DIR\" -Recurse -Filter "*.pdb" | Copy-Item -destination .\pdb
+7z a -tzip $MSVC_BUILD_PDB .\pdb\*.pdb
+rm "$BUILD_DIR\*.pdb"
+mkdir $RELEASE_DIST
+mkdir "artifacts"
+
+Copy-Item "$BUILD_DIR\*" -Destination $RELEASE_DIST -Recurse
+rm "$RELEASE_DIST\*.exe"
+Get-ChildItem "$BUILD_DIR" -Recurse -Filter "yuzu*.exe" | Copy-Item -destination $RELEASE_DIST
+Get-ChildItem "$BUILD_DIR" -Recurse -Filter "QtWebEngineProcess*.exe" | Copy-Item -destination $RELEASE_DIST
+Copy-Item .\license.txt -Destination $RELEASE_DIST
+Copy-Item .\README.md -Destination $RELEASE_DIST
+7z a -tzip $MSVC_BUILD_ZIP $RELEASE_DIST\*
+7z a $MSVC_SEVENZIP $RELEASE_DIST
+
+7z a -r -ttar $MSVC_TAR $RELEASE_DIST
+7z a -r -txz $MSVC_TARXZ $MSVC_TAR
+
+Get-ChildItem . -Filter "*.zip" | Copy-Item -destination "artifacts"
+Get-ChildItem . -Filter "*.7z" | Copy-Item -destination "artifacts"
+Get-ChildItem . -Filter "*.tar.xz" | Copy-Item -destination "artifacts" \ No newline at end of file
diff --git a/.ci/templates/build-mock.yml b/.ci/templates/build-mock.yml
new file mode 100644
index 000000000..0318a0ad8
--- /dev/null
+++ b/.ci/templates/build-mock.yml
@@ -0,0 +1,5 @@
+steps:
+ - script: mkdir artifacts || echo 'X' > artifacts/T1.txt
+ - publish: artifacts
+ artifact: 'yuzu-$(BuildName)-mock'
+ displayName: 'Upload Artifacts' \ No newline at end of file
diff --git a/.ci/templates/build-msvc.yml b/.ci/templates/build-msvc.yml
new file mode 100644
index 000000000..b44a08247
--- /dev/null
+++ b/.ci/templates/build-msvc.yml
@@ -0,0 +1,22 @@
+parameters:
+ artifactSource: 'true'
+ cache: 'false'
+ version: ''
+
+steps:
+- script: mkdir build && cd build && cmake -G "Visual Studio 15 2017 Win64" --config Release -DYUZU_USE_BUNDLED_QT=1 -DYUZU_USE_BUNDLED_SDL2=1 -DYUZU_USE_BUNDLED_UNICORN=1 -DYUZU_USE_QT_WEB_ENGINE=ON -DENABLE_COMPATIBILITY_LIST_DOWNLOAD=ON -DYUZU_ENABLE_COMPATIBILITY_REPORTING=${COMPAT} -DUSE_DISCORD_PRESENCE=ON -DDISPLAY_VERSION=${{ parameters['version'] }} .. && cd ..
+ displayName: 'Configure CMake'
+- task: MSBuild@1
+ displayName: 'Build'
+ inputs:
+ solution: 'build/yuzu.sln'
+ maximumCpuCount: true
+ configuration: release
+- task: PowerShell@2
+ displayName: 'Package Artifacts'
+ inputs:
+ targetType: 'filePath'
+ filePath: './.ci/scripts/windows/upload.ps1'
+- publish: artifacts
+ artifact: 'yuzu-$(BuildName)-windows-msvc'
+ displayName: 'Upload Artifacts'
diff --git a/.ci/templates/build-single.yml b/.ci/templates/build-single.yml
index 357731eb9..7b27693be 100644
--- a/.ci/templates/build-single.yml
+++ b/.ci/templates/build-single.yml
@@ -1,20 +1,20 @@
parameters:
artifactSource: 'true'
cache: 'false'
+ version: ''
steps:
- task: DockerInstaller@0
displayName: 'Prepare Environment'
inputs:
dockerVersion: '17.09.0-ce'
-- ${{ if eq(parameters.cache, 'true') }}:
- - task: CacheBeta@0
- displayName: 'Cache Build System'
- inputs:
- key: yuzu-v1-$(BuildName)-$(BuildSuffix)-$(CacheSuffix)
- path: $(System.DefaultWorkingDirectory)/ccache
- cacheHitVar: CACHE_RESTORED
-- script: chmod a+x ./.ci/scripts/$(ScriptFolder)/exec.sh && ./.ci/scripts/$(ScriptFolder)/exec.sh
+- task: CacheBeta@0
+ displayName: 'Cache Build System'
+ inputs:
+ key: yuzu-v1-$(BuildName)-$(BuildSuffix)-$(CacheSuffix)
+ path: $(System.DefaultWorkingDirectory)/ccache
+ cacheHitVar: CACHE_RESTORED
+- script: chmod a+x ./.ci/scripts/$(ScriptFolder)/exec.sh && ./.ci/scripts/$(ScriptFolder)/exec.sh ${{ parameters['version'] }}
displayName: 'Build'
- script: chmod a+x ./.ci/scripts/$(ScriptFolder)/upload.sh && RELEASE_NAME=$(BuildName) ./.ci/scripts/$(ScriptFolder)/upload.sh
displayName: 'Package Artifacts'
diff --git a/.ci/templates/build-standard.yml b/.ci/templates/build-standard.yml
index aa180894e..7422c8346 100644
--- a/.ci/templates/build-standard.yml
+++ b/.ci/templates/build-standard.yml
@@ -1,3 +1,6 @@
+parameters:
+ version: ''
+
jobs:
- job: build
displayName: 'standard'
@@ -20,4 +23,5 @@ jobs:
- template: ./build-single.yml
parameters:
artifactSource: 'false'
- cache: $(parameters.cache) \ No newline at end of file
+ cache: $(parameters.cache)
+ version: $(parameters.version) \ No newline at end of file
diff --git a/.ci/templates/build-testing.yml b/.ci/templates/build-testing.yml
index 4c9625944..30c8aaac3 100644
--- a/.ci/templates/build-testing.yml
+++ b/.ci/templates/build-testing.yml
@@ -1,3 +1,6 @@
+parameters:
+ version: ''
+
jobs:
- job: build_test
displayName: 'testing'
@@ -31,3 +34,4 @@ jobs:
parameters:
artifactSource: 'false'
cache: 'false'
+ version: $(parameters.version) \ No newline at end of file
diff --git a/.ci/templates/merge-private.yml b/.ci/templates/merge-private.yml
new file mode 100644
index 000000000..f15a74355
--- /dev/null
+++ b/.ci/templates/merge-private.yml
@@ -0,0 +1,37 @@
+jobs:
+- job: merge
+ displayName: 'pull requests'
+ steps:
+ - checkout: self
+ submodules: recursive
+ - template: ./mergebot-private.yml
+ parameters:
+ matchLabel: '$(BuildName)-merge'
+ matchLabelPublic: '$(PublicBuildName)-merge'
+ - task: ArchiveFiles@2
+ displayName: 'Package Source'
+ inputs:
+ rootFolderOrFile: '$(System.DefaultWorkingDirectory)'
+ includeRootFolder: false
+ archiveType: '7z'
+ archiveFile: '$(Build.ArtifactStagingDirectory)/yuzu-$(BuildName)-source.7z'
+ - task: PublishPipelineArtifact@1
+ displayName: 'Upload Artifacts'
+ inputs:
+ targetPath: '$(Build.ArtifactStagingDirectory)/yuzu-$(BuildName)-source.7z'
+ artifact: 'yuzu-$(BuildName)-source'
+ replaceExistingArchive: true
+- job: upload_source
+ displayName: 'upload'
+ dependsOn: merge
+ steps:
+ - template: ./sync-source.yml
+ parameters:
+ artifactSource: 'true'
+ needSubmodules: 'true'
+ - script: chmod a+x $(System.DefaultWorkingDirectory)/.ci/scripts/merge/yuzubot-git-config.sh && $(System.DefaultWorkingDirectory)/.ci/scripts/merge/yuzubot-git-config.sh
+ displayName: 'Apply Git Configuration'
+ - script: git remote add other $(GitRepoPushChangesURL)
+ displayName: 'Register Repository'
+ - script: git push --force other HEAD:$(GitPushBranch)
+ displayName: 'Update Code'
diff --git a/.ci/templates/merge.yml b/.ci/templates/merge.yml
index efc82778a..460dfa1c1 100644
--- a/.ci/templates/merge.yml
+++ b/.ci/templates/merge.yml
@@ -30,17 +30,7 @@ jobs:
needSubmodules: 'true'
- script: chmod a+x $(System.DefaultWorkingDirectory)/.ci/scripts/merge/yuzubot-git-config.sh && $(System.DefaultWorkingDirectory)/.ci/scripts/merge/yuzubot-git-config.sh
displayName: 'Apply Git Configuration'
- - script: git tag -a $(BuildName)-$(Build.BuildId) -m "yuzu $(BuildName) $(Build.BuildNumber) $(Build.DefinitionName)"
- displayName: 'Tag Source'
- script: git remote add other $(GitRepoPushChangesURL)
displayName: 'Register Repository'
- - script: git push --follow-tags --force other HEAD:$(GitPushBranch)
+ - script: git push --force other HEAD:$(GitPushBranch)
displayName: 'Update Code'
- - script: git rev-list -n 1 $(BuildName)-$(Build.BuildId) > $(Build.ArtifactStagingDirectory)/tag-commit.sha
- displayName: 'Calculate Release Point'
- - task: PublishPipelineArtifact@1
- displayName: 'Upload Release Point'
- inputs:
- targetPath: '$(Build.ArtifactStagingDirectory)/tag-commit.sha'
- artifact: 'yuzu-$(BuildName)-release-point'
- replaceExistingArchive: true \ No newline at end of file
diff --git a/.ci/templates/mergebot-private.yml b/.ci/templates/mergebot-private.yml
new file mode 100644
index 000000000..f9a40cf61
--- /dev/null
+++ b/.ci/templates/mergebot-private.yml
@@ -0,0 +1,30 @@
+parameters:
+ matchLabel: 'dummy-merge'
+ matchLabelPublic: 'dummy-merge'
+
+steps:
+ - script: mkdir $(System.DefaultWorkingDirectory)/patches && pip install requests urllib3
+ displayName: 'Prepare Environment'
+ - script: chmod a+x $(System.DefaultWorkingDirectory)/.ci/scripts/merge/yuzubot-git-config.sh && $(System.DefaultWorkingDirectory)/.ci/scripts/merge/yuzubot-git-config.sh
+ displayName: 'Apply Git Configuration'
+ - task: PythonScript@0
+ displayName: 'Discover, Download, and Apply Patches (Mainline)'
+ inputs:
+ scriptSource: 'filePath'
+ scriptPath: '.ci/scripts/merge/apply-patches-by-label.py'
+ arguments: '${{ parameters.matchLabelPublic }} $(MergeTaglinePublic) patches-public'
+ workingDirectory: '$(System.DefaultWorkingDirectory)'
+ - task: PythonScript@0
+ displayName: 'Discover, Download, and Apply Patches (Patreon Public)'
+ inputs:
+ scriptSource: 'filePath'
+ scriptPath: '.ci/scripts/merge/apply-patches-by-label.py'
+ arguments: '${{ parameters.matchLabel }} "$(MergeTaglinePrivate) Public" patches-mixed-public'
+ workingDirectory: '$(System.DefaultWorkingDirectory)'
+ - task: PythonScript@0
+ displayName: 'Discover, Download, and Apply Patches (Patreon Private)'
+ inputs:
+ scriptSource: 'filePath'
+ scriptPath: '.ci/scripts/merge/apply-patches-by-label-private.py'
+ arguments: '$(PrivateMergeUser) ${{ parameters.matchLabel }} "$(MergeTaglinePrivate) Private" patches-private'
+ workingDirectory: '$(System.DefaultWorkingDirectory)'
diff --git a/.ci/templates/mergebot.yml b/.ci/templates/mergebot.yml
index 5211efcc6..a4c5c2a28 100644
--- a/.ci/templates/mergebot.yml
+++ b/.ci/templates/mergebot.yml
@@ -11,5 +11,5 @@ steps:
inputs:
scriptSource: 'filePath'
scriptPath: '.ci/scripts/merge/apply-patches-by-label.py'
- arguments: '${{ parameters.matchLabel }} patches'
+ arguments: '${{ parameters.matchLabel }} Tagged patches'
workingDirectory: '$(System.DefaultWorkingDirectory)'
diff --git a/.ci/templates/release-download.yml b/.ci/templates/release-download.yml
new file mode 100644
index 000000000..f7e30690f
--- /dev/null
+++ b/.ci/templates/release-download.yml
@@ -0,0 +1,13 @@
+steps:
+ - task: DownloadPipelineArtifact@2
+ displayName: 'Download Windows Release'
+ inputs:
+ artifactName: 'yuzu-$(BuildName)-windows-msvc'
+ buildType: 'current'
+ targetPath: '$(Build.ArtifactStagingDirectory)'
+ - task: DownloadPipelineArtifact@2
+ displayName: 'Download Linux Release'
+ inputs:
+ artifactName: 'yuzu-$(BuildName)-linux'
+ buildType: 'current'
+ targetPath: '$(Build.ArtifactStagingDirectory)' \ No newline at end of file
diff --git a/.ci/templates/release-github.yml b/.ci/templates/release-github.yml
new file mode 100644
index 000000000..c200954f1
--- /dev/null
+++ b/.ci/templates/release-github.yml
@@ -0,0 +1,13 @@
+steps:
+ - template: ./release-download.yml
+ - task: GitHubRelease@0
+ displayName: 'GitHub Release'
+ inputs:
+ action: 'create'
+ title: '$(ReleasePrefix) $(DisplayVersion)'
+ assets: '$(Build.ArtifactStagingDirectory)/*'
+ gitHubConnection: $(GitHubReleaseConnectionName)
+ repositoryName: '$(Build.Repository.Name)'
+ target: '$(Build.SourceVersion)'
+ tagSource: manual
+ tag: $(BuildName)-$(DisplayPrefix)-$(DisplayVersion) \ No newline at end of file
diff --git a/.ci/templates/release-private-tag.yml b/.ci/templates/release-private-tag.yml
new file mode 100644
index 000000000..e80d57593
--- /dev/null
+++ b/.ci/templates/release-private-tag.yml
@@ -0,0 +1,9 @@
+steps:
+ - script: chmod a+x $(System.DefaultWorkingDirectory)/.ci/scripts/merge/yuzubot-git-config.sh && $(System.DefaultWorkingDirectory)/.ci/scripts/merge/yuzubot-git-config.sh
+ displayName: 'Apply Git Configuration'
+ - script: git tag -a $(BuildName)-$(DisplayPrefix)-$(DisplayVersion) -m "yuzu $(BuildName) $(Build.BuildNumber) $(Build.DefinitionName) $(DisplayPrefix)-$(DisplayVersion)"
+ displayName: 'Tag Source'
+ - script: git remote add other $(GitRepoPushChangesURL)
+ displayName: 'Register Repository'
+ - script: git push other $(BuildName)-$(DisplayPrefix)-$(DisplayVersion)
+ displayName: 'Update Code' \ No newline at end of file
diff --git a/.ci/templates/release-universal.yml b/.ci/templates/release-universal.yml
new file mode 100644
index 000000000..707697007
--- /dev/null
+++ b/.ci/templates/release-universal.yml
@@ -0,0 +1,10 @@
+steps:
+ - template: ./release-download.yml
+ - task: UniversalPackages@0
+ displayName: Publish Artifacts
+ inputs:
+ command: publish
+ publishDirectory: '$(Build.ArtifactStagingDirectory)'
+ vstsFeedPublish: 'yuzu-$(BuildName)'
+ vstsFeedPackagePublish: 'main'
+ packagePublishDescription: 'Yuzu Windows and Linux Executable Packages' \ No newline at end of file
diff --git a/.ci/yuzu-mainline-step1.yml b/.ci/yuzu-mainline-step1.yml
new file mode 100644
index 000000000..3fd33d75a
--- /dev/null
+++ b/.ci/yuzu-mainline-step1.yml
@@ -0,0 +1,8 @@
+trigger:
+- master
+
+stages:
+- stage: merge
+ displayName: 'merge'
+ jobs:
+ - template: ./templates/merge.yml
diff --git a/.ci/yuzu-mainline-step2.yml b/.ci/yuzu-mainline-step2.yml
new file mode 100644
index 000000000..5f2dfb3d8
--- /dev/null
+++ b/.ci/yuzu-mainline-step2.yml
@@ -0,0 +1,68 @@
+trigger:
+- master
+
+variables:
+ DisplayVersion: $[counter(variables['DisplayPrefix'], 1)]
+
+stages:
+- stage: format
+ displayName: 'format'
+ jobs:
+ - job: format
+ displayName: 'clang'
+ pool:
+ vmImage: ubuntu-latest
+ steps:
+ - template: ./templates/format-check.yml
+- stage: build
+ dependsOn: format
+ displayName: 'build'
+ jobs:
+ - job: build
+ displayName: 'standard'
+ pool:
+ vmImage: ubuntu-latest
+ strategy:
+ maxParallel: 10
+ matrix:
+ linux:
+ BuildSuffix: 'linux'
+ ScriptFolder: 'linux'
+ steps:
+ - template: ./templates/sync-source.yml
+ parameters:
+ artifactSource: $(parameters.artifactSource)
+ needSubmodules: 'true'
+ - template: ./templates/build-single.yml
+ parameters:
+ artifactSource: 'false'
+ cache: 'true'
+ version: $(DisplayVersion)
+- stage: build_win
+ dependsOn: format
+ displayName: 'build-windows'
+ jobs:
+ - job: build
+ displayName: 'msvc'
+ pool:
+ vmImage: vs2017-win2016
+ steps:
+ - template: ./templates/sync-source.yml
+ parameters:
+ artifactSource: $(parameters.artifactSource)
+ needSubmodules: 'true'
+ - template: ./templates/build-msvc.yml
+ parameters:
+ artifactSource: 'false'
+ cache: 'true'
+ version: $(DisplayVersion)
+- stage: release
+ displayName: 'release'
+ dependsOn:
+ - build
+ - build_win
+ jobs:
+ - job: github
+ displayName: 'github'
+ steps:
+ - template: ./templates/release-github.yml \ No newline at end of file
diff --git a/.ci/yuzu-mainline.yml b/.ci/yuzu-mainline.yml
deleted file mode 100644
index 2930a8564..000000000
--- a/.ci/yuzu-mainline.yml
+++ /dev/null
@@ -1,25 +0,0 @@
-trigger:
-- master
-
-stages:
-- stage: merge
- displayName: 'merge'
- jobs:
- - template: ./templates/merge.yml
-- stage: format
- dependsOn: merge
- displayName: 'format'
- jobs:
- - job: format
- displayName: 'clang'
- pool:
- vmImage: ubuntu-latest
- steps:
- - template: ./templates/format-check.yml
-- stage: build
- displayName: 'build'
- dependsOn: format
- jobs:
- - template: ./templates/build-standard.yml
- parameters:
- cache: 'true'
diff --git a/.ci/yuzu-patreon-step1.yml b/.ci/yuzu-patreon-step1.yml
new file mode 100644
index 000000000..cf30397cd
--- /dev/null
+++ b/.ci/yuzu-patreon-step1.yml
@@ -0,0 +1,8 @@
+trigger:
+- master
+
+stages:
+- stage: merge
+ displayName: 'merge'
+ jobs:
+ - template: ./templates/merge-private.yml
diff --git a/.ci/yuzu-patreon-step2.yml b/.ci/yuzu-patreon-step2.yml
new file mode 100644
index 000000000..35c5fbe36
--- /dev/null
+++ b/.ci/yuzu-patreon-step2.yml
@@ -0,0 +1,42 @@
+trigger:
+- master
+
+variables:
+ DisplayVersion: $[counter(variables['DisplayPrefix'], 1)]
+
+stages:
+- stage: format
+ displayName: 'format'
+ jobs:
+ - job: format
+ displayName: 'clang'
+ pool:
+ vmImage: ubuntu-latest
+ steps:
+ - template: ./templates/format-check.yml
+- stage: build
+ dependsOn: format
+ displayName: 'build'
+ jobs:
+ - job: build
+ displayName: 'windows-msvc'
+ pool:
+ vmImage: vs2017-win2016
+ steps:
+ - template: ./templates/sync-source.yml
+ parameters:
+ artifactSource: $(parameters.artifactSource)
+ needSubmodules: 'true'
+ - template: ./templates/build-msvc.yml
+ parameters:
+ artifactSource: 'false'
+ cache: $(parameters.cache)
+ version: $(DisplayVersion)
+- stage: release
+ displayName: 'release'
+ dependsOn: build
+ jobs:
+ - job: release
+ displayName: 'source'
+ steps:
+ - template: ./templates/release-private-tag.yml
diff --git a/.ci/yuzu-patreon.yml b/.ci/yuzu-patreon.yml
deleted file mode 100644
index aa912913d..000000000
--- a/.ci/yuzu-patreon.yml
+++ /dev/null
@@ -1,19 +0,0 @@
-# Starter pipeline
-# Start with a minimal pipeline that you can customize to build and deploy your code.
-# Add steps that build, run tests, deploy, and more:
-# https://aka.ms/yaml
-
-trigger:
-- master
-
-pool:
- vmImage: 'ubuntu-latest'
-
-steps:
-- script: echo Hello, world!
- displayName: 'Run a one-line script'
-
-- script: |
- echo Add other tasks to build, test, and deploy your project.
- echo See https://aka.ms/yaml
- displayName: 'Run a multi-line script'