Skip to content

Commit 14fe731

Browse files
arturcicArtur Stolear
authored andcommitted
GH-1583 - (build) added dotnet tool artifact testing
1 parent 6a0558b commit 14fe731

File tree

6 files changed

+93
-14
lines changed

6 files changed

+93
-14
lines changed

azure-pipelines.yml

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -17,20 +17,26 @@ stages:
1717
steps:
1818
- template: build/stages/build.yml
1919

20-
- stage: Docker
20+
- stage: Test
21+
displayName: 'Artifacts test'
2122
dependsOn: Build
2223
condition: succeeded()
2324
jobs:
24-
- job: Generator
25-
displayName: 'Generate Docker jobs'
26-
pool:
27-
vmImage: windows-2019
28-
steps:
29-
- pwsh: ./src/Docker/docker.ps1 -os windows -variant runtime
30-
name: matrix_Windows
31-
- pwsh: ./src/Docker/docker.ps1 -os linux -variant runtime
32-
name: matrix_Linux
33-
25+
- template: build/stages/generate-job.yml
26+
- template: build/stages/artifacts-test.yml
27+
parameters:
28+
name: Linux
29+
vmImage: 'Ubuntu 16.04'
30+
- template: build/stages/artifacts-test.yml
31+
parameters:
32+
name: Windows
33+
vmImage: 'windows-2019'
34+
35+
- stage: Docker
36+
dependsOn: Test
37+
condition: succeeded()
38+
jobs:
39+
- template: build/stages/generate-job.yml
3440
- template: build/stages/docker.yml
3541
parameters:
3642
name: Linux
@@ -41,11 +47,11 @@ stages:
4147
vmImage: 'windows-2019'
4248

4349
- stage: Publish
44-
dependsOn: Build
50+
dependsOn: Test
4551
condition: succeeded()
4652
jobs:
4753
- job: Publish
4854
pool:
4955
vmImage: windows-2019
5056
steps:
51-
- template: build/stages/publish.yml
57+
- template: build/stages/publish.yml

build.cake

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
#load "./build/utils/utils.cake"
3030

3131
#load "./build/pack.cake"
32+
#load "./build/artifacts-test.cake"
3233
#load "./build/docker.cake"
3334
#load "./build/publish.cake"
3435

build/artifacts-test.cake

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
singleStageRun = !IsEnabled(Context, "ENABLED_MULTI_STAGE_BUILD", false);
2+
3+
Task("Artifacts-DotnetTool-Test")
4+
.WithCriteria<BuildParameters>((context, parameters) => !parameters.IsRunningOnMacOS, "Artifacts-DotnetTool-Test can be tested only on Windows or Linux agents.")
5+
.WithCriteria<BuildParameters>((context, parameters) => parameters.IsRunningOnAzurePipeline, "Artifacts-DotnetTool-Test works only on AzurePipeline.")
6+
.IsDependentOnWhen("Pack-Nuget", singleStageRun)
7+
.Does<BuildParameters>((parameters) =>
8+
{
9+
var currentDir = MakeAbsolute(Directory("."));
10+
var rootDir = parameters.IsDockerForWindows ? "c:/" : "/";
11+
var settings = new DockerContainerRunSettings
12+
{
13+
Rm = true,
14+
Volume = new[]
15+
{
16+
$"{currentDir}:{rootDir}repo",
17+
$"{currentDir}/artifacts/v{parameters.Version.SemVersion}/nuget:{rootDir}nuget"
18+
}
19+
};
20+
21+
foreach(var dockerImage in parameters.Docker.Images)
22+
{
23+
var (os, distro, targetframework) = dockerImage;
24+
var tag = $"gittools/build-images:{distro}-sdk-{targetframework.Replace("netcoreapp", "")}";
25+
Information("Docker tag: {0}", tag);
26+
27+
var version = parameters.Version.NugetVersion;
28+
29+
var cmd = $"dotnet tool install GitVersion.Tool --version {version} --tool-path {rootDir}gitversion --add-source {rootDir}nuget | out-null; ";
30+
cmd += $"{rootDir}gitversion/dotnet-gitversion {rootDir}repo /showvariable FullSemver;";
31+
Information("Docker cmd: {0}", cmd);
32+
33+
DockerTestRun(settings, parameters, tag, "pwsh", cmd);
34+
}
35+
});
36+
37+
Task("Artifacts-Test")
38+
.WithCriteria<BuildParameters>((context, parameters) => !parameters.IsRunningOnMacOS, "Artifacts-Test can be tested only on Windows or Linux agents.")
39+
.WithCriteria<BuildParameters>((context, parameters) => parameters.IsRunningOnAzurePipeline, "Artifacts-Test works only on AzurePipeline.")
40+
.IsDependentOn("Artifacts-DotnetTool-Test");

build/stages/artifacts-test.yml

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
parameters:
2+
name: ''
3+
vmImage: ''
4+
5+
jobs:
6+
- job: Artifacts_Test_${{ parameters.name }}
7+
displayName: 'Artifacts Test ${{ parameters.name }}'
8+
pool:
9+
vmImage: ${{ parameters.vmImage }}
10+
dependsOn: Generator
11+
strategy:
12+
matrix: $[ dependencies['Generator'].outputs['Map_${{ parameters.name }}.dockerConfigs'] ]
13+
steps:
14+
- template: common-steps.yml
15+
- task: DownloadPipelineArtifact@2
16+
displayName: 'Download pipeline artifacts'
17+
inputs:
18+
source: current
19+
path: $(Build.SourcesDirectory)
20+
artifact: artifacts
21+
- script: dotnet cake build.cake --bootstrap && dotnet cake build.cake --target=Artifacts-Test --docker_distro=$(DISTRO) --docker_dotnetversion=$(DOTNET_VERSION)
22+
displayName: 'Docker build'

build/stages/docker.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ jobs:
99
vmImage: ${{ parameters.vmImage }}
1010
dependsOn: Generator
1111
strategy:
12-
matrix: $[ dependencies['Generator'].outputs['matrix_${{ parameters.name }}.dockerConfigs'] ]
12+
matrix: $[ dependencies['Generator'].outputs['Map_${{ parameters.name }}.dockerConfigs'] ]
1313
steps:
1414
- template: common-steps.yml
1515
- task: DownloadPipelineArtifact@2

build/stages/generate-job.yml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
jobs:
2+
- job: Generator
3+
displayName: 'Generate Docker jobs'
4+
pool:
5+
vmImage: windows-2019
6+
steps:
7+
- pwsh: ./src/Docker/docker.ps1 -os windows -variant runtime
8+
name: Map_Windows
9+
- pwsh: ./src/Docker/docker.ps1 -os linux -variant runtime
10+
name: Map_Linux

0 commit comments

Comments
 (0)