166 lines
5.6 KiB
YAML
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
|