parameters: - name: DeploymentType displayName: Type of Deployment Stage type: string values: - Beta - Production - name: DependsOn displayName: Depends On type: string - name: ApplicationName type: string - name: PublishFolder type: string - name: RepositoryFolder type: string stages: - stage: deploy${{parameters.DeploymentType}} displayName: ${{parameters.DeploymentType}} lockBehavior: runLatest condition: and(succeeded(), eq(variables['build.sourceBranch'], 'refs/heads/source')) dependsOn: - build - ${{ if ne(parameters.DependsOn, 'build') }}: - deploy${{parameters.DependsOn}} jobs: - deployment: deploy${{parameters.DeploymentType}} displayName: Deploy ${{parameters.DeploymentType}} environment: github-servermanager-${{ lower(parameters.DeploymentType) }} workspace: clean: all strategy: runOnce: deploy: steps: - task: PowerShell@2 displayName: Output Deployment Parameters condition: contains(variables['system.debug'], 'true') inputs: targetType: inline script: | Write-Host "DeploymentType: ${{parameters.DeploymentType}}" Write-Host "DependsOn: ${{parameters.DependsOn}}" Write-Host "ApplicationName: ${{parameters.ApplicationName}}" Write-Host "PublishFolder: ${{parameters.PublishFolder}}" Write-Host "RepositoryFolder: ${{parameters.RepositoryFolder}}" pwsh: true - template: output-environment-variables.yml@self - checkout: MasterRepo - task: PowerShell@2 displayName: Copy ${{parameters.DeploymentType}} Files env: DEPLOY_BUILDNUMBER: $(Build.BuildNumber) DEPLOY_PUBLISHDIRECTORY: "$(Agent.BuildDirectory)/${{parameters.PublishFolder}}" DEPLOY_REPODIRECTORY: "$(Build.SourcesDirectory)/${{parameters.RepositoryFolder}}" inputs: targetType: inline script: | $appVersion = $env:DEPLOY_BUILDNUMBER $appVersionShort = $appVersion.Substring(0, $appVersion.LastIndexOf('.')) # copy common files Copy-Item -Path "$env:DEPLOY_PUBLISHDIRECTORY\en-US.xaml" -Destination "$env:DEPLOY_REPODIRECTORY" -Force Copy-Item -Path "$env:DEPLOY_PUBLISHDIRECTORY\latest.zip" -Destination "$env:DEPLOY_REPODIRECTORY" -Force # copy beta specific files if ('${{parameters.DeploymentType}}' -eq 'Beta') { Copy-Item -Path "$env:DEPLOY_PUBLISHDIRECTORY\latestBeta.txt" -Destination "$env:DEPLOY_REPODIRECTORY\latest.txt" -Force Copy-Item -Path "$env:DEPLOY_PUBLISHDIRECTORY\VersionFeedBeta.xml" -Destination "$env:DEPLOY_REPODIRECTORY\VersionFeed.xml" -Force } # copy production specific files if ('${{parameters.DeploymentType}}' -eq 'Production') { $applicationFilenamePrefix = "${{parameters.ApplicationName}}_$appVersionShort" Copy-Item -Path "$env:DEPLOY_PUBLISHDIRECTORY\$applicationFilenamePrefix.exe" -Destination "$env:DEPLOY_REPODIRECTORY" -Force Copy-Item -Path "$env:DEPLOY_PUBLISHDIRECTORY\$applicationFilenamePrefix.zip" -Destination "$env:DEPLOY_REPODIRECTORY" -Force Copy-Item -Path "$env:DEPLOY_PUBLISHDIRECTORY\latest.exe" -Destination "$env:DEPLOY_REPODIRECTORY" -Force Copy-Item -Path "$env:DEPLOY_PUBLISHDIRECTORY\latest.txt" -Destination "$env:DEPLOY_REPODIRECTORY" -Force Copy-Item -Path "$env:DEPLOY_PUBLISHDIRECTORY\VersionFeed.xml" -Destination "$env:DEPLOY_REPODIRECTORY" -Force } pwsh: true - task: PowerShell@2 displayName: Commit ${{parameters.DeploymentType}} Files (TODO) enabled: false env: DEPLOY_SOURCESDIRECTORY: $(Build.SourcesDirectory) inputs: targetType: inline script: | Write-Host "Committing ${{parameters.DeploymentType}} Files" pwsh: true - task: PowerShell@2 displayName: Update Pipeline Version Variables (TODO) enabled: false env: SYSTEM_ACCESSTOKEN: $(System.AccessToken) inputs: targetType: inline script: | if ('${{parameters.DeploymentType}}' -eq 'Beta') { Write-Host "Updating beta pipeline variables" } if ('${{parameters.DeploymentType}}' -eq 'Production') { Write-Host "Updating production pipeline variables" } pwsh: true - template: azure-pipelines-clean-agent.yml@self parameters: CleanArtifactsFolder: false CleanBinariesFolder: false CleanSourcesFolder: false CleanPublishFolder: false PublishFolder: $(PublishFolder)