This commit is contained in:
Elie Bariche 2020-09-24 19:16:48 -04:00
Родитель ef8eebfa4d
Коммит 279fa158dd
8 изменённых файлов: 77 добавлений и 398 удалений

Просмотреть файл

@ -1,38 +1,4 @@
trigger:
branches:
include:
- master
- release/beta/*
- release/stable/*
- feature/*
pr:
branches:
include:
- master
- release/beta/*
- release/stable/*
variables:
# Pool names
windowsPoolName: 'windows 1809'
macOSPoolName: 'Default'
# Nuget Version to use
NUGET_VERSION: 5.4.0
# Solution to build
SolutionFileName: Uno.Material.sln
# name of the folder where artefacts will be placed. Variable used in build and release phases.
# We make seperate folders so that releases can each download only the folder they need.
NugetPackagesArtifactName: Packages
AndroidArtifactName: Android
iOSArtifactName: iOS
UWPArtifactName: UWP
macOSArtifactName: macOS
WASMArtifactName: WASM
variables:
# Path where packages (nuget or app packages) will be copied to.
PackageOutputPath: $(Build.ArtifactStagingDirectory)
@ -42,148 +8,72 @@ variables:
# For release conditions
IsReleaseBranch: $[or(eq(variables['Build.SourceBranch'], 'refs/heads/master'), startsWith(variables['Build.SourceBranch'], 'refs/heads/feature/'), startsWith(variables['Build.SourceBranch'], 'refs/heads/release/'))]
# Android configurations
ANDROID_NDK_HOME: C:\Microsoft\AndroidNDK64\android-ndk-r16b
ANDROID_NDK_PATH: C:\Microsoft\AndroidNDK64\android-ndk-r16b
AndroidNdkDirectory: C:\Microsoft\AndroidNDK64\android-ndk-r16b
# Optional, specifiy xcode and xamarin versions. See ios-build-select-version.yml if needed.
# xCodeRoot: '/Applications/Xcode_11.3.app'
# XamarinSDKVersion: 6_6_0
# Configuration requirements on the azure devops pipeline
# Those variables must be configured in the AzureDevops Library
#### iOS ####
## Secure files:
# distribution certificate (.p12)
# distribution provisioning profile (.mobileprovision)
## Variable group containing : "group: apple.appstore.distribution"
# $(appleappstorecertificatepassword) : password for the p12 certificate (this is marked private in azdo)
# $(UnoMaterialStoreProvisioningProfileName) : Name of the .mobileprovision file in the secure files.
# $(appleTeamId) : id of the apple team (Required if the secure connection used has access to more than one team, which is often the case)
# $(appleTeamName) : name of the apple developer team. (Required if the secure connection used has access to more than one team, which is often the case)
## Code to update below
# In InstallAppleCertificate@ task: Set the value for certSecureFile
# In InstallAppleProvisioningProfile@ task: Set the value for provProfileSecureFile
# In stage-release-testflight.yml, AppStoreRelease : Set the name of the service connection and the identifier of the app (aka the Bundle ID)
stages:
- stage: Build
jobs:
- job: Build_on_Windows # Build samples possible on a windows machine and nuget packages
strategy:
maxParallel: 3
matrix:
Android:
ApplicationConfiguration: Release
ApplicationPlatform: Android
ArtifactName: $(AndroidArtifactName)
UWP:
ApplicationConfiguration: Release
ApplicationPlatform: UWP_x64
ArtifactName: $(UWPArtifactName)
Packages:
ApplicationConfiguration: Release
ApplicationPlatform: Packages
GeneratePackageOnBuild: true
ArtifactName: $(NugetPackagesArtifactName)
pool:
name: $(windowsPoolName)
container: nventive/build-agent:vs16.6.0
steps:
- template: build/stage-build.yml
- job: Build_on_Mac # Build iOS and macOS samples
strategy:
maxParallel: 3
matrix:
iOS:
ApplicationConfiguration: Release
ApplicationPlatform: iPhone
ArtifactName: $(iOSArtifactName)
macOS:
ApplicationConfiguration: Release
ApplicationPlatform: macOS
ArtifactName: $(macOSArtifactName)
pool:
name: $(macOSPoolName)
demands:
- Xamarin.iOS -equals 13.16
variables:
- name: SkipUnknownFrameworks
value: true # Used by TargetFrameworks.Filtering package to build only what's possible on a mac for the multitargeted library
- group: apple.appstore.distribution # Import all variables for certificate from the library in azure devops
steps:
- task: InstallAppleCertificate@2
displayName: Install Apple Certificate
inputs:
certSecureFile: 'apple.appstore.distribution.p12' # Name of the p12 certificate in the secure files (in azure devops library)
certPwd: '$(appleappstorecertificatepassword)'
keychain: 'temp'
deleteCert: true
- task: InstallAppleProvisioningProfile@1
displayName: 'Install Apple Provisioning Profile'
inputs:
provisioningProfileLocation: 'secureFiles'
provProfileSecureFile: 'UnoMaterial.mobileprovision' # Name of the .mobileprovision file in the secure files.
- task: UseDotNet@2
displayName: 'Install .Net Core runtime 2.1.x'
inputs:
version: 2.1.x
packageType: 'runtime'
installationPath: '$(Agent.ToolsDirectory)/dotnet'
jobs:
- job: Windows # Build UWP/Android/NuGet
strategy:
maxParallel: 3
matrix:
UWP:
ApplicationPlatform: UWP_x64
ArtifactName: UWP
Android:
ApplicationPlatform: Android
ArtifactName: Android
Packages:
ApplicationPlatform: Packages
GeneratePackageOnBuild: true
ArtifactName: Packages
pool:
vmImage: windows-2019
steps:
- template: build/stage-build.yml
- job: Build_Wasm
container: unoplatform/wasm-build:2.2
- job: MacOS # Build iOS/macOS
strategy:
maxParallel: 2
matrix:
iOS:
ApplicationPlatform: iPhone
ArtifactName: iOS
macOS:
ApplicationPlatform: macOS
ArtifactName: macOS
pool:
vmImage: macOS-10.15
pool:
vmImage: 'ubuntu-18.04'
variables:
- name: SkipUnknownFrameworks
value: true # Used by TargetFrameworks.Filtering package
- group: apple.appstore.distribution # Variables for certificate
variables:
NUGET_PACKAGES: $(build.sourcesdirectory)/.nuget
SkipUnknowFrameworks: True
ArtifactName: $(WASMArtifactName)
steps:
- task: InstallAppleCertificate@2
displayName: Install Apple Certificate
inputs:
certSecureFile: 'apple.appstore.distribution.p12' # Name of the p12 certificate
certPwd: '$(appleappstorecertificatepassword)'
keychain: 'temp'
deleteCert: true
steps:
- template: build/stage-build-wasm.yml
- task: InstallAppleProvisioningProfile@1
displayName: 'Install Apple Provisioning Profile'
inputs:
provisioningProfileLocation: 'secureFiles'
provProfileSecureFile: 'UnoMaterial.mobileprovision'
- stage: Release_Nuget
# Only release when the build is not a Pull Request and it's using one of the proper release branches
condition: and(succeeded(), ne(variables['IsLightBuild'], 'true'), eq(variables['IsReleaseBranch'], 'true'))
dependsOn: Build
- template: build/stage-build.yml
jobs:
- template: build/stage-release-nuget.yml
- job: Linux
- stage: Release_AppCenter
# Only release when the build is not a Pull Request and it's using one of the proper release branches
condition: and(succeeded(), ne(variables['IsLightBuild'], 'true'), eq(variables['IsReleaseBranch'], 'true'))
dependsOn: Build
pool:
vmImage: 'ubuntu-18.04'
jobs:
- template: build/stage-release-appcenter.yml
container: unoplatform/wasm-build:2.2
- stage: Release_TestFlight
# Only release when the build is not a Pull Request and it's using one of the proper release branches
condition: and(succeeded(), ne(variables['IsLightBuild'], 'true'), eq(variables['IsReleaseBranch'], 'true'))
dependsOn: Build
variables:
ArtifactName: WASM
SkipUnknownFrameworks: True
jobs:
- template: build/stage-release-testflight.yml
- stage: Release_WASM
# Only release when the build is not a Pull Request and it's using one of the proper release branches
condition: and(succeeded(), ne(variables['IsLightBuild'], 'true'), eq(variables['IsReleaseBranch'], 'true'))
dependsOn: Build
jobs:
- template: build/stage-release-wasm.yml
steps:
- template: build/stage-build-wasm.yml

Просмотреть файл

@ -10,26 +10,21 @@
- task: UseGitVersion@5
inputs:
versionSpec: '5.x'
useConfigFile: true
configFilePath: 'build/gitversion.yml'
updateAssemblyInfo: 'False'
- task: Bash@3
inputs:
targetType: inline
script: |
source ~/emsdk/emsdk_env.sh
msbuild /r /p:Configuration=Release /p:ApplicationVersion=$(USEGITVERSION.GITVERSION.MAJORMINORPATCH) $(build.sourcesdirectory)/src/samples/Uno.Material.Samples/Uno.Material.Samples.Wasm/Uno.Material.Samples.Wasm.csproj
- bash: |
source ~/emsdk/emsdk_env.sh
msbuild /r /p:Configuration=Release /p:ApplicationVersion=$(USEGITVERSION.GITVERSION.MAJORMINORPATCH) src/samples/Uno.Material.Samples/Uno.Material.Samples.Wasm/Uno.Material.Samples.Wasm.csproj
- task: CopyFiles@2
displayName: 'Copy version information'
inputs:
Contents: $(build.sourcesdirectory)/src/samples/Uno.Material.Samples/Uno.Material.Samples.Wasm/Version.txt
Contents: src/samples/Uno.Material.Samples/Uno.Material.Samples.Wasm/Version.txt
TargetFolder: $(build.artifactstagingdirectory)
flattenFolders: true
- task: PublishBuildArtifacts@1
# https://developercommunity.visualstudio.com/content/problem/284991/public-vsts-previouw-cant-set-build-number-of-pr-b.html
condition: eq(variables['System.PullRequest.IsFork'], 'False')
inputs:
PathtoPublish: $(build.artifactstagingdirectory)
ArtifactName: $(ArtifactName)
ArtifactType: Container

Просмотреть файл

@ -8,32 +8,26 @@
inputs:
useConfigFile: true
configFilePath: 'build/gitversion.yml'
displayName: 'Calculate version'
- task: NuGetToolInstaller@0
displayName: 'Install NuGet $(NUGET_VERSION)'
inputs:
versionSpec: $(NUGET_VERSION)
checkLatest: false
displayName: 'Calculate SemVer'
- task: NuGetCommand@2
displayName: 'Restore solution packages'
displayName: 'Restore NuGet packages'
inputs:
command: restore
solution: $(Build.SourcesDirectory)/$(SolutionFileName)
solution: Uno.Material.sln
feedsToUse: 'config'
nugetConfigPath: 'nuget.config'
verbosityRestore: Normal
noCache: true
- task: MSBuild@1
displayName: 'Build solution in $(ApplicationConfiguration) | $(ApplicationPlatform)'
displayName: 'Build solution in Release | $(ApplicationPlatform)'
inputs:
solution: $(Build.SourcesDirectory)/$(SolutionFileName)
solution: Uno.Material.sln
msbuildLocationMethod: version
msbuildVersion: latest
msbuildArchitecture: x86
configuration: $(ApplicationConfiguration)
configuration: Release
platform: $(ApplicationPlatform)
clean: false
maximumCpuCount: true
@ -43,9 +37,6 @@
msbuildArguments: /p:PackageVersion=$(SemVer) /p:ApplicationVersion=$(MajorMinorPatch)
- task: PublishBuildArtifacts@1
displayName: 'Publish artifact $(ApplicationConfiguration) | $(ApplicationPlatform)'
displayName: 'Publish artifact'
inputs:
PathtoPublish: $(PackageOutputPath)
ArtifactName: $(ArtifactName)
ArtifactType: Container

Просмотреть файл

@ -1,104 +0,0 @@
jobs:
- job: Publish_AppCenter_UWA
pool: $(windowsPoolName)
container: nventive/build-agent:vs16.6.0
steps:
- checkout: none
- task: DownloadBuildArtifacts@0
inputs:
buildType: current
downloadType: single
artifactName: $(UWPArtifactName)
- task: AppCenterDistribute@3
displayName: Deploy UWP to AppCenter
inputs:
serverEndpoint: AppCenter
appSlug: 'nventive/Uno-Material-UWP'
appFile: $(System.ArtifactsDirectory)/$(UWPArtifactName)/*.msixbundle
releaseNotesInput: |
Uno Material
isSilent: true
- job: Publish_AppCenter_iOS
pool:
name: $(macOSPoolName)
demands:
- fastlane
variables:
- group: apple.appstore.distribution # Import all variables for certificate from the library in azure devops
steps:
- checkout: none
- task: DownloadBuildArtifacts@0
inputs:
buildType: current
downloadType: single
artifactName: $(iOSArtifactName)
- task: InstallAppleCertificate@2
displayName: Install Apple Certificate
name: Certificate
inputs:
certSecureFile: 'apple.appstore.distribution.p12' # Name of the p12 certificate in the secure files (in azure devops pipeline)
certPwd: '$(appleappstorecertificatepassword)'
keychain: 'temp'
deleteCert: true
- task: InstallAppleProvisioningProfile@1
displayName: 'Install Apple Provisioning Profile'
name: Profile
inputs:
provisioningProfileLocation: 'secureFiles'
provProfileSecureFile: 'UnoMaterial__Ad_Hoc.mobileprovision' # Name of the .mobileprovision file in the secure files.
- task: IpaResign@1
displayName: 'Resign IPA with latest certificates'
inputs:
ipaPath: '$(System.ArtifactsDirectory)/$(iOSArtifactName)/*.ipa'
signMethod: id
signIdIdentity: '$(Certificate.signingIdentity)'
provisionMethod: id
provIdProfileUuid: '$(Profile.provisioningProfileUuid)'
installFastlane: false
- task: AppCenterDistribute@3
displayName: Deploy iOS to AppCenter
inputs:
serverEndpoint: AppCenter
appSlug: 'nventive/Uno-Material-iOS'
appFile: $(System.ArtifactsDirectory)/$(iOSArtifactName)/*.ipa
symbolsDsymFiles: $(System.ArtifactsDirectory)/$(iOSArtifactName)/*.dSYM
symbolsIncludeParentDirectory: true
releaseNotesInput: |
Uno Material
isSilent: true
- job: Publish_AppCenter_Android
pool: $(windowsPoolName)
container: nventive/build-agent:vs16.6.0
steps:
- checkout: none
- task: DownloadBuildArtifacts@0
inputs:
buildType: current
downloadType: single
artifactName: $(AndroidArtifactName)
- task: AppCenterDistribute@3
displayName: Deploy Android to AppCenter
inputs:
serverEndpoint: AppCenter
appSlug: 'nventive/Uno-Material-Android'
appFile: $(System.ArtifactsDirectory)/$(AndroidArtifactName)/*.material-Signed.apk
releaseNotesInput: |
Uno Material
isSilent: true

Просмотреть файл

@ -1,29 +0,0 @@
jobs:
- job: Publish_NuGet_Internal
pool:
name: $(windowsPoolName)
container: nventive/build-agent:vs16.6.0
steps:
- checkout: none
- task: DownloadBuildArtifacts@0
inputs:
buildType: current
downloadType: single
artifactName: $(NugetPackagesArtifactName)
- task: NuGetToolInstaller@0
displayName: 'Install NuGet $(NUGET_VERSION)'
inputs:
versionSpec: $(NUGET_VERSION)
checkLatest: false
- task: NuGetCommand@2
inputs:
command: 'push'
packagesToPush: '$(Build.ArtifactStagingDirectory)/$(NugetPackagesArtifactName)/*.nupkg'
nuGetFeedType: 'internal'
publishVstsFeed: 'nventive'

Просмотреть файл

@ -1,31 +0,0 @@
jobs:
- job: Publish_TestFlight_iOS
pool:
name: $(macOSPoolName)
demands:
- Xamarin.iOS -equals 13.16
variables:
- group: apple.appstore.distribution # import all variables for certificate from the library in azure devops
steps:
- checkout: none
- task: DownloadBuildArtifacts@0
inputs:
buildType: current
downloadType: single
artifactName: $(iOSArtifactName)
- task: AppStoreRelease@1
displayName: 'Push to TestFlight'
inputs:
serviceEndpoint: 'apple appstore connection'
appIdentifier: 'uno.platform.material'
appType: 'iOS'
ipaPath: '$(PackageOutputPath)/$(iOSArtifactName)/Uno.Material.Samples.ipa'
releaseTrack: 'TestFlight'
shouldSkipWaitingForProcessing: true
teamId: $(appleTeamId)
teamName: $(appleTeamName)

Просмотреть файл

@ -1,20 +0,0 @@
jobs:
- job: Publish_WASM
pool:
vmImage: windows-2019
steps:
- checkout: none
- task: DownloadBuildArtifacts@0
inputs:
buildType: current
downloadType: single
artifactName: $(WASMArtifactName)
- task: nventivecorp.nventive.nventive.websiteVersion.websiteVersion@5
displayName: 'Deploy Uno Material to Azure'
inputs:
WebsitePath: '$(System.ArtifactsDirectory)/$(WASMArtifactName)'
AzureSubscription: 'Uno Platform'
AzureStorageAccount: unomaterial

Просмотреть файл

@ -1,13 +0,0 @@
parameters:
xCodeRoot: ''
XamarinSDKVersion: ''
steps:
- bash: >
/bin/bash -c "sudo $AGENT_HOMEDIRECTORY/scripts/select-xamarin-sdk.sh ${{parameters.XamarinSDKVersion}}"
displayName: Select Xamarin Version
- bash: |
echo 'xCode Root to ${{parameters.xCodeRoot}}'
echo '##vso[task.setvariable variable=MD_APPLE_SDK_ROOT;]'${{parameters.xCodeRoot}}
sudo xcode-select --switch ${{parameters.xCodeRoot}}/Contents/Developer
displayName: Select Xcode