Files
XPlaneConnectCSP/azure-pipelines.yml
2020-06-27 12:39:26 -07:00

166 lines
5.6 KiB
YAML

# Xcode
# Build, test, and archive an Xcode workspace on macOS.
# Add steps that install certificates, test, sign, and distribute an app, save build artifacts, and more:
# https://docs.microsoft.com/azure/devops/pipelines/languages/xcode
trigger:
branches:
include:
# Build all branches starting with 'ms-' This is useful when making and testing chanes made to this file
- ms-*
tags:
include:
- "*"
# pr:
# - '*'
variables:
xpcBuildOutputPath: xpcPlugin/XPlaneConnect/
xpcArtifactNameLinux: xpc-linux
xpcArtifactNameMac: xpc-macos
xpcArtifactNameWindows: xpc-windows
xpcPackageName: XPlaneConnect
# The Github Release tasks requires a GH 'service connection' to be setup in the MS Azure Account
# This connection must be setup in with a GH token in the MS Azure Project Settings
#
# https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/utility/github-release?view=azure-devops
# https://docs.microsoft.com/en-us/azure/devops/pipelines/library/service-endpoints?view=azure-devops&tabs=yaml#sep-github
xpcGitHubConnection: XPC-Azure
stages:
- stage: Build
jobs:
- job: macOS
pool:
vmImage: "macos-latest"
steps:
- task: Xcode@5
inputs:
actions: "build"
scheme: ""
sdk: "macosx10.15"
configuration: "Release"
xcWorkspacePath: "xpcPlugin/xpcPlugin.xcodeproj"
xcodeVersion: "default" # Options: 8, 9, 10, default, specifyPath
- task: PublishPipelineArtifact@0
inputs:
artifactName: "$(xpcArtifactNameMac)"
targetPath: "$(xpcBuildOutputPath)"
- job: Linux
pool:
vmImage: "ubuntu-latest"
steps:
- script: |
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install -y g++-5 mesa-common-dev g++-multilib g++-5-multilib
displayName: "apt install"
- script: |
cd xpcPlugin
cmake .
make
displayName: "make"
- task: PublishPipelineArtifact@0
inputs:
artifactName: "xpc-linux"
targetPath: "$(xpcBuildOutputPath)"
- job: Windows
pool:
vmImage: "vs2017-win2016"
variables:
solution: "xpcPlugin/xpcPlugin/xpcPlugin.sln"
buildPlatform: "Win32|x64"
buildConfiguration: "Release"
appxPackageDir: '$(build.artifactStagingDirectory)\AppxPackages\\'
steps:
- task: NuGetToolInstaller@0
- task: NuGetCommand@2
inputs:
restoreSolution: "$(solution)"
- task: VSBuild@1
inputs:
platform: "Win32"
solution: "$(solution)"
configuration: "$(buildConfiguration)"
msbuildArgs: '/p:AppxBundlePlatforms="$(buildPlatform)" /p:AppxPackageDir="$(appxPackageDir)" /p:AppxBundle=Always /p:UapAppxPackageBuildMode=StoreUpload'
- task: VSBuild@1
inputs:
platform: "x64"
solution: "$(solution)"
configuration: "$(buildConfiguration)"
msbuildArgs: '/p:AppxBundlePlatforms="$(buildPlatform)" /p:AppxPackageDir="$(appxPackageDir)" /p:AppxBundle=Always /p:UapAppxPackageBuildMode=StoreUpload'
- task: Bash@3
inputs:
targetType: "inline"
script: |
rm $(xpcBuildOutputPath)/win.exp
rm $(xpcBuildOutputPath)/win.lib
rm $(xpcBuildOutputPath)/64/win.exp
rm $(xpcBuildOutputPath)/64/win.lib
- task: PublishPipelineArtifact@0
inputs:
artifactName: "$(xpcArtifactNameWindows)"
targetPath: "$(xpcBuildOutputPath)"
- stage: Deploy
jobs:
- job: Package_Binaries
displayName: "Package Binaries"
pool:
vmImage: "ubuntu-latest"
steps:
- task: DownloadPipelineArtifact@0
inputs:
artifactName: "$(xpcArtifactNameMac)"
targetPath: $(System.DefaultWorkingDirectory)/$(xpcPackageName)
- task: DownloadPipelineArtifact@0
inputs:
artifactName: "$(xpcArtifactNameLinux)"
targetPath: $(System.DefaultWorkingDirectory)/$(xpcPackageName)
- task: DownloadPipelineArtifact@0
inputs:
artifactName: "$(xpcArtifactNameWindows)"
targetPath: $(System.DefaultWorkingDirectory)/$(xpcPackageName)
- task: PublishPipelineArtifact@0
inputs:
artifactName: "$(xpcPackageName)"
targetPath: $(System.DefaultWorkingDirectory)/$(xpcPackageName)
# Archive Files
- task: ArchiveFiles@2
inputs:
rootFolderOrFile: "$(System.DefaultWorkingDirectory)/$(xpcPackageName)"
includeRootFolder: true
archiveType: "zip"
archiveFile: "$(Build.ArtifactStagingDirectory)/$(xpcPackageName).zip"
# Uploads the .zip to GitHub and creates a new "Release" with the commit tag
# This tasks runs only on pushed tags
- task: GitHubRelease@0
inputs:
gitHubConnection: "$(xpcGitHubConnection)"
repositoryName: "$(Build.Repository.Name)"
action: "create"
target: "$(Build.SourceVersion)"
tagSource: "auto"
tag: $(tagName)
assets: "$(Build.ArtifactStagingDirectory)/$(xpcPackageName).zip"
isPreRelease: true
isDraft: true