From cc3db2aa43ee617ed5086976e0354c72feba713c Mon Sep 17 00:00:00 2001 From: Zach Hilman Date: Sun, 22 Sep 2019 16:01:29 -0400 Subject: [PATCH] ci: Split mainline pipeline and add support for GitHub releases (#2900) * ci: Add mock build alternative for fast testing * ci: Always cache build * ci: Extract steps to download build stage artifacts * ci: Add template to release to GitHub * ci: Add template to release to Azure Universal Artifacts * ci: Split mainline to two pipelines --- .ci/templates/build-mock.yml | 5 +++++ .ci/templates/build-single.yml | 13 ++++++------- .ci/templates/release-download.yml | 13 +++++++++++++ .ci/templates/release-github.yml | 11 +++++++++++ .ci/templates/release-universal.yml | 10 ++++++++++ .ci/yuzu-mainline-step1.yml | 8 ++++++++ ...{yuzu-mainline.yml => yuzu-mainline-step2.yml} | 15 +++++++++------ 7 files changed, 62 insertions(+), 13 deletions(-) create mode 100644 .ci/templates/build-mock.yml create mode 100644 .ci/templates/release-download.yml create mode 100644 .ci/templates/release-github.yml create mode 100644 .ci/templates/release-universal.yml create mode 100644 .ci/yuzu-mainline-step1.yml rename .ci/{yuzu-mainline.yml => yuzu-mainline-step2.yml} (68%) diff --git a/.ci/templates/build-mock.yml b/.ci/templates/build-mock.yml new file mode 100644 index 0000000000..e7aba93ded --- /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)-$(BuildSuffix)' + displayName: 'Upload Artifacts' \ No newline at end of file diff --git a/.ci/templates/build-single.yml b/.ci/templates/build-single.yml index 357731eb9c..cd9d1df88c 100644 --- a/.ci/templates/build-single.yml +++ b/.ci/templates/build-single.yml @@ -7,13 +7,12 @@ steps: 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 +- 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 displayName: 'Build' - script: chmod a+x ./.ci/scripts/$(ScriptFolder)/upload.sh && RELEASE_NAME=$(BuildName) ./.ci/scripts/$(ScriptFolder)/upload.sh diff --git a/.ci/templates/release-download.yml b/.ci/templates/release-download.yml new file mode 100644 index 0000000000..50ca06bb25 --- /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-mingw' + 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 0000000000..39fd47f1c3 --- /dev/null +++ b/.ci/templates/release-github.yml @@ -0,0 +1,11 @@ +steps: + - template: ./release-download.yml + - task: GitHubRelease@0 + inputs: + action: 'create' + title: 'yuzu $(BuildName) #$(Build.BuildId)' + assets: '$(Build.ArtifactStagingDirectory)/*' + gitHubConnection: $(GitHubReleaseConnectionName) + repositoryName: '$(Build.Repository.Name)' + target: '$(Build.SourceVersion)' + tagSource: 'auto' \ 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 0000000000..7076970075 --- /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 0000000000..3fd33d75a1 --- /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.yml b/.ci/yuzu-mainline-step2.yml similarity index 68% rename from .ci/yuzu-mainline.yml rename to .ci/yuzu-mainline-step2.yml index 2930a85647..fec724d118 100644 --- a/.ci/yuzu-mainline.yml +++ b/.ci/yuzu-mainline-step2.yml @@ -2,12 +2,7 @@ trigger: - master stages: -- stage: merge - displayName: 'merge' - jobs: - - template: ./templates/merge.yml - stage: format - dependsOn: merge displayName: 'format' jobs: - job: format @@ -17,9 +12,17 @@ stages: steps: - template: ./templates/format-check.yml - stage: build - displayName: 'build' dependsOn: format + displayName: 'build' jobs: - template: ./templates/build-standard.yml parameters: cache: 'true' +- stage: release + displayName: 'Release' + dependsOn: build + jobs: + - job: github + displayName: 'GitHub Release' + steps: + - template: ./templates/release-github.yml \ No newline at end of file