|
|
|
@ -2,11 +2,13 @@ trigger:
|
|
|
|
|
branches:
|
|
|
|
|
include: [main, develop, "release-*" ]
|
|
|
|
|
paths:
|
|
|
|
|
exclude: ["*.md", .gitignore]
|
|
|
|
|
exclude: [README.md, LICENSE.md, CHANGELOG.md, version.json, "*.md", .gitignore]
|
|
|
|
|
tags:
|
|
|
|
|
include: ["v*"]
|
|
|
|
|
|
|
|
|
|
# PR always trigger build
|
|
|
|
|
pr:
|
|
|
|
|
autoCancel: true
|
|
|
|
|
|
|
|
|
|
# add nf-tools repo to resources (for Azure Pipelines templates)
|
|
|
|
|
resources:
|
|
|
|
@ -21,19 +23,359 @@ pool:
|
|
|
|
|
|
|
|
|
|
variables:
|
|
|
|
|
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
|
|
|
|
|
solution: '**/*.sln'
|
|
|
|
|
solution: 'nanoFrameworkDeployer.sln'
|
|
|
|
|
buildPlatform: 'Any CPU'
|
|
|
|
|
buildConfiguration: 'Release'
|
|
|
|
|
nugetPackageName: 'nanoFrameworkDeployer'
|
|
|
|
|
repoName: 'nanoFrameworkDeployer'
|
|
|
|
|
|
|
|
|
|
steps:
|
|
|
|
|
|
|
|
|
|
# step from template @ nf-tools repo
|
|
|
|
|
# all build, update and publish steps
|
|
|
|
|
- template: azure-pipelines-templates/class-lib-build.yml@templates
|
|
|
|
|
parameters:
|
|
|
|
|
sonarCloudProject: 'nanoframework_nanoFrameworkDeployer'
|
|
|
|
|
- checkout: self
|
|
|
|
|
|
|
|
|
|
- script: |
|
|
|
|
|
git config --global user.email 'nanoframework@outlook.com'
|
|
|
|
|
git config --global user.name 'nfbot'
|
|
|
|
|
displayName: Setup git identity
|
|
|
|
|
|
|
|
|
|
# get commit message
|
|
|
|
|
- powershell: |
|
|
|
|
|
|
|
|
|
|
# default to false
|
|
|
|
|
$update = $false
|
|
|
|
|
|
|
|
|
|
if($env:System_PullRequest_PullRequestId -ne $null)
|
|
|
|
|
{
|
|
|
|
|
# PR build, nothing interesting in commit message
|
|
|
|
|
Write-Host "Build from PR"
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
# build NOT from PR
|
|
|
|
|
Write-Host "Build NOT from PR, commit ID: $env:Build_SourceVersion"
|
|
|
|
|
|
|
|
|
|
# get PR associate with commit
|
|
|
|
|
$prUrl = "https://api.github.com/repos/$env:Build_Repository_Name/commits/$env:Build_SourceVersion/pulls"
|
|
|
|
|
$commit = Invoke-RestMethod -Uri $prUrl -ContentType "application/json" -Headers @{"Accept"="application/vnd.github.groot-preview+json"} -Method GET
|
|
|
|
|
|
|
|
|
|
if($commit -ne $null)
|
|
|
|
|
{
|
|
|
|
|
# there is a PR, check labels
|
|
|
|
|
$updateDependents = $commit.labels | where {$_.Name -eq 'CI: Update Dependents'}
|
|
|
|
|
if($updateDependents -ne $null)
|
|
|
|
|
{
|
|
|
|
|
$update = $true
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# set variable to foward to jobs
|
|
|
|
|
echo "##vso[task.setvariable variable=RUN_UPDATE_DEPENDENTS]$update"
|
|
|
|
|
displayName: Check PR labels
|
|
|
|
|
|
|
|
|
|
- task: DotNetCoreCLI@2
|
|
|
|
|
condition: or( eq( variables['StartReleaseCandidate'], true ), ne(variables['system.pullrequest.isfork'], true) )
|
|
|
|
|
displayName: Install NBGV tool
|
|
|
|
|
inputs:
|
|
|
|
|
command: custom
|
|
|
|
|
custom: tool
|
|
|
|
|
arguments: install -g nbgv
|
|
|
|
|
|
|
|
|
|
# only required when updating dependents
|
|
|
|
|
- script: nbgv cloud
|
|
|
|
|
condition: eq(variables['UPDATE_DEPENDENTS'], 'true')
|
|
|
|
|
displayName: Set Could Version
|
|
|
|
|
|
|
|
|
|
- powershell: |
|
|
|
|
|
|
|
|
|
|
# compute authorization header in format "AUTHORIZATION: basic 'encoded token'"
|
|
|
|
|
# 'encoded token' is the Base64 of the string "nfbot:personal-token"
|
|
|
|
|
$auth = "basic $([System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes("nfbot:$(GitHubToken)"))))"
|
|
|
|
|
|
|
|
|
|
cd "$env:Agent_TempDirectory" > $null
|
|
|
|
|
|
|
|
|
|
git init "$env:Agent_TempDirectory\repo"
|
|
|
|
|
cd repo > $null
|
|
|
|
|
git remote add origin "$env:Build_Repository_Uri"
|
|
|
|
|
git config --global gc.auto 0
|
|
|
|
|
git config --global user.name nfbot
|
|
|
|
|
git config --global user.email nanoframework@outlook.com
|
|
|
|
|
git config --global core.autocrlf true
|
|
|
|
|
git -c http.extraheader="AUTHORIZATION: $auth" fetch --progress origin
|
|
|
|
|
|
|
|
|
|
git checkout develop
|
|
|
|
|
|
|
|
|
|
nbgv prepare-release
|
|
|
|
|
|
|
|
|
|
# get commit message for the merge
|
|
|
|
|
$commitMessage = git log -1 --pretty=%B
|
|
|
|
|
|
|
|
|
|
# amend commit message to skip build
|
|
|
|
|
git commit --amend -m "$commitMessage" -m "***NO_CI***" > $null
|
|
|
|
|
|
|
|
|
|
# push all changes to github
|
|
|
|
|
git -c http.extraheader="AUTHORIZATION: $auth" push --all origin
|
|
|
|
|
|
|
|
|
|
condition: eq( variables['StartReleaseCandidate'], true )
|
|
|
|
|
displayName: NBGV prepare release
|
|
|
|
|
|
|
|
|
|
- task: SonarCloudPrepare@1
|
|
|
|
|
condition: and( ne( variables['StartReleaseCandidate'], true ), ne(variables['UPDATE_DEPENDENTS'], 'true'))
|
|
|
|
|
displayName: 'Prepare analysis on SonarCloud'
|
|
|
|
|
inputs:
|
|
|
|
|
SonarCloud: 'sonarcloud-nanoFrameworkDeployer'
|
|
|
|
|
organization: 'nanoframework'
|
|
|
|
|
scannerMode: 'MSBuild'
|
|
|
|
|
projectKey: 'nanoframework_nanoFrameworkDeployer'
|
|
|
|
|
|
|
|
|
|
- template: azure-pipelines-templates/install-nuget.yml@templates
|
|
|
|
|
|
|
|
|
|
- task: NuGetCommand@2
|
|
|
|
|
condition: and( succeeded(), ne( variables['StartReleaseCandidate'], true ), ne(variables['UPDATE_DEPENDENTS'], 'true') )
|
|
|
|
|
displayName: NuGet restore
|
|
|
|
|
inputs:
|
|
|
|
|
restoreSolution: '$(solution)'
|
|
|
|
|
|
|
|
|
|
- task: VSBuild@1
|
|
|
|
|
condition: and( ne( variables['StartReleaseCandidate'], true ), ne(variables['UPDATE_DEPENDENTS'], 'true'))
|
|
|
|
|
inputs:
|
|
|
|
|
solution: '$(solution)'
|
|
|
|
|
platform: '$(buildPlatform)'
|
|
|
|
|
msbuildArgs: '/p:PublicRelease=true'
|
|
|
|
|
configuration: '$(buildConfiguration)'
|
|
|
|
|
|
|
|
|
|
- task: DotNetCoreCLI@2
|
|
|
|
|
displayName: Install SignTool tool
|
|
|
|
|
condition: and( succeeded(), eq( variables['StartReleaseCandidate'], false ), eq(variables['System.PullRequest.PullRequestId'], '') )
|
|
|
|
|
inputs:
|
|
|
|
|
command: custom
|
|
|
|
|
custom: tool
|
|
|
|
|
arguments: install --tool-path . SignClient
|
|
|
|
|
|
|
|
|
|
- pwsh: |
|
|
|
|
|
.\SignClient "Sign" `
|
|
|
|
|
--baseDirectory "$(Build.Repository.LocalPath)\build\bin\Release" `
|
|
|
|
|
--input "**/nanoFrameworkDeployer.exe" `
|
|
|
|
|
--config "$(Build.Repository.LocalPath)\config\SignClient.json" `
|
|
|
|
|
--filelist "$(Build.Repository.LocalPath)\config\filelist.txt" `
|
|
|
|
|
--user "$(SignClientUser)" `
|
|
|
|
|
--secret '$(SignClientSecret)' `
|
|
|
|
|
--name "nanoFrameworkDeployer" `
|
|
|
|
|
--description "nanoFrameworkDeployer" `
|
|
|
|
|
--descriptionUrl "https://github.com/$env:Build_Repository_Name"
|
|
|
|
|
displayName: Sign nanoFrameworkDeployer.exe
|
|
|
|
|
continueOnError: true
|
|
|
|
|
condition: and( succeeded(), eq(variables['System.PullRequest.PullRequestId'], '') )
|
|
|
|
|
|
|
|
|
|
- task: PowerShell@2
|
|
|
|
|
condition: and( ne( variables['StartReleaseCandidate'], true ), ne(variables['UPDATE_DEPENDENTS'], 'true'))
|
|
|
|
|
displayName: Get NuGet build number
|
|
|
|
|
inputs:
|
|
|
|
|
targetType: 'inline'
|
|
|
|
|
script: |
|
|
|
|
|
$MyNuGetVersion = $env:NBGV_NuGetPackageVersion -replace "\-g$env:NBGV_GitCommitIdShort", ""
|
|
|
|
|
|
|
|
|
|
# replace preview with alpha if this is a PR build
|
|
|
|
|
if($env:System_PullRequest_PullRequestId -ne $null)
|
|
|
|
|
{
|
|
|
|
|
$MyNuGetVersion = $MyNuGetVersion -replace "preview", "alpha"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ($env:System_PullRequest_SourceBranch -like 'release*')
|
|
|
|
|
{
|
|
|
|
|
$MyNuGetVersion = $MyNuGetVersion + "-rc." + $env:NBGV_VersionHeight
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Write-Host "NuGet build number is $MyNuGetVersion"
|
|
|
|
|
|
|
|
|
|
Write-Host "$("##vso[task.setvariable variable=MY_NUGET_VERSION]")$MyNuGetVersion"
|
|
|
|
|
|
|
|
|
|
# update cloud build number (only possible if this is not a PR from a fork)
|
|
|
|
|
- task: PowerShell@2
|
|
|
|
|
condition: and( succeeded(), ne(variables['system.pullrequest.isfork'], true), ne( variables['StartReleaseCandidate'], true ), ne(variables['UPDATE_DEPENDENTS'], 'true') )
|
|
|
|
|
displayName: Update cloud build number
|
|
|
|
|
inputs:
|
|
|
|
|
targetType: 'inline'
|
|
|
|
|
script: |
|
|
|
|
|
Write-Host "NuGet version is $("##vso[build.updatebuildnumber]")$env:MY_NUGET_VERSION"
|
|
|
|
|
Write-Host "Build version is $env:NBGV_AssemblyVersion"
|
|
|
|
|
|
|
|
|
|
- task: NuGetCommand@2
|
|
|
|
|
condition: and( succeeded(), ne( variables['StartReleaseCandidate'], true ), ne(variables['UPDATE_DEPENDENTS'], 'true') )
|
|
|
|
|
displayName: Pack .NET NuGet package
|
|
|
|
|
inputs:
|
|
|
|
|
command: 'custom'
|
|
|
|
|
arguments: 'pack nanoFrameworkDeployer\nanoFrameworkDeployer.nuspec -Version $(MY_NUGET_VERSION) -properties commit="$(Build.SourceVersion)"'
|
|
|
|
|
# arguments: 'pack nanoFrameworkDeployer\nanoFrameworkDeployer.nuspec -Symbols -SymbolPackageFormat snupkg -Version $(MY_NUGET_VERSION) -properties commit="$(Build.SourceVersion)"'
|
|
|
|
|
|
|
|
|
|
# we don't have tests (yet)
|
|
|
|
|
# - task: VSTest@2
|
|
|
|
|
# inputs:
|
|
|
|
|
# platform: '$(buildPlatform)'
|
|
|
|
|
# configuration: '$(buildConfiguration)'
|
|
|
|
|
|
|
|
|
|
- task: SonarCloudAnalyze@1
|
|
|
|
|
condition: and( succeeded(), ne( variables['StartReleaseCandidate'], true ), ne(variables['UPDATE_DEPENDENTS'], 'true') )
|
|
|
|
|
displayName: 'Run Code Analysis'
|
|
|
|
|
|
|
|
|
|
- task: SonarCloudPublish@1
|
|
|
|
|
condition: and( succeeded(), ne( variables['StartReleaseCandidate'], true ), ne(variables['UPDATE_DEPENDENTS'], 'true') )
|
|
|
|
|
inputs:
|
|
|
|
|
pollingTimeoutSec: '300'
|
|
|
|
|
|
|
|
|
|
- task: UseRubyVersion@0
|
|
|
|
|
condition: and( succeeded(), ne(variables['Build.Reason'], 'PullRequest'), ne( variables['StartReleaseCandidate'], true ), ne(variables['UPDATE_DEPENDENTS'], 'true') )
|
|
|
|
|
displayName: Setup Ruby
|
|
|
|
|
inputs:
|
|
|
|
|
versionSpec: '= 2.7'
|
|
|
|
|
addToPath: true
|
|
|
|
|
|
|
|
|
|
# generate change log
|
|
|
|
|
- powershell: |
|
|
|
|
|
gem install github_changelog_generator --quiet --no-document
|
|
|
|
|
# need to call it passing both cache options with full path otherwise it won't work
|
|
|
|
|
github_changelog_generator --token $(GitHubToken) --cache-log $env:AGENT_TEMPDIRECTORY\github-changelog-logger.log --cache-file $env:AGENT_TEMPDIRECTORY\github-changelog-http-cache
|
|
|
|
|
condition: and( succeeded(), ne(variables['Build.Reason'], 'PullRequest'), not( startsWith(variables['Build.SourceBranch'], 'refs/tags/v') ), not( startsWith(variables['Build.SourceBranchName'], 'main') ), not( contains(variables['Build.SourceBranchName'], 'update-dependencies') ), ne( variables['StartReleaseCandidate'], true ), ne(variables['UPDATE_DEPENDENTS'], 'true') )
|
|
|
|
|
displayName: Generate change log
|
|
|
|
|
|
|
|
|
|
# generate change log including future version
|
|
|
|
|
- powershell: |
|
|
|
|
|
gem install github_changelog_generator --quiet --no-document
|
|
|
|
|
# need to call it passing both cache options with full path otherwise it won't work
|
|
|
|
|
github_changelog_generator --token $(GitHubToken) --cache-log $env:AGENT_TEMPDIRECTORY\github-changelog-logger.log --cache-file $env:AGENT_TEMPDIRECTORY\github-changelog-http-cache --future-release v$env:MY_NUGET_VERSION
|
|
|
|
|
condition: and( succeeded(), and ( ne(variables['Build.Reason'], 'PullRequest'), not( startsWith(variables['Build.SourceBranch'], 'refs/tags/v') ), startsWith(variables['Build.SourceBranchName'], 'main'), not( contains(variables['Build.SourceBranchName'], 'update-dependencies') ) ), ne( variables['StartReleaseCandidate'], true ), ne(variables['UPDATE_DEPENDENTS'], 'true') )
|
|
|
|
|
displayName: Generate change log
|
|
|
|
|
|
|
|
|
|
# copy change log to artifacts directory
|
|
|
|
|
- task: CopyFiles@2
|
|
|
|
|
condition: and( succeeded(), ne(variables['Build.Reason'], 'PullRequest'), ne( variables['StartReleaseCandidate'], true ), ne(variables['UPDATE_DEPENDENTS'], 'true') )
|
|
|
|
|
displayName: Copy Changelog
|
|
|
|
|
inputs:
|
|
|
|
|
SourceFolder: '$(System.DefaultWorkingDirectory)'
|
|
|
|
|
Contents: 'CHANGELOG.md'
|
|
|
|
|
TargetFolder: '$(Build.ArtifactStagingDirectory)'
|
|
|
|
|
|
|
|
|
|
# push new changelog to GitHub repo
|
|
|
|
|
- task: PowerShell@2
|
|
|
|
|
condition: and( succeeded(), ne(variables['Build.Reason'], 'PullRequest'), not( startsWith(variables['Build.SourceBranch'], 'refs/tags/v') ), not( contains(variables['Build.SourceBranchName'], 'update-dependencies') ), ne( variables['StartReleaseCandidate'], true ), ne(variables['UPDATE_DEPENDENTS'], 'true') )
|
|
|
|
|
displayName: Push changelog to GitHub
|
|
|
|
|
inputs:
|
|
|
|
|
targetType: 'inline'
|
|
|
|
|
script: |
|
|
|
|
|
git add CHANGELOG.md
|
|
|
|
|
git commit -m "Update CHANGELOG for v$(NBGV_Version)" -m"***NO_CI***"
|
|
|
|
|
|
|
|
|
|
git config user.email 'nanoframework@outlook.com'
|
|
|
|
|
git config user.name 'nfbot'
|
|
|
|
|
|
|
|
|
|
# compute authorization header in format "AUTHORIZATION: basic 'encoded token'"
|
|
|
|
|
# 'encoded token' is the Base64 of the string "nfbot:personal-token"
|
|
|
|
|
$auth = "basic $([System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes("nfbot:$(GitHubToken)"))))"
|
|
|
|
|
|
|
|
|
|
git -c http.extraheader="AUTHORIZATION: $auth" push origin "HEAD:$(Build.SourceBranchName)"
|
|
|
|
|
|
|
|
|
|
- task: CopyFiles@1
|
|
|
|
|
condition: and( succeeded(), ne( variables['StartReleaseCandidate'], true ), ne(variables['UPDATE_DEPENDENTS'], 'true') )
|
|
|
|
|
displayName: Collecting deployable artifacts
|
|
|
|
|
inputs:
|
|
|
|
|
sourceFolder: $(Build.SourcesDirectory)
|
|
|
|
|
Contents: |
|
|
|
|
|
**\nanoFrameworkDeployer.$(MY_NUGET_VERSION).nupkg
|
|
|
|
|
**\nanoFrameworkDeployer.$(MY_NUGET_VERSION).snupkg
|
|
|
|
|
**\nanoFrameworkDeployer.exe
|
|
|
|
|
TargetFolder: '$(Build.ArtifactStagingDirectory)'
|
|
|
|
|
flattenFolders: true
|
|
|
|
|
|
|
|
|
|
- pwsh: |
|
|
|
|
|
.\SignClient "Sign" `
|
|
|
|
|
--baseDirectory "$(Build.ArtifactStagingDirectory)" `
|
|
|
|
|
--input "**/*.nupkg" `
|
|
|
|
|
--config "$(Build.Repository.LocalPath)\config\SignClient.json" `
|
|
|
|
|
--filelist "$(Build.Repository.LocalPath)\config\filelist.txt" `
|
|
|
|
|
--user "$(SignClientUser)" `
|
|
|
|
|
--secret '$(SignClientSecret)' `
|
|
|
|
|
--name ".NET nanoFramework Deployer" `
|
|
|
|
|
--description ".NET nanoFramework Deployer" `
|
|
|
|
|
--descriptionUrl "https://github.com/$env:Build_Repository_Name"
|
|
|
|
|
displayName: Sign packages
|
|
|
|
|
continueOnError: true
|
|
|
|
|
condition: and( succeeded(), eq( variables['StartReleaseCandidate'], false ), eq(variables['System.PullRequest.PullRequestId'], '') )
|
|
|
|
|
|
|
|
|
|
# publish artifacts (only possible if this is not a PR originated on a fork)
|
|
|
|
|
- task: PublishBuildArtifacts@1
|
|
|
|
|
condition: and( succeeded(), ne(variables['system.pullrequest.isfork'], true), ne( variables['StartReleaseCandidate'], true ), ne(variables['UPDATE_DEPENDENTS'], 'true') )
|
|
|
|
|
displayName: Publish deployables artifacts
|
|
|
|
|
inputs:
|
|
|
|
|
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
|
|
|
|
|
ArtifactName: deployables
|
|
|
|
|
ArtifactType: Container
|
|
|
|
|
|
|
|
|
|
# push NuGet packages to Azure Artifacts feed (always happens except on PR builds)
|
|
|
|
|
- task: NuGetCommand@2
|
|
|
|
|
condition: and( succeeded(), ne( variables['StartReleaseCandidate'], true ), ne(variables['UPDATE_DEPENDENTS'], 'true') )
|
|
|
|
|
displayName: Push NuGet packages to Azure Artifacts
|
|
|
|
|
inputs:
|
|
|
|
|
command: push
|
|
|
|
|
nuGetFeedType: external
|
|
|
|
|
packagesToPush: '$(Build.ArtifactStagingDirectory)/*.nupkg'
|
|
|
|
|
publishFeedCredentials: 'AzureArtifacts-nanoFrameworkDeployer'
|
|
|
|
|
allowPackageConflicts: true
|
|
|
|
|
|
|
|
|
|
# push NuGet class lib package to NuGet (always happens except on PR builds)
|
|
|
|
|
- task: NuGetCommand@2
|
|
|
|
|
condition: and( succeeded(), ne(variables['Build.Reason'], 'PullRequest'), ne( variables['StartReleaseCandidate'], true ), ne(variables['UPDATE_DEPENDENTS'], 'true') )
|
|
|
|
|
continueOnError: true
|
|
|
|
|
displayName: Push NuGet packages to NuGet
|
|
|
|
|
inputs:
|
|
|
|
|
command: push
|
|
|
|
|
nuGetFeedType: external
|
|
|
|
|
allowPackageConflicts: true
|
|
|
|
|
packagesToPush: '$(Build.ArtifactStagingDirectory)/*.nupkg'
|
|
|
|
|
publishFeedCredentials: 'NuGet-nanoFrameworkDeployer'
|
|
|
|
|
|
|
|
|
|
# update dependencies
|
|
|
|
|
- task: PowerShell@2
|
|
|
|
|
condition: and(or(eq(variables['UPDATE_DEPENDENTS'], 'true'), eq(variables['RUN_UPDATE_DEPENDENTS'], 'true') ), not( startsWith(variables['Build.SourceBranch'], 'refs/tags/v') ) )
|
|
|
|
|
displayName: Update dependent tools
|
|
|
|
|
inputs:
|
|
|
|
|
targetType: filePath
|
|
|
|
|
filePath: azure-pipelines/update-dependencies.ps1
|
|
|
|
|
env:
|
|
|
|
|
MY_GITHUB_TOKEN: $(GitHubToken)
|
|
|
|
|
|
|
|
|
|
# create or update GitHub release ON tags from release or main branches
|
|
|
|
|
- task: GithubRelease@1
|
|
|
|
|
condition: and( succeeded(), eq(variables['System.PullRequest.PullRequestId'], ''), not( startsWith(variables['Build.SourceBranch'], 'refs/tags/v') ), ne( variables['StartReleaseCandidate'], true ), ne(variables['UPDATE_DEPENDENTS'], 'true') )
|
|
|
|
|
displayName: Create/Update GitHub PREVIEW release
|
|
|
|
|
inputs:
|
|
|
|
|
gitHubConnection: 'github.com_nano-$(System.TeamProject)'
|
|
|
|
|
tagSource: userSpecifiedTag
|
|
|
|
|
tag: v$(MY_NUGET_VERSION)
|
|
|
|
|
title: 'nanoFramework Deployer Library v$(MY_NUGET_VERSION)'
|
|
|
|
|
releaseNotesSource: inline
|
|
|
|
|
releaseNotesInline: 'Check the [changelog]($(Build.Repository.Uri)/blob/$(Build.SourceBranchName)/CHANGELOG.md).<br><br><h4>Install from NuGet</h4><br>The following NuGet packages are available for download from this release:<br>:package: [.NET](https://www.nuget.org/packages/nanoFrameworkDeployer.Net/$(MY_NUGET_VERSION)) v$(MY_NUGET_VERSION) v$(MY_NUGET_VERSION)'
|
|
|
|
|
assets: |
|
|
|
|
|
'$(Build.ArtifactStagingDirectory)/$(nugetPackageName).$(MY_NUGET_VERSION).nupkg'
|
|
|
|
|
'$(Build.ArtifactStagingDirectory)/nanoFrameworkDeployer.exe'
|
|
|
|
|
assetUploadMode: replace
|
|
|
|
|
isPreRelease: true
|
|
|
|
|
addChangeLog: false
|
|
|
|
|
|
|
|
|
|
# create or update GitHub release ON tags from release or main branches
|
|
|
|
|
- task: GithubRelease@1
|
|
|
|
|
condition: and( succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/tags/v'), not(contains(variables['Build.SourceBranch'], 'preview') ), ne( variables['StartReleaseCandidate'], true ), ne(variables['UPDATE_DEPENDENTS'], 'true') )
|
|
|
|
|
displayName: Create/Update GitHub stable release
|
|
|
|
|
inputs:
|
|
|
|
|
gitHubConnection: 'github.com_nano-$(System.TeamProject)'
|
|
|
|
|
tagSource: userSpecifiedTag
|
|
|
|
|
tag: v$(MY_NUGET_VERSION)
|
|
|
|
|
title: 'nanoFramework Deployer Library v$(MY_NUGET_VERSION)'
|
|
|
|
|
releaseNotesSource: inline
|
|
|
|
|
releaseNotesInline: 'Check the [changelog]($(Build.Repository.Uri)/blob/$(Build.SourceBranchName)/CHANGELOG.md).<br><br><h4>Install from NuGet</h4><br>The following NuGet packages are available for download from this release:<br>:package: [.NET](https://www.nuget.org/packages/nanoFrameworkDeployer.Net/$(MY_NUGET_VERSION)) v$(MY_NUGET_VERSION) v$(MY_NUGET_VERSION)'
|
|
|
|
|
assets: |
|
|
|
|
|
'$(Build.ArtifactStagingDirectory)/$(nugetPackageName).$(MY_NUGET_VERSION).nupkg'
|
|
|
|
|
'$(Build.ArtifactStagingDirectory)/nanoFrameworkDeployer.exe'
|
|
|
|
|
assetUploadMode: replace
|
|
|
|
|
isPreRelease: true
|
|
|
|
|
addChangeLog: false
|
|
|
|
|
|
|
|
|
|
# step from template @ nf-tools repo
|
|
|
|
|
# report error
|
|
|
|
|