Misc build changes
For injestion into a composed build, I'm adding some minor tweaks to our build system: - Teach DownloadFile task how to consume file:// URLs so we can pass around artifacts using local sources. - Add `SkipBuildingInstallers`, an MSBuild property that can be set to true when installers (pkgs, msis, debs, rpms and the like) do not need to be built. - Add `IncludeAdditionalSharedFrameworks`, an MSBuild property that can be set to prevent additional shared frameworks (i.e. shared frameworks that the CLI does not use at runtime) from being downloaded and included in our payload. - Add `IncludeNuGetPackageArchive` an MSBuild property that can be set to prevent the lzma archive containing all the nupkgs we restore on first run from being included in the final output. - Provide a way to change the Uri use for blob storage (so the composed build and point at a local folder that looks like blob storage to pick up artifacts from).
This commit is contained in:
parent
a6bc22e499
commit
47b75cfa12
6 changed files with 44 additions and 26 deletions
|
@ -2,5 +2,8 @@
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<CLITargets Condition=" '$(CLITargets)' == '' ">Prepare;Compile;Test;Package;Publish</CLITargets>
|
<CLITargets Condition=" '$(CLITargets)' == '' ">Prepare;Compile;Test;Package;Publish</CLITargets>
|
||||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
|
<IncludeAdditionalSharedFrameworks Condition=" '$(IncludeAdditionalSharedFrameworks)' == '' ">true</IncludeAdditionalSharedFrameworks>
|
||||||
|
<IncludeNuGetPackageArchive Condition=" '$(IncludeNuGetPackageArchive)' == '' ">true</IncludeNuGetPackageArchive>
|
||||||
|
<SkipBuildingInstallers Condition=" '$(SkipBuildingInstallers)' == '' ">false</SkipBuildingInstallers>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
@ -7,7 +7,8 @@
|
||||||
<Import Project="$(MSBuildThisFileDirectory)/package/Microsoft.DotNet.Cli.Installer.MSI.targets" />
|
<Import Project="$(MSBuildThisFileDirectory)/package/Microsoft.DotNet.Cli.Installer.MSI.targets" />
|
||||||
<Import Project="$(MSBuildThisFileDirectory)/package/Microsoft.DotNet.Cli.Installer.PKG.targets" />
|
<Import Project="$(MSBuildThisFileDirectory)/package/Microsoft.DotNet.Cli.Installer.PKG.targets" />
|
||||||
|
|
||||||
<Target Name="GenerateInstallers"
|
<Target Name="GenerateInstallers"
|
||||||
|
Condition=" '$(SkipBuildingInstallers)' != 'true' "
|
||||||
DependsOnTargets="Init;Layout;GeneratePkgs;GenerateDebs;GenerateMsis" />
|
DependsOnTargets="Init;Layout;GeneratePkgs;GenerateDebs;GenerateMsis" />
|
||||||
|
|
||||||
<Target Name="Package"
|
<Target Name="Package"
|
||||||
|
|
|
@ -35,7 +35,7 @@
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<!-- Additional Shared Framework to be installed -->
|
<!-- Additional Shared Framework to be installed -->
|
||||||
<PropertyGroup>
|
<PropertyGroup Condition=" '$(IncludeAdditionalSharedFrameworks)' == 'true' ">
|
||||||
<AdditionalCoreSetupChannel>preview</AdditionalCoreSetupChannel>
|
<AdditionalCoreSetupChannel>preview</AdditionalCoreSetupChannel>
|
||||||
<AdditionalSharedFrameworkVersion>1.0.3</AdditionalSharedFrameworkVersion>
|
<AdditionalSharedFrameworkVersion>1.0.3</AdditionalSharedFrameworkVersion>
|
||||||
<AdditionalSharedHostVersion>1.0.1</AdditionalSharedHostVersion>
|
<AdditionalSharedHostVersion>1.0.1</AdditionalSharedHostVersion>
|
||||||
|
@ -61,7 +61,7 @@
|
||||||
|
|
||||||
<Target Name="SetupDownloadHostAndSharedFxInputsOutputs" DependsOnTargets="Init">
|
<Target Name="SetupDownloadHostAndSharedFxInputsOutputs" DependsOnTargets="Init">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<CoreSetupBlobRootUrl>https://dotnetcli.azureedge.net/dotnet/</CoreSetupBlobRootUrl>
|
<CoreSetupBlobRootUrl Condition="'$(CoreSetupBlobRootUrl)' == ''">https://dotnetcli.azureedge.net/dotnet/</CoreSetupBlobRootUrl>
|
||||||
<CoreSetupBlobRootUrlWithChannel>$(CoreSetupBlobRootUrl)$(CoreSetupChannel)</CoreSetupBlobRootUrlWithChannel>
|
<CoreSetupBlobRootUrlWithChannel>$(CoreSetupBlobRootUrl)$(CoreSetupChannel)</CoreSetupBlobRootUrlWithChannel>
|
||||||
<SharedFrameworkArchiveBlobRootUrl>$(CoreSetupBlobRootUrlWithChannel)/Binaries/$(SharedFrameworkVersion)</SharedFrameworkArchiveBlobRootUrl>
|
<SharedFrameworkArchiveBlobRootUrl>$(CoreSetupBlobRootUrlWithChannel)/Binaries/$(SharedFrameworkVersion)</SharedFrameworkArchiveBlobRootUrl>
|
||||||
<CoreSetupInstallerBlobRootUrl>$(CoreSetupBlobRootUrlWithChannel)/Installers</CoreSetupInstallerBlobRootUrl>
|
<CoreSetupInstallerBlobRootUrl>$(CoreSetupBlobRootUrlWithChannel)/Installers</CoreSetupInstallerBlobRootUrl>
|
||||||
|
@ -78,21 +78,21 @@
|
||||||
</_DownloadAndExtractItem>
|
</_DownloadAndExtractItem>
|
||||||
|
|
||||||
<_DownloadAndExtractItem Include="DownloadedSharedFrameworkInstallerFile"
|
<_DownloadAndExtractItem Include="DownloadedSharedFrameworkInstallerFile"
|
||||||
Condition="!Exists('$(DownloadedSharedFrameworkInstallerFile)') And '$(InstallerExtension)' != ''">
|
Condition="'$(SkipBuildingInstallers)' != 'true' And !Exists('$(DownloadedSharedFrameworkInstallerFile)') And '$(InstallerExtension)' != ''">
|
||||||
<Url>$(CoreSetupInstallerBlobRootUrl)/$(SharedFrameworkVersion)/$(DownloadedSharedFrameworkInstallerFileName)</Url>
|
<Url>$(CoreSetupInstallerBlobRootUrl)/$(SharedFrameworkVersion)/$(DownloadedSharedFrameworkInstallerFileName)</Url>
|
||||||
<DownloadFileName>$(DownloadedSharedFrameworkInstallerFile)</DownloadFileName>
|
<DownloadFileName>$(DownloadedSharedFrameworkInstallerFile)</DownloadFileName>
|
||||||
<ExtractDestination></ExtractDestination>
|
<ExtractDestination></ExtractDestination>
|
||||||
</_DownloadAndExtractItem>
|
</_DownloadAndExtractItem>
|
||||||
|
|
||||||
<_DownloadAndExtractItem Include="DownloadedSharedHostInstallerFile"
|
<_DownloadAndExtractItem Include="DownloadedSharedHostInstallerFile"
|
||||||
Condition="!Exists('$(DownloadedSharedHostInstallerFile)') And '$(InstallerExtension)' != ''">
|
Condition="'$(SkipBuildingInstallers)' != 'true' And !Exists('$(DownloadedSharedHostInstallerFile)') And '$(InstallerExtension)' != ''">
|
||||||
<Url>$(CoreSetupInstallerBlobRootUrl)/$(SharedHostVersion)/$(DownloadedSharedHostInstallerFileName)</Url>
|
<Url>$(CoreSetupInstallerBlobRootUrl)/$(SharedHostVersion)/$(DownloadedSharedHostInstallerFileName)</Url>
|
||||||
<DownloadFileName>$(DownloadedSharedHostInstallerFile)</DownloadFileName>
|
<DownloadFileName>$(DownloadedSharedHostInstallerFile)</DownloadFileName>
|
||||||
<ExtractDestintation></ExtractDestintation>
|
<ExtractDestintation></ExtractDestintation>
|
||||||
</_DownloadAndExtractItem>
|
</_DownloadAndExtractItem>
|
||||||
|
|
||||||
<_DownloadAndExtractItem Include="DownloadedHostFxrInstallerFile"
|
<_DownloadAndExtractItem Include="DownloadedHostFxrInstallerFile"
|
||||||
Condition="!Exists('$(DownloadedHostFxrInstallerFile)') And '$(InstallerExtension)' != ''">
|
Condition="'$(SkipBuildingInstallers)' != 'true' And !Exists('$(DownloadedHostFxrInstallerFile)') And '$(InstallerExtension)' != ''">
|
||||||
<Url>$(CoreSetupInstallerBlobRootUrl)/$(HostFxrVersion)/$(DownloadedHostFxrInstallerFileName)</Url>
|
<Url>$(CoreSetupInstallerBlobRootUrl)/$(HostFxrVersion)/$(DownloadedHostFxrInstallerFileName)</Url>
|
||||||
<DownloadFileName>$(DownloadedHostFxrInstallerFile)</DownloadFileName>
|
<DownloadFileName>$(DownloadedHostFxrInstallerFile)</DownloadFileName>
|
||||||
<ExtractDestintation></ExtractDestintation>
|
<ExtractDestintation></ExtractDestintation>
|
||||||
|
@ -100,7 +100,7 @@
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<!-- Additional Shared Framework to be installed -->
|
<!-- Additional Shared Framework to be installed -->
|
||||||
<PropertyGroup>
|
<PropertyGroup Condition=" '$(IncludeAdditionalSharedFrameworks)' != 'false' ">
|
||||||
<AdditionalCoreSetupBlobRootUrlWithChannel>$(CoreSetupBlobRootUrl)$(AdditionalCoreSetupChannel)</AdditionalCoreSetupBlobRootUrlWithChannel>
|
<AdditionalCoreSetupBlobRootUrlWithChannel>$(CoreSetupBlobRootUrl)$(AdditionalCoreSetupChannel)</AdditionalCoreSetupBlobRootUrlWithChannel>
|
||||||
<AdditionalSharedFrameworkArchiveBlobRootUrl>$(AdditionalCoreSetupBlobRootUrlWithChannel)/Binaries/$(AdditionalSharedFrameworkVersion)</AdditionalSharedFrameworkArchiveBlobRootUrl>
|
<AdditionalSharedFrameworkArchiveBlobRootUrl>$(AdditionalCoreSetupBlobRootUrlWithChannel)/Binaries/$(AdditionalSharedFrameworkVersion)</AdditionalSharedFrameworkArchiveBlobRootUrl>
|
||||||
<AdditionalCoreSetupInstallerBlobRootUrl>$(AdditionalCoreSetupBlobRootUrlWithChannel)/Installers</AdditionalCoreSetupInstallerBlobRootUrl>
|
<AdditionalCoreSetupInstallerBlobRootUrl>$(AdditionalCoreSetupBlobRootUrlWithChannel)/Installers</AdditionalCoreSetupInstallerBlobRootUrl>
|
||||||
|
@ -108,7 +108,7 @@
|
||||||
<AdditionalCombinedSharedHostAndFrameworkArchive>$(AdditionalCoreSetupDownloadDirectory)/combinedSharedHostAndFrameworkArchive</AdditionalCombinedSharedHostAndFrameworkArchive>
|
<AdditionalCombinedSharedHostAndFrameworkArchive>$(AdditionalCoreSetupDownloadDirectory)/combinedSharedHostAndFrameworkArchive</AdditionalCombinedSharedHostAndFrameworkArchive>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup Condition=" '$(IncludeAdditionalSharedFrameworks)' != 'false' ">
|
||||||
<_DownloadAndExtractItem Include="AdditionalCombinedSharedHostAndFrameworkArchive"
|
<_DownloadAndExtractItem Include="AdditionalCombinedSharedHostAndFrameworkArchive"
|
||||||
Condition="!Exists('$(AdditionalCombinedSharedHostAndFrameworkArchive)')">
|
Condition="!Exists('$(AdditionalCombinedSharedHostAndFrameworkArchive)')">
|
||||||
<Url>$(AdditionalSharedFrameworkArchiveBlobRootUrl)/$(AdditionalCombinedFrameworkHostCompressedFileName)</Url>
|
<Url>$(AdditionalSharedFrameworkArchiveBlobRootUrl)/$(AdditionalCombinedFrameworkHostCompressedFileName)</Url>
|
||||||
|
@ -119,21 +119,21 @@
|
||||||
</_DownloadAndExtractItem>
|
</_DownloadAndExtractItem>
|
||||||
|
|
||||||
<_DownloadAndExtractItem Include="AdditionalDownloadedSharedFrameworkInstallerFile"
|
<_DownloadAndExtractItem Include="AdditionalDownloadedSharedFrameworkInstallerFile"
|
||||||
Condition="!Exists('$(AdditionalDownloadedSharedFrameworkInstallerFile)') And '$(InstallerExtension)' != ''">
|
Condition="'$(SkipBuildingInstallers)' != 'true' And !Exists('$(AdditionalDownloadedSharedFrameworkInstallerFile)') And '$(InstallerExtension)' != ''">
|
||||||
<Url>$(AdditionalCoreSetupInstallerBlobRootUrl)/$(AdditionalSharedFrameworkVersion)/$(AdditionalDownloadedSharedFrameworkInstallerFileName)</Url>
|
<Url>$(AdditionalCoreSetupInstallerBlobRootUrl)/$(AdditionalSharedFrameworkVersion)/$(AdditionalDownloadedSharedFrameworkInstallerFileName)</Url>
|
||||||
<DownloadFileName>$(AdditionalDownloadedSharedFrameworkInstallerFile)</DownloadFileName>
|
<DownloadFileName>$(AdditionalDownloadedSharedFrameworkInstallerFile)</DownloadFileName>
|
||||||
<ExtractDestination></ExtractDestination>
|
<ExtractDestination></ExtractDestination>
|
||||||
</_DownloadAndExtractItem>
|
</_DownloadAndExtractItem>
|
||||||
|
|
||||||
<_DownloadAndExtractItem Include="AdditionalDownloadedSharedHostInstallerFile"
|
<_DownloadAndExtractItem Include="AdditionalDownloadedSharedHostInstallerFile"
|
||||||
Condition="!Exists('$(AdditionalDownloadedSharedHostInstallerFile)') And '$(InstallerExtension)' != ''">
|
Condition="'$(SkipBuildingInstallers)' != 'true' And !Exists('$(AdditionalDownloadedSharedHostInstallerFile)') And '$(InstallerExtension)' != ''">
|
||||||
<Url>$(AdditionalCoreSetupInstallerBlobRootUrl)/$(AdditionalSharedHostVersion)/$(AdditionalDownloadedSharedHostInstallerFileName)</Url>
|
<Url>$(AdditionalCoreSetupInstallerBlobRootUrl)/$(AdditionalSharedHostVersion)/$(AdditionalDownloadedSharedHostInstallerFileName)</Url>
|
||||||
<DownloadFileName>$(AdditionalDownloadedSharedHostInstallerFile)</DownloadFileName>
|
<DownloadFileName>$(AdditionalDownloadedSharedHostInstallerFile)</DownloadFileName>
|
||||||
<ExtractDestintation></ExtractDestintation>
|
<ExtractDestintation></ExtractDestintation>
|
||||||
</_DownloadAndExtractItem>
|
</_DownloadAndExtractItem>
|
||||||
|
|
||||||
<_DownloadAndExtractItem Include="AdditionalDownloadedHostFxrInstallerFile"
|
<_DownloadAndExtractItem Include="AdditionalDownloadedHostFxrInstallerFile"
|
||||||
Condition="!Exists('$(AdditionalDownloadedHostFxrInstallerFile)') And '$(InstallerExtension)' != ''">
|
Condition="'$(SkipBuildingInstallers)' != 'true' And !Exists('$(AdditionalDownloadedHostFxrInstallerFile)') And '$(InstallerExtension)' != ''">
|
||||||
<Url>$(AdditionalCoreSetupInstallerBlobRootUrl)/$(AdditionalHostFxrVersion)/$(AdditionalDownloadedHostFxrInstallerFileName)</Url>
|
<Url>$(AdditionalCoreSetupInstallerBlobRootUrl)/$(AdditionalHostFxrVersion)/$(AdditionalDownloadedHostFxrInstallerFileName)</Url>
|
||||||
<DownloadFileName>$(AdditionalDownloadedHostFxrInstallerFile)</DownloadFileName>
|
<DownloadFileName>$(AdditionalDownloadedHostFxrInstallerFile)</DownloadFileName>
|
||||||
<ExtractDestintation></ExtractDestintation>
|
<ExtractDestintation></ExtractDestintation>
|
||||||
|
|
|
@ -6,7 +6,8 @@
|
||||||
GenerateNuGetPackagesArchive;
|
GenerateNuGetPackagesArchive;
|
||||||
UploadNuGetPackagesArchiveToAzure"
|
UploadNuGetPackagesArchiveToAzure"
|
||||||
Inputs="$(IntermediateArchive)"
|
Inputs="$(IntermediateArchive)"
|
||||||
Outputs="$(FinalArchive)">
|
Outputs="$(FinalArchive)"
|
||||||
|
Condition=" '$(IncludeNuGetPackageArchive)' == 'true' ">
|
||||||
<Copy SourceFiles="$(IntermediateArchive)" DestinationFiles="$(FinalArchive)" />
|
<Copy SourceFiles="$(IntermediateArchive)" DestinationFiles="$(FinalArchive)" />
|
||||||
</Target>
|
</Target>
|
||||||
|
|
||||||
|
@ -123,4 +124,4 @@
|
||||||
<NugetPackagesArchiveBlobUrl>$(DotnetBlobRootUrl)/$(NugetPackagesArchiveRelativeBlobUrl)/$(NugetPackagesArchiveName)</NugetPackagesArchiveBlobUrl>
|
<NugetPackagesArchiveBlobUrl>$(DotnetBlobRootUrl)/$(NugetPackagesArchiveRelativeBlobUrl)/$(NugetPackagesArchiveName)</NugetPackagesArchiveBlobUrl>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
</Target>
|
</Target>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
@ -15,12 +15,14 @@
|
||||||
<ZipFileCreateFromDirectory
|
<ZipFileCreateFromDirectory
|
||||||
Condition=" '$(OSName)' == 'win' "
|
Condition=" '$(OSName)' == 'win' "
|
||||||
SourceDirectory="%(GenerateArchivesInputsOutputs.InputDirectory)"
|
SourceDirectory="%(GenerateArchivesInputsOutputs.InputDirectory)"
|
||||||
DestinationArchive="$(GenerateArchivesDestinationArchive)" />
|
DestinationArchive="$(GenerateArchivesDestinationArchive)"
|
||||||
|
OverwriteDestination="true"/>
|
||||||
|
|
||||||
<TarGzFileCreateFromDirectory
|
<TarGzFileCreateFromDirectory
|
||||||
Condition=" '$(OSName)' != 'win' "
|
Condition=" '$(OSName)' != 'win' "
|
||||||
SourceDirectory="%(GenerateArchivesInputsOutputs.InputDirectory)"
|
SourceDirectory="%(GenerateArchivesInputsOutputs.InputDirectory)"
|
||||||
DestinationArchive="$(GenerateArchivesDestinationArchive)" />
|
DestinationArchive="$(GenerateArchivesDestinationArchive)"
|
||||||
|
OverwriteDestination="true"/>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Archives Include="$(GenerateArchivesDestinationArchive)" />
|
<Archives Include="$(GenerateArchivesDestinationArchive)" />
|
||||||
|
|
|
@ -28,23 +28,34 @@ namespace Microsoft.DotNet.Cli.Build
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
Log.LogMessage($"Downloading '{Uri}' to '{DestinationPath}'");
|
const string FileUriProtocol = "file://";
|
||||||
|
|
||||||
using (var httpClient = new HttpClient())
|
if (Uri.StartsWith(FileUriProtocol, StringComparison.Ordinal))
|
||||||
{
|
{
|
||||||
var getTask = httpClient.GetStreamAsync(Uri);
|
var filePath = Uri.Substring(FileUriProtocol.Length);
|
||||||
|
Log.LogMessage($"Copying '{filePath}' to '{DestinationPath}'");
|
||||||
|
File.Copy(filePath, DestinationPath);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Log.LogMessage($"Downloading '{Uri}' to '{DestinationPath}'");
|
||||||
|
|
||||||
try
|
using (var httpClient = new HttpClient())
|
||||||
{
|
{
|
||||||
using (var outStream = File.Create(DestinationPath))
|
var getTask = httpClient.GetStreamAsync(Uri);
|
||||||
|
|
||||||
|
try
|
||||||
{
|
{
|
||||||
getTask.Result.CopyTo(outStream);
|
using (var outStream = File.Create(DestinationPath))
|
||||||
|
{
|
||||||
|
getTask.Result.CopyTo(outStream);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
File.Delete(DestinationPath);
|
||||||
|
throw;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
catch (Exception)
|
|
||||||
{
|
|
||||||
File.Delete(DestinationPath);
|
|
||||||
throw;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue