Distribute Apps Separately

[skip ci]
This commit is contained in:
Anja 2022-12-14 08:48:28 +00:00
parent 8b460bfebf
commit d23aff6daf

721
azure-pipelines.yml Normal file
View file

@ -0,0 +1,721 @@
# Processes all apps Lastenrad Bayern, sharee.bike and Mein konrad
# i,e,
# - builds apps
# - publishes apps to MS App Center
parameters:
- name: codeBase
displayName: Codebase
type: string
default: git://sharee.bike Buchungsplattform/Code@main
values:
- git://sharee.bike Buchungsplattform/Code@main
- git://sharee.bike Buchungsplattform/Code@develop
trigger:
- main
- develop
variables:
# General purpose variables.
buildConfiguration: 'Release'
outputDirectory: '$(build.binariesDirectory)/$(buildConfiguration)'
solutionName : 'TINK.sln'
# TeilRad GbmH related variables.
ownerNameTeilRad : 'TeilRad'
keyStoreFile : 'TeilRad.keystore'
ownerTeilRadFullName : '$(ownerNameTeilRad)-GmbH'
# HauffWare related variables.
ownerNameHauffWare : 'HauffWare'
keyStoreFileHauffWare : 'hauffware.keystore'
ownerHauffWareFullName : '$(ownerNameHauffWare)'
# Lastenrad Bayern related variales.
appNameLastenradBayern : 'LastenradBayern'
appProjectDroidLastenradBayern : '$(appNameLastenradBayern).Android.csproj'
appArtefactNameDroidLastenradBayern : 'com.$(ownerNameTeilRad).$(appNameLastenradBayern)-Signed.aab'
msAppCenterAppSlugLastenradBayernDroid : '$(appNameLastenradBayern)-1'
msAppCenterDistributionGroupIdLastenradBayernDroid : '088eb829-9030-424f-917f-3117dfff8a4b'
solutionNameIosLastenradBayern : 'LastenradBayern.sln'
appArtefactNameIosLastenradBayern : '$(appNameLastenradBayern).iOS.ipa'
msAppCenterAppSlugLastenradBayernIos : '$(appNameLastenradBayern)'
msAppCenterDistributionGroupIdLastenradBayernIos : 'b4d4cd32-1a79-40fa-a170-797e9a62a813'
# Sharee.bike related variables.
appNameShareeBike : 'sharee.bike'
appNameShareeBikeLegacy : 'TINK'
appProjectDroidShareeBike : '$(appNameShareeBikeLegacy).Android.csproj'
appArtefactNameDroidShareeBike : 'com.$(ownerNameHauffWare).sharee-Signed.aab'
msAppCenterAppSlugShareeBikeDroid : '$(appNameShareeBike)-1'
msAppCenterDistributionGroupIdShareeBikeDroid : '1f9f7deb-cd88-460a-bd64-29488121bb5f'
solutionNameIosShareeBike : 'ShareeBike.sln'
appArtefactNameIosShareeBike : '$(appNameShareeBikeLegacy).iOS.ipa'
msAppCenterAppSlugShareeBikeIos : '$(appNameShareeBike)'
msAppCenterDistributionGroupIdShareeBikeIos : 'd47dbf12-d7ec-4ef4-85f2-2bd6c249a2d9'
# Mein konrad related variables.
appNameMeinKonrad : 'Meinkonrad'
appProjectDroidMeinKonrad : '$(appNameMeinKonrad).Android.csproj'
appArtefactNameDroidMeinKonrad : 'com.$(ownerNameTeilRad).$(appNameMeinKonrad)-Signed.aab'
msAppCenterAppSlugMeinKonrad : 'Mein-konrad-1'
msAppCenterDistributionGroupIdMeinKonradDroid : 'e048d2f8-5b54-4a65-8c57-dd2df05269eb'
solutionNameIosMeinKonrad : 'MeinKonrad.sln'
appArtefactNameIosMeinKonrad : '$(appNameMeinKonrad).iOS.ipa'
msAppCenterAppSlugMeinKonradIos : 'Mein-konrad'
msAppCenterDistributionGroupIdMeinKonradIos : ' 40cf103b-2d13-477a-a75a-424045dfd00d'
stages:
- stage: RunUnitTestsStage
displayName: "Run unittests"
# Test require widows
pool:
vmImage: 'windows-latest'
jobs:
- job: RunUnittests
displayName: "Run Unit Tests"
steps:
# Get code from internal repo.
# https://docs.microsoft.com/en-us/azure/devops/pipelines/repos/multi-repo-checkout?view=azure-devops#specify-multiple-repositories
- checkout: ${{ parameters.codeBase}}
- task: DotNetCoreCLI@2
displayName: "Build TestLockItShared Unit Tests"
inputs:
command: 'build'
projects: '**/TestLockItShared.csproj'
configuration: '$(buildConfiguration)'
- task: DotNetCoreCLI@2
displayName: "Build TestLockItBLE Unit Tests"
inputs:
command: 'build'
projects: '**/TestLockItBLE.csproj'
configuration: '$(buildConfiguration)'
- task: DotNetCoreCLI@2
displayName: "Build TestShareeLib Unit Tests"
inputs:
command: 'build'
projects: '**/TestShareeLib.csproj'
configuration: '$(buildConfiguration)'
- task: DotNetCoreCLI@2
displayName: "Build TestShareeSharedGuiLib Unit Tests"
inputs:
command: 'build'
projects: '**/TestShareeSharedGuiLib.csproj'
configuration: '$(buildConfiguration)'
- task: DotNetCoreCLI@2
displayName: "Build TestSharee Unit Tests"
inputs:
command: 'build'
projects: '**/TestSharee.csproj'
configuration: '$(buildConfiguration)'
# Infos about test filters see
# https://docs.microsoft.com/en-us/previous-versions/jj155796(v=vs.140)?redirectedfrom=MSDN
- task: VSTest@2
displayName: "Run tests TestLockItShared"
inputs:
failOnMinTestsNotRun: true
minimumExpectedTests: 6
testSelector: 'testAssemblies'
testAssemblyVer2: |
**\TestLockItShared.dll
!**\obj\**
searchFolder: '$(System.DefaultWorkingDirectory)'
testFiltercriteria: 'TestCategory!=Explicit&TestCategory!=RequiresCOPRI&TestCategory!=RequiresCOPRI.Live&TestCategory!=RequiresCOPRI.Devel'
- task: VSTest@2
displayName: "Run tests TestLockItBLE"
inputs:
failOnMinTestsNotRun: true
minimumExpectedTests: 19
testSelector: 'testAssemblies'
testAssemblyVer2: |
**\TestLockItBLE.dll
!**\obj\**
searchFolder: '$(System.DefaultWorkingDirectory)'
testFiltercriteria: 'TestCategory!=Explicit&TestCategory!=RequiresCOPRI&TestCategory!=RequiresCOPRI.Live&TestCategory!=RequiresCOPRI.Devel'
# Infos about test filters see
# https://docs.microsoft.com/en-us/previous-versions/jj155796(v=vs.140)?redirectedfrom=MSDN
- task: VSTest@2
inputs:
testSelector: 'testAssemblies'
testAssemblyVer2: |
**\TestShareeLib.dll
!**\obj\**
searchFolder: '$(System.DefaultWorkingDirectory)'
testFiltercriteria: 'TestCategory!=Explicit&TestCategory!=RequiresCOPRI&TestCategory!=RequiresCOPRI.Live&TestCategory!=RequiresCOPRI.Devel'
- task: VSTest@2
displayName: "Run tests TestShareeSharedGuiLib"
inputs:
failOnMinTestsNotRun: true
minimumExpectedTests: 11
testSelector: 'testAssemblies'
testAssemblyVer2: |
**\TestShareeSharedGuiLib.dll
!**\obj\**
searchFolder: '$(System.DefaultWorkingDirectory)'
testFiltercriteria: 'TestCategory!=Explicit&TestCategory!=RequiresCOPRI&TestCategory!=RequiresCOPRI.Live&TestCategory!=RequiresCOPRI.Devel'
- task: VSTest@2
displayName: "Run tests Sharee"
inputs:
failOnMinTestsNotRun: false # there are not yet tests in project.
minimumExpectedTests: 1
testSelector: 'testAssemblies'
testAssemblyVer2: |
**\TestSharee.dll
!**\obj\**
searchFolder: '$(System.DefaultWorkingDirectory)'
testFiltercriteria: 'TestCategory!=Explicit&TestCategory!=RequiresCOPRI&TestCategory!=RequiresCOPRI.Live&TestCategory!=RequiresCOPRI.Devel'
- stage: BuildAppsDroidStage
displayName: "Build the Droid apps."
dependsOn: RunUnitTestsStage
# Droid versions can be build either on MacOS or Windows
pool:
vmImage: 'windows-latest'
jobs:
- job: BuildAppDroid
displayName: "Build droid version of apps."
steps:
# Get code from internal repo.
# https://docs.microsoft.com/en-us/azure/devops/pipelines/repos/multi-repo-checkout?view=azure-devops#specify-multiple-repositories
- checkout: ${{ parameters.codeBase}}
- task: NuGetToolInstaller@1
- task: NuGetCommand@2
inputs:
restoreSolution: '$(solutionName)'
# Set merchant-id.
- task: PowerShell@2
displayName: "Set secret merchant-id for Lastenrad Bayern."
inputs:
targetType: filePath
filePath: 'Set-MerchantId.ps1'
# Merchant id is defined by COPRI
arguments: "-appName '$(appNameLastenradBayern)' -merchantId $(merchantIdLastenradBayern)"
pwsh: true
workingDirectory: '$(build.SourcesDirectory)'
- task: PowerShell@2
displayName: "Set secret merchant-id for sharee.bike."
inputs:
targetType: filePath
filePath: 'Set-MerchantId.ps1'
# Merchant id is defined by COPRI
arguments: "-appName '$(appNameShareeBikeLegacy)' -merchantId $(merchantIdShareeBike)"
pwsh: true
workingDirectory: '$(build.SourcesDirectory)'
- task: PowerShell@2
displayName: "Set secret merchant-id for Mein konrad."
inputs:
targetType: filePath
filePath: 'Set-MerchantId.ps1'
# Merchant id is defined by COPRI
arguments: "-appName '$(appNameMeinKonrad)' -merchantId $(merchantIdMeinkonrad)"
pwsh: true
workingDirectory: '$(build.SourcesDirectory)'
# Set google maps api key
- task: PowerShell@2
displayName: "Set secret Google Maps api-keys for Lastenrad Bayern."
inputs:
targetType: filePath
filePath: 'Set-GMapsApiKey.ps1'
# Parameter droidApiKey value should be GMapsDroidApiKey2TeilRad not GMapsDroidApiKeyTeilRad but the restricted version of key leads to a grayed google maps
arguments: "-appName '$(appNameLastenradBayern)' -droidApiKey $(GMapsDroidApiKeyTeilRad) -iOsApiKey $(GMapsIosApiKey2TeilRad)"
pwsh: true
workingDirectory: '$(build.SourcesDirectory)'
- task: PowerShell@2
displayName: "Set secret Google Maps api-keys for sharee.bike."
inputs:
targetType: filePath
filePath: 'Set-GMapsApiKey.ps1'
# Parameter droidApiKey value should be GMapsDroidApiKey2TeilRad not GMapsDroidApiKeyTeilRad but the restricted version of key leads to a grayed google maps
arguments: "-appName '$(appNameShareeBikeLegacy)' -droidApiKey $(GMapsDroidApiKeyTeilRad) -iOsApiKey $(GMapsIosApiKey2TeilRad)"
pwsh: true
workingDirectory: '$(build.SourcesDirectory)'
- task: PowerShell@2
displayName: "Set secret Google Maps api-keys for Mein konrad."
inputs:
targetType: filePath
filePath: 'Set-GMapsApiKey.ps1'
# Parameter droidApiKey value should be GMapsDroidApiKey2TeilRad not GMapsDroidApiKeyTeilRad but the restricted version of key leads to a grayed google maps
arguments: "-appName '$(appNameMeinKonrad)' -droidApiKey $(GMapsDroidApiKeyTeilRad) -iOsApiKey $(GMapsIosApiKey2TeilRad)"
pwsh: true
workingDirectory: '$(build.SourcesDirectory)'
# Download keystore file for singning.
- task: DownloadSecureFile@1
displayName: "Download TeilRad GmbH secret keystore file."
name: TeilRadKeystoreFile
inputs:
secureFile: '$(keyStoreFile)'
- task: DownloadSecureFile@1
displayName: "Download HauffWare secret keystore file."
name: HauffWareKeystoreFile
inputs:
secureFile: '$(keyStoreFileHauffWare)'
# Build the apps
- task: XamarinAndroid@1
displayName: "Build Lastenrad Bayern."
inputs:
projectFile: '**/$(appProjectDroidLastenradBayern)'
outputDirectory: '$(outputDirectory)'
configuration: '$(buildConfiguration)'
# Password keystorePasswordTeilRad and alias keystoreNameTeilRad can be found in KeePassXC database PasswörterApp.kdbx, entry with title "Android Keystore TeilRad GmbH (App-Signing)"
msbuildArguments: '-restore -t:SignAndroidPackage -p:AndroidPackageFormat=aab -p:AndroidKeyStore=True -p:AndroidSigningKeyStore=$(TeilRadKeystoreFile.secureFilePath) -p:AndroidSigningStorePass=$(keystorePasswordTeilRad) -p:AndroidSigningKeyAlias=$(keystoreNameTeilRad) -p:AndroidSigningKeyPass=$(keystorePasswordTeilRad)'
- task: XamarinAndroid@1
displayName: "Build sharee.bike."
inputs:
projectFile: '**/$(appProjectDroidShareeBike)'
outputDirectory: '$(outputDirectory)'
configuration: '$(buildConfiguration)'
# Password keystorePasswordHauffWare and alias keystoreNameHauffWare can be found in KeePassXC database PasswörterApp.kdbx, entry with title "Android Keystore HauffWare (App-Signing)"
msbuildArguments: '-restore -t:SignAndroidPackage -p:AndroidPackageFormat=aab -p:AndroidKeyStore=True -p:AndroidSigningKeyStore=$(HauffWareKeystoreFile.secureFilePath) -p:AndroidSigningStorePass=$(keystorePasswordHauffWare) -p:AndroidSigningKeyAlias=$(keystoreNameHauffWare) -p:AndroidSigningKeyPass=$(keystorePasswordHauffWare)'
- task: XamarinAndroid@1
displayName: "Build Mein konrad."
inputs:
projectFile: '**/$(appProjectDroidMeinKonrad)'
outputDirectory: '$(outputDirectory)'
configuration: '$(buildConfiguration)'
# Password keystorePasswordTeilRad and alias keystoreNameTeilRad can be found in KeePassXC database PasswörterApp.kdbx, entry with title "Android Keystore TeilRad GmbH (App-Signing)"
msbuildArguments: '-restore -t:SignAndroidPackage -p:AndroidPackageFormat=aab -p:AndroidKeyStore=True -p:AndroidSigningKeyStore=$(TeilRadKeystoreFile.secureFilePath) -p:AndroidSigningStorePass=$(keystorePasswordTeilRad) -p:AndroidSigningKeyAlias=$(keystoreNameTeilRad) -p:AndroidSigningKeyPass=$(keystorePasswordTeilRad)'
# Publish siged apk as pipeline artifact
- task: PublishPipelineArtifact@1
displayName: "Publish Lastenrad Bayern aab as artifact to azure library."
inputs:
targetPath: '$(outputDirectory)/$(appArtefactNameDroidLastenradBayern)'
artifactName: LastenradBayernAndroidAab
# Publish siged apk as pipeline artifact
- task: PublishPipelineArtifact@1
displayName: "Publish sharee.bike aab as artifact to azure library."
inputs:
targetPath: '$(outputDirectory)/$(appArtefactNameDroidShareeBike)'
artifactName: ShareeBikeAndroidAab
# Publish siged apk as pipeline artifact
- task: PublishPipelineArtifact@1
displayName: "Publish Mein konrad aab as artifact to azure library."
inputs:
targetPath: '$(outputDirectory)/$(appArtefactNameDroidMeinKonrad)'
artifactName: MeinKonradAndroidAab
- stage: BuildLastenradBayernIosStage
displayName: "Build Lastenrad Bayern iOS."
dependsOn: RunUnitTestsStage
# Build iOS version requires MacOS
pool:
vmImage: 'macos-12'
jobs:
- job: BuildLastenradBayernIos
displayName: "Build Lastenrad Bayern iOs"
steps:
# To manually select a Xamarin SDK version on the Microsoft-hosted macOS agent,
# configure this task with the *Mono* version that is associated with the
# Xamarin SDK version that you need, and set the "enabled" property to true.
# See https://go.microsoft.com/fwlink/?linkid=871629
- script: sudo $AGENT_HOMEDIRECTORY/scripts/select-xamarin-sdk.sh 5_12_0
displayName: 'Select the Xamarin SDK version'
enabled: false
# Get code from Open Source repo.
# https://docs.microsoft.com/en-us/azure/devops/pipelines/repos/multi-repo-checkout?view=azure-devops#specify-multiple-repositories
- checkout: ${{ parameters.codeBase}}
- task: NuGetToolInstaller@1
- task: NuGetCommand@2
inputs:
restoreSolution: '**/$(solutionNameIosLastenradBayern)'
# Install signing certificate to keychain
# Certificate resides in "Code Signing Certificate for Distribution TeilRad GmbH (LXJD6URCHR)"
- task: InstallAppleCertificate@2
inputs:
certSecureFile: 'AppleDistributionCertificate_TeilRadGmbH_LXJD6URCHR_20221008.p12'
certPwd: '$(AppleDistributionCertificate_TeilRadGmbh_Password)'
keychain: 'temp'
# Install provisioning profile
- task: InstallAppleProvisioningProfile@1
inputs:
provisioningProfileLocation: 'secureFiles'
provProfileSecureFile: 'ProvisioningProfileLastenradBayernAppStore3.mobileprovision'
# Set merchant-id.
- task: PowerShell@2
displayName: "Set secret merchant-id."
inputs:
targetType: filePath
filePath: 'Set-MerchantId.ps1'
# Merchant id is defined by COPRI
arguments: "-appName '$(appNameLastenradBayern)' -merchantId $(merchantIdLastenradBayern)"
pwsh: true
workingDirectory: '$(build.SourcesDirectory)'
# Set google maps api key
- task: PowerShell@2
displayName: "Set secret Google Maps api-keys."
inputs:
targetType: filePath
filePath: 'Set-GMapsApiKey.ps1'
arguments: "-appName '$(appNameLastenradBayern)' -droidApiKey $(GMapsDroidApiKeyTeilRad) -iOsApiKey $(GMapsIosApiKey2TeilRad)"
pwsh: true
workingDirectory: '$(build.SourcesDirectory)'
# Build the app
- task: XamariniOS@2
inputs:
solutionFile: '**/$(solutionNameIosLastenradBayern)'
configuration: '$(buildConfiguration)'
packageApp: true
buildForSimulator: false
runNugetRestore: false
signingIdentity: '$(APPLE_CERTIFICATE_SIGNING_IDENTITY)'
signingProvisioningProfileID: '$(APPLE_PROV_PROFILE_UUID)'
# Publish siged apk as pipeline artifact
- task: PublishPipelineArtifact@1
displayName: "Publish ipa as artifact."
inputs:
targetPath: '$(appNameLastenradBayern)/TINK.iOS/bin/iPhone/$(buildConfiguration)/$(appArtefactNameIosLastenradBayern)'
artifactName: LastenradBayernIpa
- stage: BuildShareeBikeIosStage
displayName: "Build sharee.bike iOS app"
dependsOn: RunUnitTestsStage
# Build iOS version requires MacOS
pool:
vmImage: 'macos-12'
jobs:
- job: BuildShareeBikeIos
displayName: "Build sharee.bike iOs"
steps:
# To manually select a Xamarin SDK version on the Microsoft-hosted macOS agent,
# configure this task with the *Mono* version that is associated with the
# Xamarin SDK version that you need, and set the "enabled" property to true.
# See https://go.microsoft.com/fwlink/?linkid=871629
- script: sudo $AGENT_HOMEDIRECTORY/scripts/select-xamarin-sdk.sh 5_12_0
displayName: 'Select the Xamarin SDK version'
enabled: false
# Get code from Open Source repo.
# https://docs.microsoft.com/en-us/azure/devops/pipelines/repos/multi-repo-checkout?view=azure-devops#specify-multiple-repositories
- checkout: ${{ parameters.codeBase}}
- task: NuGetToolInstaller@1
- task: NuGetCommand@2
inputs:
restoreSolution: '**/$(solutionNameIosShareeBike)'
# Install signing certificate to keychain
# Certificate resides in "App-Mittagessen", entry "Code Signing Certificate for Distribution TeilRad GmbH (LXJD6URCHR)"
- task: InstallAppleCertificate@2
inputs:
certSecureFile: 'AppleDistributionCertificate_TeilRadGmbH_LXJD6URCHR_20221008.p12'
certPwd: '$(AppleDistributionCertificate_TeilRadGmbh_Password)'
keychain: 'temp'
# Install provisioning profile
- task: InstallAppleProvisioningProfile@1
inputs:
provisioningProfileLocation: 'secureFiles'
provProfileSecureFile: 'ProvisioningProfileTeilRadShareeBikeAppStore3.mobileprovision'
# Set merchant-id.
- task: PowerShell@2
displayName: "Set secret merchant-id."
inputs:
targetType: filePath
filePath: 'Set-MerchantId.ps1'
# Merchant id is defined by COPRI
arguments: "-appName '$(appNameShareeBikeLegacy)' -merchantId $(merchantIdShareeBike)"
pwsh: true
workingDirectory: '$(build.SourcesDirectory)'
# Set google maps api key
- task: PowerShell@2
displayName: "Set secret Google Maps api-keys."
inputs:
targetType: filePath
filePath: 'Set-GMapsApiKey.ps1'
arguments: "-appName '$(appNameShareeBikeLegacy)' -droidApiKey $(GMapsDroidApiKeyTeilRad) -iOsApiKey $(GMapsIosApiKey2TeilRad)"
pwsh: true
workingDirectory: '$(build.SourcesDirectory)'
# Build the app
- task: XamariniOS@2
inputs:
solutionFile: '**/$(solutionNameIosShareeBike)'
configuration: '$(buildConfiguration)'
packageApp: true
buildForSimulator: false
runNugetRestore: false
signingIdentity: '$(APPLE_CERTIFICATE_SIGNING_IDENTITY)'
signingProvisioningProfileID: '$(APPLE_PROV_PROFILE_UUID)'
# Publish siged apk as pipeline artifact
- task: PublishPipelineArtifact@1
displayName: "Publish sharee.bike ipa as artifact."
inputs:
targetPath: '$(appNameShareeBikeLegacy)/TINK.iOS/bin/iPhone/$(buildConfiguration)/$(appArtefactNameIosShareeBike)'
artifactName: ShareeBikeIpa
- stage: BuildMeinKonradIosStage
displayName: "Build Mein konrad iOS app"
dependsOn: RunUnitTestsStage
# Build iOS version requires MacOS
pool:
vmImage: 'macos-12'
jobs:
- job: appNameMeinKonradBuildMeinKonradIos
displayName: "Build Mein konrad iOs"
steps:
# To manually select a Xamarin SDK version on the Microsoft-hosted macOS agent,
# configure this task with the *Mono* version that is associated with the
# Xamarin SDK version that you need, and set the "enabled" property to true.
# See https://go.microsoft.com/fwlink/?linkid=871629
- script: sudo $AGENT_HOMEDIRECTORY/scripts/select-xamarin-sdk.sh 5_12_0
displayName: 'Select the Xamarin SDK version'
enabled: false
# Get code from Open Source repo.
# https://docs.microsoft.com/en-us/azure/devops/pipelines/repos/multi-repo-checkout?view=azure-devops#specify-multiple-repositories
- checkout: ${{ parameters.codeBase}}
- task: NuGetToolInstaller@1
- task: NuGetCommand@2
inputs:
restoreSolution: '**/$(solutionNameIosMeinKonrad)'
# Install signing certificate to keychain
# Certificate resides in "App-Mittagessen", entry "Code Signing Certificate for iPhone Distribution Stadtwerke Konstanz GmbH (2SZR625MSV)"
- task: InstallAppleCertificate@2
inputs:
certSecureFile: 'Code Signing Certificate for iPhone Distribution Stadtwerke Konstanz GmbH 2SZR625MSV.p12'
certPwd: '$(AppleDevelopmentCertificatePassword)'
keychain: 'temp'
# Install provisioning profile
- task: InstallAppleProvisioningProfile@1
inputs:
provisioningProfileLocation: 'secureFiles'
provProfileSecureFile: 'Meinkonrad_to_App_Store_3.mobileprovision'
# Set merchant-id.
- task: PowerShell@2
displayName: "Set secret merchant-id."
inputs:
targetType: filePath
filePath: 'Set-MerchantId.ps1'
# Merchant id is defined by COPRI
arguments: "-appName '$(appNameMeinKonrad)' -merchantId $(merchantIdMeinKonrad)"
pwsh: true
workingDirectory: '$(build.SourcesDirectory)'
# Set google maps api key
- task: PowerShell@2
displayName: "Set secret Google Maps api-keys."
inputs:
targetType: filePath
filePath: 'Set-GMapsApiKey.ps1'
arguments: "-appName '$(appNameMeinKonrad)' -droidApiKey $(GMapsDroidApiKeyTeilRad) -iOsApiKey $(GMapsIosApiKey2TeilRad)"
pwsh: true
workingDirectory: '$(build.SourcesDirectory)'
# Build the app
- task: XamariniOS@2
inputs:
solutionFile: '**/$(solutionNameIosMeinKonrad)'
configuration: '$(buildConfiguration)'
packageApp: true
buildForSimulator: false
runNugetRestore: false
signingIdentity: '$(APPLE_CERTIFICATE_SIGNING_IDENTITY)'
signingProvisioningProfileID: '$(APPLE_PROV_PROFILE_UUID)'
# Publish siged apk as pipeline artifact
- task: PublishPipelineArtifact@1
displayName: "Publish Mein Konrad ipa as artifact to azure library."
inputs:
# Path '$(outputDirectory)/$(appArtefactNameIosMeinKonrad)' is not valid
targetPath: '$(appNameMeinKonrad)/TINK.iOS/bin/iPhone/$(buildConfiguration)/$(appArtefactNameIosMeinKonrad)'
artifactName: MeinKonradIpa
- stage: BetaVersion
# Distribute only of all app could be build successfully.
dependsOn:
- BuildAppsDroidStage
- BuildLastenradBayernIosStage
- BuildShareeBikeIosStage
- BuildMeinKonradIosStage
displayName: "Publish all apps to MS App Center"
# Distribution to MS App center can be on MacOS or Windows.
pool:
vmImage: 'windows-latest'
jobs:
- job: AndroidBeta
displayName: "Publish all apps to MS App Center"
steps:
# Download apk from pipeline artifacs
- task: DownloadPipelineArtifact@2
displayName: "Download Lastenrad Bayern Droid artifact form azure library."
inputs:
artifact: LastenradBayernAndroidAab
- task: DownloadPipelineArtifact@2
displayName: "Download Lastenrad Bayern iOS artifact form azure library."
inputs:
artifact: LastenradBayernIpa
- task: DownloadPipelineArtifact@2
displayName: "Download sharee.bike Droid artifact form azure library."
inputs:
artifact: ShareeBikeAndroidAab
- task: DownloadPipelineArtifact@2
displayName: "Download sharee.bike iOS artifact form azure library."
inputs:
artifact: ShareeBikeIpa
- task: DownloadPipelineArtifact@2
displayName: "Download Mein konrad Droid artifact form azure library."
inputs:
artifact: MeinKonradAndroidAab
- task: DownloadPipelineArtifact@2
displayName: "Download Mein konrad iOS artifact form azure library."
inputs:
artifact: MeinKonradIpa
# Checkout release notes: They are required for publishing to app center.
- checkout: ${{ parameters.codeBase}}
# Publish singed apk to app center.
- task: AppCenterDistribute@3
displayName: "Publish Lastenrad Bayern Droid to MS App Center."
inputs:
serverEndpoint: 'App Center'
appSlug: '$(ownerTeilRadFullName)/$(msAppCenterAppSlugLastenradBayernDroid)'
appFile: '$(Pipeline.Workspace)/$(appArtefactNameDroidLastenradBayern)'
releaseNotesOption: 'file'
releaseNotesFile: 'ReleaseNotes.txt'
destinationType: 'groups'
distributionGroupId: '$(msAppCenterDistributionGroupIdLastenradBayernDroid)'
- task: AppCenterDistribute@3
displayName: "Publish Lastenrad Bayern iOS to MS App Center."
inputs:
serverEndpoint: 'App Center'
appSlug: '$(ownerTeilRadFullName)/$(msAppCenterAppSlugLastenradBayernIos)'
appFile: '$(Pipeline.Workspace)/$(appArtefactNameIosLastenradBayern)'
releaseNotesOption: 'file'
releaseNotesFile: 'ReleaseNotes.txt'
destinationType: 'groups'
distributionGroupId: '$(msAppCenterDistributionGroupIdLastenradBayernIos)'
- task: PublishPipelineArtifact@1
inputs:
targetPath: '$(appNameLastenradBayern)/TINK.iOS/Entitlements.plist'
artifactName: EntitlementsLastenradBayern
- task: AppCenterDistribute@3
displayName: "Publish sharee.bike Droid to MS App Center."
inputs:
serverEndpoint: 'App Center'
appSlug: '$(ownerHauffWareFullName)/$(msAppCenterAppSlugShareeBikeDroid)'
appFile: '$(Pipeline.Workspace)/$(appArtefactNameDroidShareeBike)'
releaseNotesOption: 'file'
releaseNotesFile: 'ReleaseNotes.txt'
destinationType: 'groups'
distributionGroupId: '$(msAppCenterDistributionGroupIdShareeBikeDroid)'
- task: AppCenterDistribute@3
displayName: "Publish sharee.bike iOS to MS App Center."
inputs:
serverEndpoint: 'App Center'
appSlug: '$(ownerTeilRadFullName)/$(msAppCenterAppSlugShareeBikeIos)'
appFile: '$(Pipeline.Workspace)/$(appArtefactNameIosShareeBike)'
releaseNotesOption: 'file'
releaseNotesFile: 'ReleaseNotes.txt'
destinationType: 'groups'
distributionGroupId: '$(msAppCenterDistributionGroupIdShareeBikeIos)'
- task: PublishPipelineArtifact@1
inputs:
targetPath: '$(appNameShareeBikeLegacy)/TINK.iOS/Entitlements.plist'
artifactName: EntitlementsShareeBike
- task: AppCenterDistribute@3
displayName: "Publish Mein konrad Droid to MS App Center."
inputs:
serverEndpoint: 'App Center'
appSlug: '$(ownerTeilRadFullName)/$(msAppCenterAppSlugMeinKonrad)'
appFile: '$(Pipeline.Workspace)/$(appArtefactNameDroidMeinKonrad)'
releaseNotesOption: 'file'
releaseNotesFile: 'ReleaseNotes.txt'
destinationType: 'groups'
distributionGroupId: '$(msAppCenterDistributionGroupIdMeinKonradDroid)'
- task: AppCenterDistribute@3
displayName: "Publish Mein konrad iOS to MS App Center."
inputs:
serverEndpoint: 'App Center'
appSlug: '$(ownerTeilRadFullName)/$(msAppCenterAppSlugMeinKonradIos)'
appFile: '$(Pipeline.Workspace)/$(appArtefactNameIosMeinKonrad)'
releaseNotesOption: 'file'
releaseNotesFile: 'ReleaseNotes.txt'
destinationType: 'groups'
distributionGroupId: '$(msAppCenterDistributionGroupIdMeinKonradIos)'
- task: PublishPipelineArtifact@1
inputs:
targetPath: '$(appNameMeinKonrad)/TINK.iOS/Entitlements.plist'
artifactName: EntitlementsMeinKonrad