Skip to content

Commit

Permalink
Merge pull request #1761 from AArnott/validate/githubActions
Browse files Browse the repository at this point in the history
Use Azure Pipelines exclusively (i.e. drop Travis, AppVeyor)
  • Loading branch information
bording authored Feb 16, 2020
2 parents 95009f0 + 369a98b commit ceadb47
Show file tree
Hide file tree
Showing 30 changed files with 430 additions and 299 deletions.
43 changes: 2 additions & 41 deletions .travis.yml
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:
- [email protected]
- NOTTHISONE
4 changes: 4 additions & 0 deletions Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,11 @@
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<OutputPath>$(MSBuildThisFileDirectory)bin\$(MSBuildProjectName)\$(Configuration)\</OutputPath>
<BaseIntermediateOutputPath>$(MSBuildThisFileDirectory)obj\$(MSBuildProjectName)\</BaseIntermediateOutputPath>
<PackageOutputPath>$(MSBuildThisFileDirectory)bin\Packages\$(Configuration)\</PackageOutputPath>
<DefineConstants Condition=" '$(ExtraDefine)' != '' ">$(DefineConstants);$(ExtraDefine)</DefineConstants>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.NETFramework.ReferenceAssemblies" Version="1.0.0" PrivateAssets="All" />
</ItemGroup>
</Project>
8 changes: 8 additions & 0 deletions Directory.Build.targets
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>
</Project>
3 changes: 2 additions & 1 deletion LibGit2Sharp.Tests/LibGit2Sharp.Tests.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@
</ItemGroup>

<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.0.1" />
<PackageReference Include="coverlet.msbuild" Version="2.7.0" />
<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" />
Expand Down
2 changes: 1 addition & 1 deletion LibGit2Sharp.Tests/StatusFixture.cs
Original file line number Diff line number Diff line change
Expand Up @@ -640,7 +640,7 @@ public void CanIncludeStatusOfUnalteredFiles()
RepositoryStatus status = repo.RetrieveStatus(new StatusOptions() { IncludeUnaltered = true });

Assert.Equal(unalteredPaths.Length, status.Unaltered.Count());
Assert.Equal(unalteredPaths, status.Unaltered.OrderBy(s => s.FilePath).Select(s => s.FilePath).ToArray());
Assert.Equal(unalteredPaths, status.Unaltered.OrderBy(s => s.FilePath, StringComparer.OrdinalIgnoreCase).Select(s => s.FilePath).ToArray());
}
}

Expand Down
1 change: 1 addition & 0 deletions LibGit2Sharp.Tests/desktop/ShadowCopyFixture.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ namespace LibGit2Sharp.Tests
public class ShadowCopyFixture : BaseFixture
{
[Fact]
[Trait("TestCategory", "FailsWhileInstrumented")]
public void CanProbeForNativeBinariesFromAShadowCopiedAssembly()
{
Type type = typeof(Wrapper);
Expand Down
15 changes: 8 additions & 7 deletions LibGit2Sharp/LibGit2Sharp.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -16,32 +16,33 @@
<SymbolPackageFormat>snupkg</SymbolPackageFormat>
<SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>..\libgit2sharp.snk</AssemblyOriginatorKeyFile>
<PackageIcon>square-logo.png</PackageIcon>
<PackageLicenseFile>App_Readme/LICENSE.md</PackageLicenseFile>
</PropertyGroup>

<ItemGroup>
<CodeAnalysisDictionary Include="CustomDictionary.xml" />
<None Include="..\README.md" Pack="true" PackagePath="App_Readme\" />
<None Include="..\LICENSE.md" Pack="true" PackagePath="App_Readme\" />
<None Include="..\CHANGES.md" Pack="true" PackagePath="App_Readme\" />
<None Include="..\square-logo.png" Pack="true" PackagePath="" />
<None Include="..\README.md" Pack="true" PackagePath="App_Readme/" />
<None Include="..\LICENSE.md" Pack="true" PackagePath="App_Readme/" />
<None Include="..\CHANGES.md" Pack="true" PackagePath="App_Readme/" />
<None Update="Core\Handles\Objects.tt" Generator="TextTemplatingFileGenerator" LastGenOutput="Objects.cs" />
<Compile Update="Core\Handles\Objects.cs" DependentUpon="Objects.tt" DesignTime="True" AutoGen="True" />
<Service Include="{508349b6-6b84-4df5-91f0-309beebad82d}" /> <!-- Needed for T4 generation -->
</ItemGroup>

<ItemGroup>
<PackageReference Include="LibGit2Sharp.NativeBinaries" Version="[2.0.305]" PrivateAssets="none" />
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.0.0-beta-63127-02" PrivateAssets="all" />
<PackageReference Include="Nerdbank.GitVersioning" Version="2.3.138" PrivateAssets="all" />
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.0.0" PrivateAssets="all" />
<PackageReference Include="Nerdbank.GitVersioning" Version="3.0.50" PrivateAssets="all" />
</ItemGroup>

<Import Project="..\Targets\CodeGenerator.targets" />
<Import Project="..\Targets\GenerateNativeDllName.targets" />

<Target Name="SetNuSpecProperties" BeforeTargets="GenerateNuspec" DependsOnTargets="GetBuildVersion">
<PropertyGroup>
<PackageIconUrl>https://github.com/libgit2/libgit2sharp/raw/$(GitCommitIdShort)/square-logo.png</PackageIconUrl>
<PackageReleaseNotes>https://github.com/libgit2/libgit2sharp/blob/$(GitCommitIdShort)/CHANGES.md#libgit2sharp-changes</PackageReleaseNotes>
<PackageLicenseUrl>https://github.com/libgit2/libgit2sharp/raw/$(GitCommitIdShort)/LICENSE.md</PackageLicenseUrl>
</PropertyGroup>
</Target>

Expand Down
160 changes: 3 additions & 157 deletions appveyor.yml
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:
- [email protected]
on_build_status_changed: true
only:
- NOTTHISONE
32 changes: 5 additions & 27 deletions azure-pipelines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,32 +3,10 @@ trigger:
- maint/*

variables:
solution: '**/*.sln'
buildPlatform: 'Any CPU'
buildConfiguration: 'Release'
TreatWarningsAsErrors: true
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
BuildConfiguration: Release
NUGET_PACKAGES: $(Agent.TempDirectory)/.nuget/packages

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
File renamed without changes.
50 changes: 50 additions & 0 deletions azure-pipelines/artifacts/_all.ps1
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.
#
# 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
}
}
}
}
10 changes: 10 additions & 0 deletions azure-pipelines/artifacts/_pipelines.ps1
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.

param (
[string]$ArtifactNameSuffix
)

& "$PSScriptRoot/_stage_all.ps1" -ArtifactNameSuffix $ArtifactNameSuffix |% {
Write-Host "##vso[artifact.upload containerfolder=$($_.Name);artifactname=$($_.Name);]$($_.Path)"
}
Loading

0 comments on commit ceadb47

Please sign in to comment.