Skip to content
This repository was archived by the owner on Apr 6, 2024. It is now read-only.

Commit 1e6f144

Browse files
committed
Run integration tests in separate Azure Pipeline jobs
1 parent 70038d3 commit 1e6f144

File tree

10 files changed

+180
-48
lines changed

10 files changed

+180
-48
lines changed

azure-pipelines.yml

Lines changed: 127 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -10,26 +10,139 @@ pr:
1010
- hotfix/*
1111

1212
jobs:
13-
- job: Windows
13+
# Build
14+
- job: Build
1415
pool:
1516
vmImage: 'windows-2022'
1617
steps:
17-
- powershell: |
18-
$ENV:CAKE_SKIP_GITVERSION=([string]::IsNullOrEmpty($ENV:SYSTEM_PULLREQUEST_PULLREQUESTID) -eq $False).ToString()
19-
.\build.ps1 --target=Buildserver
20-
exit $LASTEXITCODE
21-
displayName: 'Cake Build'
22-
- job: macOS
18+
- powershell: ./build.ps1
19+
displayName: 'Build'
20+
- publish: $(Build.SourcesDirectory)/BuildArtifacts/Packages/NuGet
21+
artifact: NuGet Package
22+
displayName: 'Publish NuGet package as build artifact'
23+
# Integration Tests Windows Server 2019 (.NET Core tool)
24+
- job: Test_Windows_2019_DotNetCoreTool
25+
displayName: Integration Tests Windows Server 2019 (.NET Core tool)
26+
dependsOn: Build
27+
pool:
28+
vmImage: 'windows-2019'
29+
steps:
30+
- download: current
31+
artifact: NuGet Package
32+
displayName: 'Download build artifact'
33+
- task: CopyFiles@2
34+
inputs:
35+
sourceFolder: $(Pipeline.Workspace)/NuGet Package
36+
targetFolder: $(Build.SourcesDirectory)/BuildArtifacts/Packages/NuGet
37+
displayName: 'Copy build artifact for test run'
38+
- powershell: ./build.ps1
39+
workingDirectory: ./tests/script-runner/
40+
displayName: 'Run integration tests'
41+
- publish: $(Build.SourcesDirectory)/BuildArtifacts/TestResults/Integration
42+
artifact: Integration Tests Windows Server 2019 (.NET Core tool)
43+
displayName: 'Publish generated reports as build artifact'
44+
# Integration Tests Windows Server 2022 (.NET Core tool)
45+
- job: Test_Windows_2022_DotNetCoreTool
46+
displayName: Integration Tests Windows Server 2022 (.NET Core tool)
47+
dependsOn: Build
48+
pool:
49+
vmImage: 'windows-2022'
50+
steps:
51+
- download: current
52+
artifact: NuGet Package
53+
displayName: 'Download build artifact'
54+
- task: CopyFiles@2
55+
inputs:
56+
sourceFolder: $(Pipeline.Workspace)/NuGet Package
57+
targetFolder: $(Build.SourcesDirectory)/BuildArtifacts/Packages/NuGet
58+
displayName: 'Copy build artifact for test run'
59+
- powershell: ./build.ps1
60+
workingDirectory: ./tests/script-runner/
61+
displayName: 'Run integration tests'
62+
- publish: $(Build.SourcesDirectory)/BuildArtifacts/TestResults/Integration
63+
artifact: Integration Tests Windows Server 2022 (.NET Core tool)
64+
displayName: 'Publish generated reports as build artifact'
65+
# Integration Tests macOS 11 (.NET Core tool)
66+
- job: Test_macOS_11_DotNetCoreTool
67+
displayName: Integration Tests macOS 11 (.NET Core tool)
68+
dependsOn: Build
2369
pool:
2470
vmImage: 'macOS-11'
2571
steps:
26-
- bash: |
27-
./build.sh --target=Buildserver
28-
displayName: 'Cake Build'
29-
- job: Ubuntu
72+
- download: current
73+
artifact: NuGet Package
74+
displayName: 'Download build artifact'
75+
- task: CopyFiles@2
76+
inputs:
77+
sourceFolder: $(Pipeline.Workspace)/NuGet Package
78+
targetFolder: $(Build.SourcesDirectory)/BuildArtifacts/Packages/NuGet
79+
displayName: 'Copy build artifact for test run'
80+
- bash: ./build.sh
81+
workingDirectory: ./tests/script-runner/
82+
displayName: 'Run integration tests'
83+
- publish: $(Build.SourcesDirectory)/BuildArtifacts/TestResults/Integration
84+
artifact: Integration Tests macOS 11 (.NET Core tool)
85+
displayName: 'Publish generated reports as build artifact'
86+
# Integration Tests macOS 12 (.NET Core tool)
87+
- job: Test_macOS_12_DotNetCoreTool
88+
displayName: Integration Tests macOS 12 (.NET Core tool)
89+
dependsOn: Build
90+
pool:
91+
vmImage: 'macOS-12'
92+
steps:
93+
- download: current
94+
artifact: NuGet Package
95+
displayName: 'Download build artifact'
96+
- task: CopyFiles@2
97+
inputs:
98+
sourceFolder: $(Pipeline.Workspace)/NuGet Package
99+
targetFolder: $(Build.SourcesDirectory)/BuildArtifacts/Packages/NuGet
100+
displayName: 'Copy build artifact for test run'
101+
- bash: ./build.sh
102+
workingDirectory: ./tests/script-runner/
103+
displayName: 'Run integration tests'
104+
- publish: $(Build.SourcesDirectory)/BuildArtifacts/TestResults/Integration
105+
artifact: Integration Tests macOS 12 (.NET Core tool)
106+
displayName: 'Publish generated reports as build artifact'
107+
# Integration Tests Ubuntu 18.04 (.NET Core tool)
108+
- job: Test_Ubuntu_18_04_DotNetCoreTool
109+
displayName: Integration Tests Ubuntu 18.04 (.NET Core tool)
110+
dependsOn: Build
30111
pool:
31112
vmImage: 'ubuntu-18.04'
32113
steps:
33-
- bash: |
34-
./build.sh --target=Buildserver
35-
displayName: 'Cake Build'
114+
- download: current
115+
artifact: NuGet Package
116+
displayName: 'Download build artifact'
117+
- task: CopyFiles@2
118+
inputs:
119+
sourceFolder: $(Pipeline.Workspace)/NuGet Package
120+
targetFolder: $(Build.SourcesDirectory)/BuildArtifacts/Packages/NuGet
121+
displayName: 'Copy build artifact for test run'
122+
- bash: ./build.sh
123+
workingDirectory: ./tests/script-runner/
124+
displayName: 'Run integration tests'
125+
- publish: $(Build.SourcesDirectory)/BuildArtifacts/TestResults/Integration
126+
artifact: Integration Tests Ubuntu 18.04 (.NET Core tool)
127+
displayName: 'Publish generated reports as build artifact'
128+
# Integration Tests Ubuntu 20.04 (.NET Core tool)
129+
- job: Test_Ubuntu_20_04_DotNetCoreTool
130+
displayName: Integration Tests Ubuntu 20.04 (.NET Core tool)
131+
dependsOn: Build
132+
pool:
133+
vmImage: 'ubuntu-20.04'
134+
steps:
135+
- download: current
136+
artifact: NuGet Package
137+
displayName: 'Download build artifact'
138+
- task: CopyFiles@2
139+
inputs:
140+
sourceFolder: $(Pipeline.Workspace)/NuGet Package
141+
targetFolder: $(Build.SourcesDirectory)/BuildArtifacts/Packages/NuGet
142+
displayName: 'Copy build artifact for test run'
143+
- bash: ./build.sh
144+
workingDirectory: ./tests/script-runner/
145+
displayName: 'Run integration tests'
146+
- publish: $(Build.SourcesDirectory)/BuildArtifacts/TestResults/Integration
147+
artifact: Integration Tests Ubuntu 20.04 (.NET Core tool)
148+
displayName: 'Publish generated reports as build artifact'

recipe.cake

Lines changed: 0 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ BuildParameters.SetParameters(
1616
appVeyorAccountName: "cakecontrib",
1717
shouldRunCoveralls: false, // Disabled because it's currently failing
1818
shouldGenerateDocumentation: false,
19-
shouldRunIntegrationTests: true,
2019
integrationTestScriptPath: "./tests/integration/tests.cake");
2120

2221
BuildParameters.PrintParameters(Context);
@@ -27,35 +26,6 @@ ToolSettings.SetToolSettings(
2726
testCoverageExcludeByAttribute: "*.ExcludeFromCodeCoverage*",
2827
testCoverageExcludeByFile: "*/*Designer.cs;*/*.g.cs;*/*.g.i.cs");
2928

