betaflight-configurator/azure-pipelines.yml

116 lines
3.9 KiB
YAML
Raw Normal View History

2019-04-19 07:54:59 +00:00
# Builds Betaflight Configurator on Windows, Linux and OSX platforms.
#
# After building, artifacts are released to a seperate repository.
#
2019-10-28 11:54:48 +00:00
# Azure Pipelines requires the following extensions to be installed:
# - GitHub Tool: https://marketplace.visualstudio.com/items?itemName=marcelo-formentao.github-tools
2019-04-19 07:54:59 +00:00
#
2019-10-28 11:54:48 +00:00
# You'll also need to setup the follwing pipeline variables:
# "releaseNotes" - This is used to add the release notes in the windows job in the build stage so they can be published as part of the github release in the release stage
# "endpoint" - The name of the github endpoint link setup in AzDo - setup when linking AzDo and GitHub
# "owner" - The owner of the repository to release to e.g. betaflight
# "repoName" - The name of the repository to release to e.g. betaflight-configurator-nightly
2019-04-19 07:54:59 +00:00
trigger:
2019-10-01 11:04:01 +00:00
- master
stages:
- stage: Build
jobs:
- job: 'Windows'
pool:
vmImage: 'vs2017-win2016'
steps:
- task: UseNode@1
inputs:
version: '10.16.3'
displayName: 'Install Node.js 10.16.3'
- script: yarn install
displayName: 'Run yarn install'
2019-10-25 10:51:57 +00:00
- script: yarn gulp release --win32 --win64
2019-10-28 11:54:48 +00:00
displayName: 'Run gulp release'
2019-10-01 11:04:01 +00:00
- powershell: Set-Content -Path '$(System.DefaultWorkingDirectory)/release/log.txt' -Value $env:BUILD_SOURCEVERSIONMESSAGE
- task: PublishPipelineArtifact@1
displayName: 'Publish Windows release'
inputs:
targetPath: '$(System.DefaultWorkingDirectory)/release'
artifact: 'betaflight-configurator-windows'
- job: 'MacOS'
pool:
vmImage: 'macos-10.13'
steps:
- task: UseNode@1
inputs:
version: '10.16.3'
displayName: 'Install Node.js 10.16.3'
- script: npm install -g gulp
displayName: 'Install Gulp'
- script: yarn install
displayName: 'Run yarn install'
2019-10-25 10:51:57 +00:00
- script: yarn gulp release --osx64
2019-10-28 11:54:48 +00:00
displayName: 'Run gulp release'
2019-10-01 11:04:01 +00:00
- task: PublishPipelineArtifact@1
displayName: 'Publish MacOS release'
inputs:
artifactName: betaflight-configurator-macos
targetPath: '$(System.DefaultWorkingDirectory)/release'
- job: 'Linux'
pool:
vmImage: 'ubuntu-16.04'
steps:
- task: UseNode@1
inputs:
version: '10.16.3'
displayName: 'Install Node.js 10.16.3'
- script: yarn install
displayName: 'Run yarn install'
2019-10-25 10:51:57 +00:00
- script: yarn gulp release --linux32 --linux64
2019-10-28 11:54:48 +00:00
displayName: 'Run gulp release'
2019-10-01 11:04:01 +00:00
- script: cd $(System.DefaultWorkingDirectory)/release; find -mindepth 1 -maxdepth 1 -type d -exec rm -r {} \;
displayName: 'Clean release folders'
- task: PublishPipelineArtifact@1
displayName: 'Publish Linux release'
inputs:
artifactName: betaflight-configurator-linux
targetPath: '$(System.DefaultWorkingDirectory)/release'
- stage: Release
jobs:
- job: Release
steps:
- task: DownloadPipelineArtifact@2
inputs:
buildType: 'current'
targetPath: '$(Pipeline.Workspace)'
2019-10-28 11:54:48 +00:00
- powershell: Write-Output ("##vso[task.setvariable variable=releaseNotes;]$(gc $(Pipeline.Workspace)/betaflight-configurator-windows/log.txt)")
2019-10-01 11:04:01 +00:00
2019-10-28 11:54:48 +00:00
- task: GitHubReleasePublish@1
2019-10-01 11:04:01 +00:00
inputs:
2019-10-28 11:54:48 +00:00
githubEndpoint: '$(endpoint)'
manuallySetRepository: true
githubOwner: '$(owner)'
githubRepositoryName: '$(repoName)'
githubReleaseNotes: '$(releaseNotes)'
githubReleaseDraft: false
githubReleasePrerelease: false
githubIgnoreAssets: false
githubReleaseAsset: |
2019-10-01 11:04:01 +00:00
$(Pipeline.Workspace)/betaflight-configurator-windows/**
$(Pipeline.Workspace)/betaflight-configurator-macos/**
$(Pipeline.Workspace)/betaflight-configurator-linux/**
2019-10-28 11:54:48 +00:00
githubReuseRelease: true
githubReuseDraftOnly: true
githubSkipDuplicatedAssets: false
githubEditRelease: false
githubDeleteEmptyTag: false