-
Notifications
You must be signed in to change notification settings - Fork 899
Use Azure Pipelines exclusively (i.e. drop Travis, AppVeyor) #1761
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
a3d9f7b
dd006b7
15d6464
ddd4998
ae05395
5f47dac
369a98b
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,46 +1,7 @@ | ||
# Travis-CI Build for libgit2sharp | ||
# see travis-ci.org for details | ||
|
||
language: csharp | ||
mono: none | ||
|
||
matrix: | ||
include: | ||
- os: linux | ||
dist: xenial | ||
before_install: | ||
- | | ||
wget -q https://packages.microsoft.com/config/ubuntu/16.04/packages-microsoft-prod.deb | ||
sudo dpkg -i packages-microsoft-prod.deb | ||
sudo apt-get update | ||
sudo apt-get install -y powershell | ||
- os: osx | ||
osx_image: xcode8.3 | ||
before_install: | ||
- brew update # This is necessary to get pwsh 6.2 instead of some 6.0-preview that isn't named `pwsh` | ||
- brew cask install powershell | ||
fast_finish: true | ||
|
||
before_install: | ||
- date -u | ||
- uname -a | ||
- env | sort | ||
|
||
install: | ||
- git fetch --unshallow | ||
- pwsh ./tools/Install-DotNetSdk.ps1 ; export PATH=~/.dotnet:$PATH | ||
|
||
# Build libgit2, LibGit2Sharp and run the tests | ||
script: | ||
- ./buildandtest.sh 'LEAKS_IDENTIFYING' | ||
|
||
# Only watch the development branch | ||
# Disable Travis-CI | ||
branches: | ||
only: | ||
- master | ||
- /^maint.*/ | ||
|
||
# Notify of build changes | ||
notifications: | ||
email: | ||
- emeric.fermas@gmail.com | ||
- NOTTHISONE |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
<Project> | ||
<PropertyGroup Condition=" '$(IsTestProject)' == 'true' "> | ||
<CoverletOutputFormat>cobertura</CoverletOutputFormat> | ||
<Exclude>[xunit.*]*</Exclude> | ||
<!-- Ensure we preserve each coverlet output file per target framework: https://github.com/tonerdo/coverlet/issues/177 --> | ||
<CoverletOutput>$(OutputPath)/</CoverletOutput> | ||
</PropertyGroup> | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This whole file enables code coverage collection when |
||
</Project> |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -11,7 +11,8 @@ | |
</ItemGroup> | ||
|
||
<ItemGroup> | ||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.0.1" /> | ||
<PackageReference Include="coverlet.msbuild" Version="2.7.0" /> | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This is required for code coverage. |
||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.4.0" /> | ||
<PackageReference Include="Moq" Version="4.10.1" /> | ||
<PackageReference Include="System.ValueTuple" Version="4.5.0" /> | ||
<PackageReference Include="xunit" Version="2.4.1" /> | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -11,6 +11,7 @@ namespace LibGit2Sharp.Tests | |
public class ShadowCopyFixture : BaseFixture | ||
{ | ||
[Fact] | ||
[Trait("TestCategory", "FailsWhileInstrumented")] | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This test sets up an appdomain and loads libgit2sharp. When code coverage is turned on, it invalidates the signature of the strong-name signed assembly and then .NET Framework won't load it. So skip the test during instrumented test runs. We run this test by itself in the very next step on Azure Pipelines to make sure it runs. |
||
public void CanProbeForNativeBinariesFromAShadowCopiedAssembly() | ||
{ | ||
Type type = typeof(Wrapper); | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,158 +1,4 @@ | ||
version: '{build}' | ||
|
||
os: Visual Studio 2019 | ||
|
||
# Disable AppVeyor | ||
branches: | ||
only: | ||
- master | ||
- /^maint.*/ | ||
|
||
configuration: release | ||
|
||
skip_tags: true | ||
|
||
nuget: | ||
disable_publish_on_pr: true | ||
|
||
environment: | ||
coveralls_token: | ||
secure: ixIsBslo9NheDb5lJknF58EYdgvZ0r3/L0ecRiXjfXmjHBLvoSU6/ZRwaMM+BAlG | ||
coverity_token: | ||
secure: nuzUT+HecXGIi3KaPd/1hgFEZJan/j6+oNbPV75JKjk= | ||
coverity_email: | ||
secure: eGVilNg1Yuq+Xj+SW8r3WCtjnzhoDV0sNJkma4NRq7A= | ||
matrix: | ||
- publish_on_success: False | ||
ExtraDefine: LEAKS_IDENTIFYING | ||
- publish_on_success: True | ||
|
||
matrix: | ||
fast_finish: true | ||
|
||
install: | ||
- ps: | | ||
Write-Host "Commit being built = " -NoNewLine | ||
Write-Host $Env:APPVEYOR_REPO_COMMIT -ForegroundColor "Green" | ||
Write-Host "Target branch = " -NoNewLine | ||
Write-Host $Env:APPVEYOR_REPO_BRANCH -ForegroundColor "Green" | ||
Write-Host "Is a Pull Request = " -NoNewLine | ||
Write-Host $($Env:APPVEYOR_PULL_REQUEST_NUMBER -ne $null) -ForegroundColor "Green" | ||
|
||
$CommitDate = [DateTime]::Parse($Env:APPVEYOR_REPO_COMMIT_TIMESTAMP) | ||
$BuildDate = $CommitDate.ToUniversalTime().ToString("yyyyMMddHHmmss") | ||
Write-Host "Merge commit UTC timestamp = " -NoNewLine | ||
Write-Host $BuildDate -ForegroundColor "Green" | ||
|
||
$Env:SHOULD_RUN_COVERITY_ANALYSIS = $($Env:APPVEYOR_SCHEDULED_BUILD -eq $True) | ||
Write-Host "Should run Coverity analysis = " -NoNewLine | ||
Write-Host $Env:SHOULD_RUN_COVERITY_ANALYSIS -ForegroundColor "Green" | ||
|
||
$Env:SHOULD_RUN_COVERALLS = $($Env:APPVEYOR_SCHEDULED_BUILD -eq $True) | ||
Write-Host "Should run Coveralls = " -NoNewLine | ||
Write-Host $Env:SHOULD_RUN_COVERALLS -ForegroundColor "Green" | ||
|
||
Write-Host "Identifying leaks = " -NoNewLine | ||
Write-Host ($Env:ExtraDefine -eq "LEAKS_IDENTIFYING") -ForegroundColor "Green" | ||
|
||
Write-Host "Should publish on success = " -NoNewLine | ||
Write-Host $Env:publish_on_success -ForegroundColor "Green" | ||
|
||
If ($Env:SHOULD_RUN_COVERALLS -eq $True) | ||
{ | ||
nuget install OpenCover -Version 4.6.166 -ExcludeVersion -OutputDirectory .\packages | ||
nuget install coveralls.net -Version 0.6.0 -ExcludeVersion -OutputDirectory .\packages | ||
} | ||
|
||
If ($Env:SHOULD_RUN_COVERITY_ANALYSIS -eq $True) | ||
{ | ||
cinst curl -y | ||
} | ||
|
||
./tools/Install-DotNetSdk.ps1 | ||
|
||
before_build: | ||
- ps: | | ||
msbuild "$Env:APPVEYOR_BUILD_FOLDER\LibGit2Sharp.sln" ` | ||
/nologo /verbosity:quiet ` | ||
/logger:"C:\Program Files\AppVeyor\BuildAgent\Appveyor.MSBuildLogger.dll" ` | ||
/t:restore | ||
|
||
build_script: | ||
- ps: | | ||
& cov-build.exe --dir cov-int msbuild "$Env:APPVEYOR_BUILD_FOLDER\LibGit2Sharp.sln" ` | ||
/nologo /verbosity:minimal /fl /flp:verbosity=normal ` | ||
/logger:"C:\Program Files\AppVeyor\BuildAgent\Appveyor.MSBuildLogger.dll" ` | ||
/t:build,pack | ||
|
||
test_script: | ||
- ps: | | ||
Foreach ($runner in 'xunit.console.exe','xunit.console.x86.exe') | ||
{ | ||
If ($Env:SHOULD_RUN_COVERALLS -eq $True -and $Env:publish_on_success -eq $True) | ||
{ | ||
.\packages\OpenCover\tools\OpenCover.Console.exe ` | ||
-register:user ` | ||
"-target:""$Env:userprofile\.nuget\packages\xunit.runner.console\2.4.1\tools\net46\$runner""" ` | ||
"-targetargs:""$Env:APPVEYOR_BUILD_FOLDER\bin\LibGit2Sharp.Tests\Release\net46\LibGit2Sharp.Tests.dll"" -noshadow" ` | ||
"-filter:+[LibGit2Sharp]* -[LibGit2Sharp.Tests]*" ` | ||
-hideskipped:All ` | ||
-output:opencoverCoverage.xml | ||
} | ||
ElseIf ($Env:SHOULD_RUN_COVERITY_ANALYSIS -eq $False) | ||
{ | ||
& "$Env:userprofile\.nuget\packages\xunit.runner.console\2.4.1\tools\net46\$runner" ` | ||
"$Env:APPVEYOR_BUILD_FOLDER\bin\LibGit2Sharp.Tests\Release\net46\LibGit2Sharp.Tests.dll" -noshadow | ||
} | ||
} | ||
|
||
- dotnet test LibGit2Sharp.Tests/LibGit2Sharp.Tests.csproj -f netcoreapp2.1 --no-restore --no-build | ||
|
||
after_test: | ||
- ps: | | ||
If ($Env:SHOULD_RUN_COVERALLS -eq $True -and $Env:publish_on_success -eq $True) | ||
{ | ||
Write-Host "Uploading code coverage result..." -ForegroundColor "Green" | ||
|
||
.\packages\coveralls.net\tools\csmacnz.Coveralls.exe ` | ||
--opencover -i opencoverCoverage.xml ` | ||
--repoToken $Env:coveralls_token ` | ||
--useRelativePaths ` | ||
--basePath "$Env:APPVEYOR_BUILD_FOLDER\"` | ||
} | ||
|
||
If ($Env:SHOULD_RUN_COVERITY_ANALYSIS -eq $True -and $Env:publish_on_success -eq $True) | ||
{ | ||
7z a "$Env:APPVEYOR_BUILD_FOLDER\$Env:APPVEYOR_PROJECT_NAME.zip" "$Env:APPVEYOR_BUILD_FOLDER\cov-int\" | ||
|
||
# cf. http://stackoverflow.com/a/25045154/335418 | ||
Remove-item alias:curl | ||
|
||
Write-Host "Uploading Coverity analysis result..." -ForegroundColor "Green" | ||
|
||
curl --silent --show-error ` | ||
--output curl-out.txt ` | ||
--form token="$Env:coverity_token" ` | ||
--form email="$Env:coverity_email" ` | ||
--form "file=@$Env:APPVEYOR_BUILD_FOLDER\$Env:APPVEYOR_PROJECT_NAME.zip" ` | ||
--form version="$Env:APPVEYOR_REPO_COMMIT" ` | ||
--form description="CI server scheduled build." ` | ||
https://scan.coverity.com/builds?project=libgit2%2Flibgit2sharp | ||
|
||
cat .\curl-out.txt | ||
} | ||
|
||
on_finish: | ||
- ps: Push-AppveyorArtifact "msbuild.log" | ||
|
||
on_success: | ||
- ps: | | ||
if ($Env:publish_on_success -eq $True) | ||
{ | ||
Get-ChildItem "bin\LibGit2Sharp\$env:configuration\*.nupkg" |% { Push-AppveyorArtifact $_.FullName -FileName $_.Name } | ||
} | ||
|
||
notifications: | ||
- provider: Email | ||
to: | ||
- emeric.fermas@gmail.com | ||
on_build_status_changed: true | ||
only: | ||
- NOTTHISONE |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -3,32 +3,10 @@ trigger: | |
- maint/* | ||
|
||
variables: | ||
solution: '**/*.sln' | ||
buildPlatform: 'Any CPU' | ||
buildConfiguration: 'Release' | ||
TreatWarningsAsErrors: true | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Instead of putting this here, I think it makes sense to add There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The problem with that is then you can't even build locally when there are warnings. That slows down your dev inner loop. I greatly prefer for warnings to be allowed during the inner loop and only be accountable to fix all warnings before a PR is accepted. |
||
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true | ||
bording marked this conversation as resolved.
Show resolved
Hide resolved
|
||
BuildConfiguration: Release | ||
NUGET_PACKAGES: $(Agent.TempDirectory)/.nuget/packages | ||
bording marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
jobs: | ||
- job: Windows | ||
pool: | ||
vmImage: 'windows-2019' | ||
steps: | ||
- pwsh: ./tools/Install-DotNetSdk.ps1 | ||
displayName: Installing .NET Core SDK and runtimes | ||
- script: buildandtest.cmd | ||
displayName: Build and test | ||
- job: Linux | ||
pool: | ||
vmImage: 'Ubuntu 16.04' | ||
steps: | ||
- pwsh: ./tools/Install-DotNetSdk.ps1 | ||
displayName: Installing .NET Core SDK and runtimes | ||
- script: ./buildandtest.sh | ||
displayName: Build and test | ||
- job: macOS | ||
pool: | ||
vmImage: 'macOS 10.13' | ||
steps: | ||
- pwsh: ./tools/Install-DotNetSdk.ps1 | ||
displayName: Installing .NET Core SDK and runtimes | ||
- script: ./buildandtest.sh | ||
displayName: Build and test | ||
- template: azure-pipelines/build.yml |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
# This script returns all the artifacts that should be collected after a build. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. As documented, this script executes all the other scripts in this directory to aggregate the data on artifacts to be uploaded. |
||
# | ||
# Each powershell artifact is expressed as an object with these properties: | ||
# Source - the full path to the source file | ||
# ArtifactName - the name of the artifact to upload to | ||
# ContainerFolder - the relative path within the artifact in which the file should appear | ||
# | ||
# Each artifact aggregating .ps1 script should return a hashtable: | ||
# Key = path to the directory from which relative paths within the artifact should be calculated | ||
# Value = an array of paths (absolute or relative to the BaseDirectory) to files to include in the artifact. | ||
# FileInfo objects are also allowed. | ||
|
||
$RepoRoot = [System.IO.Path]::GetFullPath("$PSScriptRoot\..\..") | ||
|
||
Function EnsureTrailingSlash($path) { | ||
if ($path.length -gt 0 -and !$path.EndsWith('\') -and !$path.EndsWith('/')) { | ||
$path = $path + [IO.Path]::DirectorySeparatorChar | ||
} | ||
|
||
$path.Replace('\', [IO.Path]::DirectorySeparatorChar) | ||
} | ||
|
||
Get-ChildItem "$PSScriptRoot\*.ps1" -Exclude "_*" -Recurse |% { | ||
$ArtifactName = $_.BaseName | ||
|
||
$fileGroups = & $_ | ||
if (!$fileGroups -or $fileGroups.Count -eq 0) { | ||
Write-Warning "No files found for the `"$ArtifactName`" artifact." | ||
} else { | ||
$fileGroups.GetEnumerator() | % { | ||
$BaseDirectory = New-Object Uri ((EnsureTrailingSlash $_.Key), [UriKind]::Absolute) | ||
$_.Value | % { | ||
if ($_.GetType() -eq [IO.FileInfo] -or $_.GetType() -eq [IO.DirectoryInfo]) { | ||
$_ = $_.FullName | ||
} | ||
|
||
$artifact = New-Object -TypeName PSObject | ||
Add-Member -InputObject $artifact -MemberType NoteProperty -Name ArtifactName -Value $ArtifactName | ||
|
||
$SourceFullPath = New-Object Uri ($BaseDirectory, $_) | ||
Add-Member -InputObject $artifact -MemberType NoteProperty -Name Source -Value $SourceFullPath.LocalPath | ||
|
||
$RelativePath = [Uri]::UnescapeDataString($BaseDirectory.MakeRelative($SourceFullPath)) | ||
Add-Member -InputObject $artifact -MemberType NoteProperty -Name ContainerFolder -Value (Split-Path $RelativePath) | ||
|
||
Write-Output $artifact | ||
} | ||
} | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
# This script translates all the artifacts described by _all.ps1 | ||
# into commands that instruct Azure Pipelines to actually collect those artifacts. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. As documented, this is the Azure-Pipelines adapter for the otherwise CI-agnostic artifact scripts. It assigns a special suffix to each artifact based on the OS of the agent so that you can collect artifacts from win, osx, linux without them stomping on each other. |
||
|
||
param ( | ||
[string]$ArtifactNameSuffix | ||
) | ||
|
||
& "$PSScriptRoot/_stage_all.ps1" -ArtifactNameSuffix $ArtifactNameSuffix |% { | ||
Write-Host "##vso[artifact.upload containerfolder=$($_.Name);artifactname=$($_.Name);]$($_.Path)" | ||
} |
Uh oh!
There was an error while loading. Please reload this page.