
* Add support for using --with-packages with smoke-tests. * Use a better variable name for custom packages directory. * Swap conditions so we don't have to delete the archive directory. Fixes https://github.com/dotnet/source-build/issues/2900. * Update src/SourceBuild/tarball/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/DotNetHelper.cs Co-authored-by: Michael Simons <msimons@microsoft.com> * Address review feedback. Co-authored-by: Michael Simons <msimons@microsoft.com> Co-authored-by: Michael Simons <msimons@microsoft.com>
201 lines
9.4 KiB
XML
201 lines
9.4 KiB
XML
<Project>
|
|
<Import Project="Sdk.props" Sdk="Microsoft.NET.Sdk" />
|
|
|
|
<UsingTask AssemblyFile="$(LeakDetectionTasksAssembly)" TaskName="CheckForPoison" />
|
|
<UsingTask AssemblyFile="$(XPlatSourceBuildTasksAssembly)" TaskName="WriteUsageBurndownData" />
|
|
<UsingTask AssemblyFile="$(XPlatSourceBuildTasksAssembly)" TaskName="ReplaceTextInFile" />
|
|
<UsingTask AssemblyFile="$(XPlatSourceBuildTasksAssembly)" TaskName="DownloadFileSB" />
|
|
|
|
<Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" />
|
|
|
|
<Target Name="Build" DependsOnTargets="PrepareOutput;InitBuild">
|
|
<Message Text="Build Environment: $(Platform) $(Configuration) $(TargetOS) $(TargetRid)" />
|
|
|
|
<MSBuild Projects="repos\$(RootRepo).proj" Targets="Build" BuildInParallel="$(BuildInParallel)" StopOnFirstFailure="true" />
|
|
</Target>
|
|
|
|
<Target Name="RunRepoTests" DependsOnTargets="PrepareOutput;InitBuild">
|
|
<Message Text="Build Environment: $(Platform) $(Configuration) $(TargetOS) $(TargetRid)" />
|
|
|
|
<MSBuild Projects="repos\$(RootRepoTests).proj" Targets="Build" Properties="PrepForTests=true;SkipEnsurePackagesCreated=true" BuildInParallel="$(BuildInParallel)" StopOnFirstFailure="true" />
|
|
<MSBuild Projects="repos\$(RootRepoTests).proj" Targets="Build" Properties="RunTests=true;SkipEnsurePackagesCreated=true" BuildInParallel="$(BuildInParallel)" StopOnFirstFailure="true" />
|
|
</Target>
|
|
|
|
<Target Name="PrepareOutput">
|
|
<MakeDir Directories="$(OutputPath)" />
|
|
<MakeDir Directories="$(LoggingDir)" />
|
|
<MakeDir Directories="$(GitInfoOutputDir)" />
|
|
<MakeDir Directories="$(IntermediatePath)" />
|
|
<MakeDir Directories="$(SourceBuiltBlobFeedDir)" />
|
|
<MakeDir Directories="$(SourceBuiltPackagesPath)" />
|
|
<MakeDir Directories="$(SourceBuiltAssetsDir)" />
|
|
<MakeDir Directories="$(LocalBlobStorageRoot)" />
|
|
<MakeDir Directories="$(MSBuildDebugPathTargetDir)" />
|
|
<MakeDir Directories="$(RoslynDebugPathTargetDir)" />
|
|
<MakeDir Directories="$(AspNetRazorBuildServerLogDir)" />
|
|
</Target>
|
|
|
|
<Target Name="InitBuild">
|
|
<MSBuild Projects="tools-local/init-build.proj" />
|
|
</Target>
|
|
|
|
<Target Name="Clean">
|
|
<RemoveDir Directories="$(BaseOutputPath)" />
|
|
</Target>
|
|
|
|
<!-- After building, generate a prebuilt usage report. -->
|
|
<Target Name="ReportPrebuiltUsage"
|
|
AfterTargets="Build"
|
|
Condition="'$(SkipReportPrebuiltUsage)' != 'true'">
|
|
<MSBuild Projects="repos\$(RootRepo).proj" Targets="WritePrebuiltUsageData;ReportPrebuiltUsage" />
|
|
</Target>
|
|
|
|
<!--
|
|
Dev scenario: rewrite a prebuilt-report. This makes it easy to add data to an existing
|
|
prebuilt report without performing another full build. This doesn't reevalutate which packages
|
|
are prebuilts or search the projects: it uses the existing usage.xml file to generate report
|
|
XMLs based on the info put in artifacts/.
|
|
-->
|
|
<Target Name="RewritePrebuiltUsageReport">
|
|
<MSBuild Projects="repos\$(RootRepo).proj" Targets="ReportPrebuiltUsage" />
|
|
</Target>
|
|
|
|
<Target Name="ReportPoisonUsage"
|
|
AfterTargets="Build"
|
|
Condition="'$(EnablePoison)' == 'true'"
|
|
Inputs="$(MSBuildProjectFullPath)"
|
|
Outputs="$(CompletedSemaphorePath)ReportPoisonUsage.complete" >
|
|
<ItemGroup>
|
|
<FinalCliTarball Include="$(SourceBuiltTarBallPath)**/*$(TarBallExtension)" />
|
|
</ItemGroup>
|
|
|
|
<Message Importance="High" Text="[$([System.DateTime]::Now.ToString('HH:mm:ss.ff'))] Checking @(FinalCliTarball) for poisoned files." />
|
|
|
|
<CheckForPoison FilesToCheck="@(FinalCliTarball)"
|
|
HashCatalogFilePath="$(PoisonReportDataFile)"
|
|
MarkerFileName="$(PoisonMarkerFile)"
|
|
PoisonReportOutputFilePath="$(PoisonUsageReportFile)" />
|
|
|
|
<WriteLinesToFile File="$(CompletedSemaphorePath)ReportPoisonUsage.complete" Overwrite="true" />
|
|
<Message Importance="High" Text="[$([System.DateTime]::Now.ToString('HH:mm:ss.ff'))] Done checking for poison." />
|
|
</Target>
|
|
|
|
<Target Name="GeneratePrebuiltBurndownData"
|
|
Inputs="$(MSBuildProjectFullPath)"
|
|
Outputs="$(CompletedSemaphorePath)GeneratePrebuiltBurndownData.complete" >
|
|
<WriteUsageBurndownData RootDirectory="$(ProjectDir)"
|
|
PrebuiltBaselineFile="$(BaselineDataFile)"
|
|
OutputFilePath="$(PrebuiltBurndownDataFile)" />
|
|
|
|
<WriteLinesToFile File="$(CompletedSemaphorePath)GeneratePrebuiltBurndownData.complete" Overwrite="true" />
|
|
</Target>
|
|
|
|
<Target Name="RunSmokeTest">
|
|
<ItemGroup>
|
|
<SdkTarballItem Include="$(SourceBuiltTarBallPath)**/dotnet-sdk*$(TarBallExtension)" />
|
|
</ItemGroup>
|
|
|
|
<PropertyGroup>
|
|
<CustomTestEnvVars Condition="'$(EnablePoison)' == 'true'">SMOKE_TESTS_POISON_REPORT_PATH=$(PoisonUsageReportFile);</CustomTestEnvVars>
|
|
<SdkTarballPath>%(SdkTarballItem.Identity)</SdkTarballPath>
|
|
<SmokeTestConsoleVerbosity Condition="'$(SmokeTestConsoleVerbosity)' == ''">normal</SmokeTestConsoleVerbosity>
|
|
</PropertyGroup>
|
|
|
|
<!-- Multiple loggers are specified so that results are captured in trx and pipelines can fail with AzDO pipeline warnings -->
|
|
<Exec Command="$(DotnetToolCommand) test $(SmokeTestsDir) --logger:trx --logger:'console;verbosity=$(SmokeTestConsoleVerbosity)' -c $(Configuration)"
|
|
EnvironmentVariables="
|
|
SMOKE_TESTS_SDK_TARBALL_PATH=$(SdkTarballPath);
|
|
SMOKE_TESTS_TARGET_RID=$(TargetRid);
|
|
SMOKE_TESTS_PORTABLE_RID=$(PortableRid);
|
|
SMOKE_TESTS_CUSTOM_PACKAGES_PATH=$(CustomSourceBuiltPackagesPath);
|
|
$(CustomTestEnvVars)" />
|
|
</Target>
|
|
|
|
<Target Name="CreateSmokeTestPrereqsTarball"
|
|
AfterTargets="RunSmokeTest"
|
|
Condition="'$(SkipSmokeTestPrereqsTarballCreation)' != 'true'"
|
|
DependsOnTargets="
|
|
CheckIfCreateSmokeTestPrereqsExistToPack;
|
|
CreateCreateSmokeTestPrereqsTarballIfPrereqsExist"/>
|
|
|
|
<Target Name="CheckIfCreateSmokeTestPrereqsExistToPack">
|
|
<PropertyGroup>
|
|
<SmokeTestsArtifactsDir>$(SmokeTestsDir)bin/$(Configuration)/net6.0/</SmokeTestsArtifactsDir>
|
|
<SmokeTestsPackagesDir>$(SmokeTestsArtifactsDir)packages/</SmokeTestsPackagesDir>
|
|
</PropertyGroup>
|
|
|
|
<ItemGroup>
|
|
<SmokeTestsPrereqs Include="$(SmokeTestsPackagesDir)**/*.nupkg" />
|
|
</ItemGroup>
|
|
|
|
<Message Text="Found @(SmokeTestsPrereqs->Count()) prereqs in '$(SmokeTestsPackagesDir)'." Importance="High" />
|
|
</Target>
|
|
|
|
<Target Name="CreateCreateSmokeTestPrereqsTarballIfPrereqsExist"
|
|
Condition="'@(SmokeTestsPrereqs->Count())' != '0'">
|
|
<PropertyGroup>
|
|
<SmokeTestPrereqsTarballName>$(OutputPath)dotnet-smoke-test-prereqs.$(installerOutputPackageVersion).tar.gz</SmokeTestPrereqsTarballName>
|
|
<SmokeTestsPrereqPackagesDir>$(SmokeTestsArtifactsDir)prereq-packages/</SmokeTestsPrereqPackagesDir>
|
|
</PropertyGroup>
|
|
|
|
<Copy SourceFiles="@(SmokeTestsPrereqs)"
|
|
DestinationFolder="$(SmokeTestsPrereqPackagesDir)" />
|
|
|
|
<Exec Command="tar --numeric-owner -czf $(SmokeTestPrereqsTarballName) ."
|
|
WorkingDirectory="$(SmokeTestsPrereqPackagesDir)"/>
|
|
|
|
<Message Importance="High" Text="Packaged smoke-test prereqs in '$(SmokeTestPrereqsTarballName)'" />
|
|
</Target>
|
|
|
|
<UsingTask AssemblyFile="$(XPlatSourceBuildTasksAssembly)" TaskName="UploadToAzure" />
|
|
|
|
<Target Name="PublishPrebuiltReportData">
|
|
<Error Text="RelativeBlobPath must be set to a non-empty string." Condition="'$(RelativeBlobPath)' == ''" />
|
|
<Error Text="ContainerName must be set to a non-empty string." Condition="'$(ContainerName)' == ''" />
|
|
<Error Text="AzureAccountName must be set to a non-empty string." Condition="'$(AzureAccountName)' == ''" />
|
|
<Error Text="AzureAccessToken must be set to a non-empty string." Condition="'$(AzureAccessToken)' == ''" />
|
|
|
|
<ItemGroup>
|
|
<ItemsToPublish Include="$(PackageReportDir)*.xml" />
|
|
<ItemsToPublish Include="$(PackageReportDir)*.csv" />
|
|
<ItemsToPublish>
|
|
<RelativeBlobPath>$(RelativeBlobPath)/%(Filename)%(Extension)</RelativeBlobPath>
|
|
</ItemsToPublish>
|
|
</ItemGroup>
|
|
|
|
<Message Text="Uploading files to '$(AzureAccountName)' blob storage at $(ContainerName)/$(RelativeBlobPath)" />
|
|
|
|
<UploadToAzure AccountName="$(AzureAccountName)"
|
|
AccountKey="$(AzureAccessToken)"
|
|
ContainerName="$(ContainerName)"
|
|
Items="@(ItemsToPublish)"
|
|
Overwrite="true" />
|
|
</Target>
|
|
|
|
<Target Name="CreatePrebuiltsTarball"
|
|
AfterTargets="Build"
|
|
DependsOnTargets="
|
|
CheckIfPrebuiltsExistToPack;
|
|
CreatePrebuiltsTarballIfPrebuiltsExist"/>
|
|
|
|
<Target Name="CheckIfPrebuiltsExistToPack">
|
|
<!-- Directory existence doesn't mean there are files inside. Use a pattern to find files. -->
|
|
<ItemGroup>
|
|
<PrebuiltFile Include="$(ResultingPrebuiltPackagesDir)**" />
|
|
</ItemGroup>
|
|
|
|
<Message Text="Found @(PrebuiltFile->Count()) files in prebuilt packages dir." Importance="High" />
|
|
</Target>
|
|
|
|
<Target Name="CreatePrebuiltsTarballIfPrebuiltsExist"
|
|
Condition="'@(PrebuiltFile->Count())' != '0'">
|
|
<PropertyGroup>
|
|
<TarballFilePath>$(OutputPath)$(SourceBuiltPrebuiltsTarballName).$(installerOutputPackageVersion).$(BuildArchitecture).tar.gz</TarballFilePath>
|
|
<TarballWorkingDir>$(ResultingPrebuiltPackagesDir)</TarballWorkingDir>
|
|
</PropertyGroup>
|
|
|
|
<Exec Command="tar --numeric-owner -zcf $(TarballFilePath) -C $(TarballWorkingDir) ." />
|
|
|
|
<Message Text="Tarball '$(TarballFilePath)' was successfully created from '$(TarballWorkingDir)'" Importance="High" />
|
|
</Target>
|
|
</Project>
|