30-
//*************************************************************************************************
31-
// Extensions
32-
//*************************************************************************************************
33-
34-
Task("Prepare-Integration-Tests")
35-
.IsDependentOn("Create-NuGet-Packages")
36-
.Does<BuildVersion>((context, buildVersion) =>
37-
{
38-
// Clean addin directory
39-
var addinDir = MakeAbsolute(Directory("./tools/Addins/" + BuildParameters.RepositoryName));
40-
if (DirectoryExists(addinDir))
41-
{
42-
DeleteDirectory(addinDir, new DeleteDirectorySettings {
43-
Recursive = true,
44-
Force = true
45-
});
46-
}
47-
48-
// Unzip package from current build into addin directory
49-
var packagePath =
50-
BuildParameters.Paths.Directories.NuGetPackages.CombineWithFilePath("Cake.Issues.GitRepository." + buildVersion.SemVersion + ".nupkg");
51-
Unzip(packagePath, addinDir);
52-
});
53-
54-
Task("Buildserver")
55-
.IsDependentOn("Run-Integration-Tests");
56-
57-
BuildParameters.Tasks.IntegrationTestTask.IsDependentOn("Prepare-Integration-Tests");
58-
5929
//*************************************************************************************************
6030
// Execution
6131
//*************************************************************************************************
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
{
2+
"version": 1,
3+
"isRoot": true,
4+
"tools": {
5+
"cake.tool": {
6+
"version": "2.0.0",
7+
"commands": [
8+
"dotnet-cake"
9+
]
10+
}
11+
}
12+
}

tests/script-runner/build.ps1

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
$ErrorActionPreference = 'Stop'
2+
3+
$SCRIPT_NAME = "tests.cake"
4+
5+
Write-Host "Restoring .NET Core tools"
6+
dotnet tool restore
7+
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
8+
9+
Write-Host "Bootstrapping Cake"
10+
dotnet cake $SCRIPT_NAME --bootstrap
11+
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
12+
13+
Write-Host "Running Build"
14+
dotnet cake $SCRIPT_NAME @args
15+
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }

tests/script-runner/build.sh

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
#!/bin/bash
2+
SCRIPT_NAME="tests.cake"
3+
4+
echo "Restoring .NET Core tools"
5+
dotnet tool restore
6+
7+
echo "Bootstrapping Cake"
8+
dotnet cake $SCRIPT_NAME --bootstrap
9+
10+
echo "Running Build"
11+
dotnet cake $SCRIPT_NAME "$@"

tests/script-runner/nuget.config

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<configuration>
3+
<packageSources>
4+
<clear />
5+
<add key="Integration" value="../../BuildArtifacts/Packages/NuGet" />
6+
<add key="NuGet.org" value="https://api.nuget.org/v3/index.json" />
7+
</packageSources>
8+
<disabledPackageSources>
9+
<clear />
10+
</disabledPackageSources>
11+
</configuration>
File renamed without changes.

tests/integration/tests.cake renamed to tests/script-runner/tests.cake

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
#addin nuget:?package=Cake.Issues&prerelease
2-
#addin nuget:?package=Cake.Issues.Reporting&prerelease
3-
#addin nuget:?package=Cake.Issues.Reporting.Generic&prerelease
4-
#reference "../../tools/Addins/Cake.Issues.GitRepository/lib/netstandard2.0/Cake.Issues.GitRepository.dll"
1+
#addin Cake.Issues&prerelease
2+
#addin Cake.Issues.Reporting&prerelease
3+
#addin Cake.Issues.Reporting.Generic&prerelease
4+
#addin Cake.Issues.GitRepository&prerelease
55

66
//////////////////////////////////////////////////
77
// ARGUMENTS

0 commit comments

Comments
 (0)