| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528 |
- <Project>
- <PropertyGroup>
- <_TemplatesDirectory>$(MSBuildThisFileDirectory)tools\templates\</_TemplatesDirectory>
- <_DockerDir>$(MSBuildThisFileDirectory)tools\docker\</_DockerDir>
- <_PackagingDir>$(MSBuildThisFileDirectory)tools\packaging\</_PackagingDir>
- <_DebToolDir>$(MSBuildThisFileDirectory)tools\dotnet-deb-tool-consumer\</_DebToolDir>
- <_TimestampRSSource>$(RepositoryRoot).deps\Signed\Store\</_TimestampRSSource>
- <_TimestampFreeRSSource>$(RepositoryRoot).deps\Signed\Store-TimestampFree\</_TimestampFreeRSSource>
- <_InstallerSource>$(RepositoryRoot).deps\Installers\</_InstallerSource>
- <_WorkRoot>$(RepositoryRoot).w\</_WorkRoot>
- <_WorkLayoutDir>$(_WorkRoot).l\</_WorkLayoutDir>
- <_WorkOutputDir>$(_WorkRoot).o\</_WorkOutputDir>
- <_DockerRootDirectory>/opt/code/</_DockerRootDirectory>
- <_InstallersOutputDir>$(ArtifactsDir)installers\</_InstallersOutputDir>
- <RSInstallerName>aspnetcore-store</RSInstallerName>
- <HostingInstallerName>dotnet-hosting</HostingInstallerName>
- <RSDebConfigFile>$(_PackagingDir)store_debian_config.json</RSDebConfigFile>
- <HostingDebConfigFile>$(_PackagingDir)hosting_debian_config.json</HostingDebConfigFile>
- <PublicCoreFeedPrefix>https://dotnetcli.blob.core.windows.net/dotnet</PublicCoreFeedPrefix>
- <CoreFeedPrefix Condition="'$(KOREBUILD_DOTNET_FEED_UNCACHED)'!=''">$(KOREBUILD_DOTNET_FEED_UNCACHED)</CoreFeedPrefix>
- <CoreFeedPrefix Condition="'$(CoreFeedPrefix)'==''">$(PublicCoreFeedPrefix)</CoreFeedPrefix>
- <RuntimeStore200LinkPrefix>$(PublicCoreFeedPrefix)/aspnetcore/store/2.0.0-26452/Build.RS.</RuntimeStore200LinkPrefix>
- <RuntimeTargzLink>$(CoreFeedPrefix)/Runtime/$(MicrosoftNETCoreApp20PackageVersion)/dotnet-runtime-$(MicrosoftNETCoreApp20PackageVersion)-linux-x64.tar.gz</RuntimeTargzLink>
- <TimestampRSArchive>$(_TimestampRSSource)aspnetcore-store-$(PackageVersion)-linux-x64.tar.gz</TimestampRSArchive>
- <TimestampFreeRSArchivePrefix>$(_TimestampFreeRSSource)aspnetcore-store-$(PackageVersionNoTimestamp)-</TimestampFreeRSArchivePrefix>
- <TimestampFreeLinuxRSArchive>$(TimestampFreeRSArchivePrefix)linux-x64.tar.gz</TimestampFreeLinuxRSArchive>
- </PropertyGroup>
- <Target Name="BuildInstallers" DependsOnTargets="GenerateTargzs;GenerateRpms;GenerateDebs;GenerateRelabledInstallers" />
- <Target Name="_EnsureInstallerPrerequisites">
- <MakeDir Directories="$(_InstallersOutputDir)" />
- <!-- Check Docker server OS -->
- <Exec Command="docker version -f "{{.Server.Os}}"" StandardOutputImportance="Normal" ConsoleToMSBuild="true">
- <Output TaskParameter="ConsoleOutput" PropertyName="DockerHostOS" />
- </Exec>
- <Error Text="Docker host must be using Linux containers." Condition="'$(DockerHostOS)' != 'linux'"/>
- <Error
- Text="Timestamp linux archive not found. Expected it to exist in $(TimestampRSArchive)."
- Condition="!Exists('$(TimestampRSArchive)')" />
- <Error
- Text="Non-timestamp linux archive not found. Expected it to exist in $(TimestampFreeLinuxRSArchive)."
- Condition="!Exists('$(TimestampFreeLinuxRSArchive)')" />
- <Error
- Text="Non-timestamp osx archive not found. Expected it to exist in $(TimestampFreeRSArchivePrefix)osx-x64.tar.gz."
- Condition="!Exists('$(TimestampFreeRSArchivePrefix)osx-x64.tar.gz')" />
- <Error
- Text="Non-timestamp winx64 archive not found. Expected it to exist in $(TimestampFreeRSArchivePrefix)win7-x64.zip."
- Condition="!Exists('$(TimestampFreeRSArchivePrefix)win7-x64.zip')" />
- <Error
- Text="Non-timestamp winx86 archive not found. Expected it to exist in $(TimestampFreeRSArchivePrefix)win7-x86.zip."
- Condition="!Exists('$(TimestampFreeRSArchivePrefix)win7-x86.zip')" />
- </Target>
- <Target Name="_EnsureInstallerDirectory" >
- <!-- Download dotnet installers -->
- <MakeDir Directories="$(_InstallerSource)" />
- </Target>
- <Target Name="_DownloadInstallers" DependsOnTargets="_EnsureInstallerDirectory">
- <!-- Download dotnet installers -->
- <MakeDir Directories="$(_InstallerSource)" />
- <!--
- Note: KOREBUILD_DOTNET_FEED_CREDENTIAL is intentionally NOT an MSBuild variable.
- MSBuild doesn't to the substitution correctly because the string contains %,
- so we'll let bash do it instead.
- -->
- <Exec Command="curl --fail -sSL "$(RuntimeTargzLink)$KOREBUILD_DOTNET_FEED_CREDENTIAL" -o $(_InstallerSource)dotnet-runtime-$(MicrosoftNETCoreApp20PackageVersion)-linux-x64.tar.gz" />
- <Exec Command="curl --fail -sSL "$(RuntimeStore200LinkPrefix)linux.tar.gz" -o $(_InstallerSource)Build.RS.linux.tar.gz" />
- </Target>
- <Target Name="_GenerateTargz">
- <!-- Clear working directory -->
- <RemoveDir Directories="$(_WorkRoot)" />
- <MakeDir Directories="$(_WorkRoot)" />
- <!-- Create layout: Aspnet Hosting Bundle -->
- <Exec Command="tar -xzf $(RSArchive) -C $(_WorkRoot)" />
- <ItemGroup>
- <Archives Include="$(DependentArchives)" />
- </ItemGroup>
- <Exec Command="tar -xzf %(Archives.Identity) -C $(_WorkRoot)" />
- <!-- Create Aspnet Hosting Bundle tar.gz -->
- <Exec Command="tar -czvf $(_InstallersOutputDir)$(OutputArchiveName) ." WorkingDirectory="$(_WorkRoot)"/>
- </Target>
- <Target Name="_GenerateZip">
- <!-- Clear working directory -->
- <RemoveDir Directories="$(_WorkRoot)" />
- <MakeDir Directories="$(_WorkRoot)" />
- <!-- Create layout -->
- <UnzipArchive File="$(RSArchive)" Destination="$(_WorkRoot)" />
- <ItemGroup>
- <Archives Include="$(DependentArchives)" />
- </ItemGroup>
- <UnzipArchive File="%(Archives.Identity)" Destination="$(_WorkRoot)" />
- <ItemGroup>
- <ArchiveFiles Include="$(_WorkRoot)**\*" />
- </ItemGroup>
- <!-- Create Zip -->
- <ZipArchive File="$(_InstallersOutputDir)$(OutputArchiveName)" SourceFiles="@(ArchiveFiles)" WorkingDirectory="$(_WorkRoot)" Overwrite="true" />
- </Target>
- <Target Name="GenerateTargzs" DependsOnTargets="_EnsureInstallerPrerequisites;_DownloadInstallers">
- <ItemGroup>
- <_DependentArchives Include="$(_InstallerSource)dotnet-runtime-$(MicrosoftNETCoreApp20PackageVersion)-linux-x64.tar.gz" />
- <_DependentArchives Include="$(_InstallerSource)Build.RS.linux.tar.gz" />
- </ItemGroup>
- <PropertyGroup>
- <DependentArchives>@(_DependentArchives)</DependentArchives>
- <HostingArchiveName>$(HostingInstallerName)-$(Version)-linux-x64.tar.gz</HostingArchiveName>
- <TimestampFreeHostingArchiveName>$(HostingInstallerName)-$(PackageVersionNoTimestamp)-linux-x64.tar.gz</TimestampFreeHostingArchiveName>
- </PropertyGroup>
- <!-- Timestamp hosting bundle -->
- <MSBuild
- Projects="$(MSBuildProjectFullPath)"
- Targets="_GenerateTargz"
- Properties="DependentArchives=$(DependentArchives);RSArchive=$(TimestampRSArchive);OutputArchiveName=$(HostingArchiveName)" />
- <!-- Timestamp free hosting bundle -->
- <MSBuild
- Projects="$(MSBuildProjectFullPath)"
- Targets="_GenerateTargz"
- Properties="DependentArchives=$(DependentArchives);RSArchive=$(TimestampFreeLinuxRSArchive);OutputArchiveName=$(TimestampFreeHostingArchiveName)" />
- </Target>
- <Target Name="_DownloadAdditionalRSZips" DependsOnTargets="_EnsureInstallerDirectory;_DownloadInstallers">
- <Exec Command="curl --fail -sSL "$(RuntimeStore200LinkPrefix)osx.tar.gz" -o $(_InstallerSource)Build.RS.osx.tar.gz" />
- <Exec Command="curl --fail -sSL "$(RuntimeStore200LinkPrefix)winx64.zip" -o $(_InstallerSource)Build.RS.winx64.zip" />
- <Exec Command="curl --fail -sSL "$(RuntimeStore200LinkPrefix)winx86.zip" -o $(_InstallerSource)Build.RS.winx86.zip" />
- </Target>
- <Target Name="GenerateCumulativeArchives" DependsOnTargets="_EnsureInstallerPrerequisites;_DownloadAdditionalRSZips">
- <!-- Temporary: Generate time stamp free cumulative zips with old naming scheme -->
- <ItemGroup>
- <TargzArchives Include="Build.RS.linux.tar.gz">
- <RSArchive>$(TimestampFreeRSArchivePrefix)linux-x64.tar.gz</RSArchive>
- </TargzArchives>
- <TargzArchives Include="Build.RS.osx.tar.gz">
- <RSArchive>$(TimestampFreeRSArchivePrefix)osx-x64.tar.gz</RSArchive>
- </TargzArchives>
- <ZipArchives Include="Build.RS.winx64.zip">
- <RSArchive>$(TimestampFreeRSArchivePrefix)win7-x64.zip</RSArchive>
- </ZipArchives>
- <ZipArchives Include="Build.RS.winx86.zip">
- <RSArchive>$(TimestampFreeRSArchivePrefix)win7-x86.zip</RSArchive>
- </ZipArchives>
- </ItemGroup>
- <!-- Targz -->
- <MSBuild
- Projects="$(MSBuildProjectFullPath)"
- Targets="_GenerateTargz"
- Properties="DependentArchives=$(_InstallerSource)%(TargzArchives.Identity);RSArchive=%(TargzArchives.RSArchive);OutputArchiveName=%(TargzArchives.Identity)" />
- <!-- Targz -->
- <MSBuild
- Projects="$(MSBuildProjectFullPath)"
- Targets="_GenerateZip"
- Properties="DependentArchives=$(_InstallerSource)%(ZipArchives.Identity);RSArchive=%(ZipArchives.RSArchive);OutputArchiveName=%(ZipArchives.Identity)" />
- </Target>
- <Target Name="_BuildDockerImage">
- <Exec
- Command="docker build --build-arg USER_ID=%24(id -u) -t docker-image-$(Image) $(Image)"
- WorkingDirectory="$(_DockerDir)" />
- </Target>
- <Target Name="_RemoveDockerImage">
- <Exec Command="docker rmi docker-image-$(Image)" />
- </Target>
- <Target Name="_GenerateRpm">
- <!-- Clear working directory -->
- <RemoveDir Directories="$(_WorkRoot)" />
- <MakeDir Directories="$(_WorkRoot)" />
- <!-- Create layout: Extract archive if given -->
- <MakeDir Directories="$(_WorkRoot)package_root\" />
- <Exec Command="tar -xzf $(RSArchive) -C $(_WorkRoot)package_root\" Condition="'$(RSArchive)'!=''" />
- <!-- Create layout: Place changelog -->
- <Copy
- SourceFiles="$(_PackagingDir)changelog"
- DestinationFiles="$(_WorkRoot)templates/changelog"
- OverwriteReadOnlyFiles="True"
- SkipUnchangedFiles="False"
- UseHardlinksIfPossible="False" />
- <ItemGroup>
- <ChangelogItems Include="DATE" Replacement="$([System.DateTime]::UtcNow.ToString(ddd MMM dd yyyy))" />
- <ChangelogItems Include="MAINTAINER_NAME" Replacement="$(MaintainerName)" />
- <ChangelogItems Include="MAINTAINER_EMAIL" Replacement="$(MaintainerEmail)" />
- <ChangelogItems Include="PACKAGE_VERSION" Replacement="$(RPMVersion)" />
- <ChangelogItems Include="PACKAGE_REVISION" Replacement="$(RPMRevision)" />
- </ItemGroup>
- <!-- Update Date, Maintainer, Version, Revision and Changelog Message -->
- <RepoTasks.ReplaceInFile Filename="$(_WorkRoot)templates/changelog" Items="@(ChangelogItems)" />
- <!-- Update Maintainer and Summary -->
- <PropertyGroup>
- <RPMMaintainer>$(MaintainerName) <$(MaintainerEmail)></RPMMaintainer>
- <RPMSummary>$(RPMSummary.Replace('DEB_VERSION','$(RPMVersion)'))</RPMSummary>
- </PropertyGroup>
- <!-- Run RPM -->
- <Exec Command="docker run
- --rm
- -v $(RepositoryRoot):$(_DockerRootDirectory)
- docker-image-$(Image)
- fpm
- --verbose
- -s dir
- -t rpm
- -n $(RPMInstallerPrefix)-$(RPMVersion)
- -p $(_DockerRootDirectory)artifacts/installers/$(RPMInstallerPrefix)-$(RPMVersion)-$(RPMFileSuffix)
- -v $(RPMVersion)
- --iteration $(RPMRevision)
- -a amd64
- $(RPMArguments)
- --rpm-changelog $(_DockerRootDirectory).w/templates/changelog
- --rpm-summary "$(RPMSummary)"
- --description "$(RPMDescription)"
- --maintainer "$(RPMMaintainer)"
- --vendor "$(RPMVendor)"
- --license "$(RPMLicense)"
- --url "$(RPMHomepage)"
- $(_DockerRootDirectory).w/package_root/="$(RPMInstallRoot)"" />
- </Target>
- <Target Name="GenerateRpms" DependsOnTargets="_EnsureInstallerPrerequisites">
- <PropertyGroup>
- <Image>rhel.7</Image>
- <RPMVendor>.NET Foundation</RPMVendor>
- <RHInstallerInstallRoot>/opt/rh/rh-dotnet20/root/usr/lib64/dotnet/</RHInstallerInstallRoot>
- <GenericInstallerInstallRoot>/usr/share/dotnet/</GenericInstallerInstallRoot>
- </PropertyGroup>
- <!-- Build Docker Image -->
- <MSBuild Projects="$(MSBuildProjectFullPath)" Targets="_BuildDockerImage" Properties="Image=$(Image)" />
- <!-- Common installer parameters -->
- <JsonPeek Query="$.short_description" JsonInputPath="$(RSDebConfigFile)">
- <Output TaskParameter="Result" ItemName="_RSInstallerSummary" />
- </JsonPeek>
- <JsonPeek Query="$.long_description" JsonInputPath="$(RSDebConfigFile)">
- <Output TaskParameter="Result" ItemName="_RSDescription" />
- </JsonPeek>
- <JsonPeek Query="$.license.type" JsonInputPath="$(RSDebConfigFile)">
- <Output TaskParameter="Result" ItemName="_RSLicense" />
- </JsonPeek>
- <JsonPeek Query="$.release.package_revision" JsonInputPath="$(RSDebConfigFile)">
- <Output TaskParameter="Result" ItemName="_RSPackageRevision" />
- </JsonPeek>
- <JsonPeek Query="$.homepage" JsonInputPath="$(RSDebConfigFile)">
- <Output TaskParameter="Result" ItemName="_RSHomepage" />
- </JsonPeek>
- <JsonPeek Query="$.maintainer_name" JsonInputPath="$(RSDebConfigFile)">
- <Output TaskParameter="Result" ItemName="_RSMaintainerName" />
- </JsonPeek>
- <JsonPeek Query="$.maintainer_email" JsonInputPath="$(RSDebConfigFile)">
- <Output TaskParameter="Result" ItemName="_RSMaintainerEmail" />
- </JsonPeek>
- <JsonPeek Query="$.short_description" JsonInputPath="$(HostingDebConfigFile)">
- <Output TaskParameter="Result" ItemName="_HostingSummary" />
- </JsonPeek>
- <JsonPeek Query="$.long_description" JsonInputPath="$(HostingDebConfigFile)">
- <Output TaskParameter="Result" ItemName="_HostingDescription" />
- </JsonPeek>
- <JsonPeek Query="$.license.type" JsonInputPath="$(HostingDebConfigFile)">
- <Output TaskParameter="Result" ItemName="_HostingLicense" />
- </JsonPeek>
- <JsonPeek Query="$.release.package_revision" JsonInputPath="$(HostingDebConfigFile)">
- <Output TaskParameter="Result" ItemName="_HostingRevision" />
- </JsonPeek>
- <JsonPeek Query="$.homepage" JsonInputPath="$(HostingDebConfigFile)">
- <Output TaskParameter="Result" ItemName="_HostingHomepage" />
- </JsonPeek>
- <JsonPeek Query="$.maintainer_name" JsonInputPath="$(HostingDebConfigFile)">
- <Output TaskParameter="Result" ItemName="_HostingMaintainerName" />
- </JsonPeek>
- <JsonPeek Query="$.maintainer_email" JsonInputPath="$(HostingDebConfigFile)">
- <Output TaskParameter="Result" ItemName="_HostingMaintainerEmail" />
- </JsonPeek>
- <ItemGroup>
- <RHStoreDirectories Include="$(RHInstallerInstallRoot)additionalDeps" />
- <RHStoreDirectories Include="$(RHInstallerInstallRoot)store" />
- <GenericStoreDirectories Include="$(GenericInstallerInstallRoot)additionalDeps" />
- <GenericStoreDirectories Include="$(GenericInstallerInstallRoot)store" />
- <RSDependencies Include="$(RSInstallerName)-2.0.0">
- <Version>2.0.0</Version>
- </RSDependencies>
- <HostingDependencies Include="$(RSInstallerName)-$(PackageVersion)">
- <Version>$(PackageVersion)</Version>
- </HostingDependencies>
- <HostingDependencies Include="dotnet-runtime-$(MicrosoftNETCoreApp20PackageVersion)">
- <Version>$(MicrosoftNETCoreApp20PackageVersion)</Version>
- </HostingDependencies>
- <TimestampFreeHostingDependencies Include="$(RSInstallerName)-$(PackageVersionNoTimestamp)">
- <Version>$(PackageVersionNoTimestamp)</Version>
- </TimestampFreeHostingDependencies>
- <TimestampFreeHostingDependencies Include="dotnet-runtime-$(MicrosoftNETCoreApp20PackageVersion)">
- <Version>$(MicrosoftNETCoreApp20PackageVersion)</Version>
- </TimestampFreeHostingDependencies>
- </ItemGroup>
- <PropertyGroup>
- <HostingFPMArguments>@(HostingDependencies->' -d "%(Identity) >= %(Version)"', ' ')</HostingFPMArguments>
- <TimestampFreeHostingFPMArguments>@(TimestampFreeHostingDependencies->' -d "%(Identity) >= %(Version)"', ' ')</TimestampFreeHostingFPMArguments>
- <RSDependencyArguments>@(RSDependencies->' -d "%(Identity) >= %(Version)"', ' ')</RSDependencyArguments>
- <RHRSArguments>$(RSDependencyArguments) @(RHStoreDirectories->' --directories "%(FullPath)"', ' ')</RHRSArguments>
- <GenericRSArguments>$(RSDependencyArguments) @(GenericStoreDirectories->' --directories "%(FullPath)"', ' ')</GenericRSArguments>
- <CommonArguments>Image=$(Image);RPMVendor=$(RPMVendor)</CommonArguments>
- <CommonGenericArguments>RPMFileSuffix=rhel.7-x64.rpm;RPMInstallRoot=$(GenericInstallerInstallRoot)</CommonGenericArguments>
- <CommonRHArguments>RPMFileSuffix=rh.rhel.7-x64.rpm;RPMInstallRoot=$(RHInstallerInstallRoot)</CommonRHArguments>
- <CommonRSArguments>MaintainerName=@(_RSMaintainerName);MaintainerEmail=@(_RSMaintainerEmail)</CommonRSArguments>
- <CommonRSArguments>$(CommonRSArguments);RPMInstallerPrefix=$(RSInstallerName);RPMRevision=@(_RSPackageRevision)</CommonRSArguments>
- <CommonRSArguments>$(CommonRSArguments);RPMSummary=@(_RSInstallerSummary);RPMDescription=@(_RSDescription)</CommonRSArguments>
- <CommonRSArguments>$(CommonRSArguments);RPMLicense=@(_RSLicense);RPMHomepage=@(_RSHomepage)</CommonRSArguments>
- <CommonHostingArguments>$(CommonArguments);MaintainerName=@(_HostingMaintainerName);MaintainerEmail=@(_HostingMaintainerEmail)</CommonHostingArguments>
- <CommonHostingArguments>$(CommonHostingArguments);RPMInstallerPrefix=$(HostingInstallerName);RPMRevision=@(_HostingRevision)</CommonHostingArguments>
- <CommonHostingArguments>$(CommonHostingArguments);RPMSummary=@(_HostingSummary);RPMDescription=@(_HostingDescription)</CommonHostingArguments>
- <CommonHostingArguments>$(CommonHostingArguments);RPMLicense=@(_HostingLicense);RPMHomepage=@(_HostingHomepage)</CommonHostingArguments>
- <TimestampRSArguments>$(CommonArguments);$(CommonGenericArguments);$(CommonRSArguments)</TimestampRSArguments>
- <TimestampRSArguments>$(TimestampRSArguments);RSArchive=$(TimestampRSArchive);RPMVersion=$(PackageVersion);RPMArguments=$(GenericRSArguments)</TimestampRSArguments>
- <TimestampFreeRSArguments>$(CommonArguments);$(CommonGenericArguments);$(CommonRSArguments)</TimestampFreeRSArguments>
- <TimestampFreeRSArguments>$(TimestampFreeRSArguments);RSArchive=$(TimestampFreeLinuxRSArchive);RPMVersion=$(PackageVersionNoTimestamp);RPMArguments=$(GenericRSArguments)</TimestampFreeRSArguments>
- <TimestampHostingArguments>$(CommonArguments);$(CommonGenericArguments);$(CommonHostingArguments)</TimestampHostingArguments>
- <TimestampHostingArguments>$(TimestampHostingArguments);RPMVersion=$(PackageVersion);RPMArguments=$(HostingFPMArguments)</TimestampHostingArguments>
- <TimestampFreeHostingArguments>$(CommonArguments);$(CommonGenericArguments);$(CommonHostingArguments)</TimestampFreeHostingArguments>
- <TimestampFreeHostingArguments>$(TimestampFreeHostingArguments);RPMVersion=$(PackageVersionNoTimestamp);RPMArguments=$(TimestampFreeHostingFPMArguments)</TimestampFreeHostingArguments>
- <RHTimestampRSArguments>$(CommonArguments);$(CommonRHArguments);$(CommonRSArguments)</RHTimestampRSArguments>
- <RHTimestampRSArguments>$(RHTimestampRSArguments);RSArchive=$(TimestampRSArchive);RPMVersion=$(PackageVersion);RPMArguments=$(RHRSArguments)</RHTimestampRSArguments>
- <RHTimestampFreeRSArguments>$(CommonArguments);$(CommonRHArguments);$(CommonRSArguments)</RHTimestampFreeRSArguments>
- <RHTimestampFreeRSArguments>$(RHTimestampFreeRSArguments);RSArchive=$(TimestampFreeLinuxRSArchive);RPMVersion=$(PackageVersionNoTimestamp);RPMArguments=$(RHRSArguments)</RHTimestampFreeRSArguments>
- <RHTimestampHostingArguments>$(CommonArguments);$(CommonRHArguments);$(CommonHostingArguments)</RHTimestampHostingArguments>
- <RHTimestampHostingArguments>$(RHTimestampHostingArguments);RPMVersion=$(PackageVersion);RPMArguments=$(HostingFPMArguments)</RHTimestampHostingArguments>
- <RHTimestampFreeHostingArguments>$(CommonArguments);$(CommonRHArguments);$(CommonHostingArguments)</RHTimestampFreeHostingArguments>
- <RHTimestampFreeHostingArguments>$(RHTimestampFreeHostingArguments);RPMVersion=$(PackageVersionNoTimestamp);RPMArguments=$(TimestampFreeHostingFPMArguments)</RHTimestampFreeHostingArguments>
- </PropertyGroup>
- <!-- General Timestamp runtime store -->
- <MSBuild Projects="$(MSBuildProjectFullPath)" Targets="_GenerateRpm" Properties="$(TimestampRSArguments)" />
- <!-- General Timestamp free runtime store -->
- <MSBuild Projects="$(MSBuildProjectFullPath)" Targets="_GenerateRpm" Properties="$(TimestampFreeRSArguments)" />
- <!-- General Timestamp hosting bundle -->
- <MSBuild Projects="$(MSBuildProjectFullPath)" Targets="_GenerateRpm" Properties="$(TimestampHostingArguments)" />
- <!-- General Timestamp free hosting bundle -->
- <MSBuild Projects="$(MSBuildProjectFullPath)" Targets="_GenerateRpm" Properties="$(TimestampFreeHostingArguments)" />
- <!-- RH Timestamp runtime store -->
- <MSBuild Projects="$(MSBuildProjectFullPath)" Targets="_GenerateRpm" Properties="$(RHTimestampRSArguments)" />
- <!-- RH Timestamp free runtime store -->
- <MSBuild Projects="$(MSBuildProjectFullPath)" Targets="_GenerateRpm" Properties="$(RHTimestampFreeRSArguments)" />
- <!-- RH Timestamp hosting bundle -->
- <MSBuild Projects="$(MSBuildProjectFullPath)" Targets="_GenerateRpm" Properties="$(RHTimestampHostingArguments)" />
- <!-- RH Timestamp free hosting bundle -->
- <MSBuild Projects="$(MSBuildProjectFullPath)" Targets="_GenerateRpm" Properties="$(RHTimestampFreeHostingArguments)" />
- <!-- Remove Docker Image to save disk space -->
- <MSBuild Projects="$(MSBuildProjectFullPath)" Targets="_RemoveDockerImage" Properties="Image=$(Image)" />
- </Target>
- <Target Name="_GenerateDeb">
- <!-- Create layout: Clear work directory -->
- <RemoveDir Directories="$(_WorkRoot)" />
- <MakeDir Directories="$(_WorkRoot)" />
- <!-- Create layout: Extract archive if given -->
- <MakeDir Directories="$(_WorkLayoutDir)package_root\" />
- <Exec Command="tar -xzf $(RSArchive) -C $(_WorkLayoutDir)package_root/" Condition="'$(RSArchive)'!=''" />
- <!-- Create layout: Generate and Place debian_config.json -->
- <Copy
- SourceFiles="$(DebConfig)"
- DestinationFiles="$(_WorkLayoutDir)debian_config.json"
- OverwriteReadOnlyFiles="True"
- SkipUnchangedFiles="False"
- UseHardlinksIfPossible="False" />
- <ItemGroup>
- <DebConfigItems Include="DOTNET_VERSION" Replacement="$(DotnetVersion)" />
- <DebConfigItems Include="DEB_VERSION" Replacement="$(DebVersion)" />
- </ItemGroup>
- <!-- Update versions -->
- <RepoTasks.ReplaceInFile Filename="$(_WorkLayoutDir)debian_config.json" Items="@(DebConfigItems)" />
- <!-- Build Runtime Store and Hosting Bundle Deb package -->
- <!--
- Note: KOREBUILD_DOTNET_FEED_CREDENTIAL is intentionally NOT an MSBuild variable.
- MSBuild doesn't to the substitution correctly because the string contains %,
- so we'll let bash do it instead.
- -->
- <Exec Command="docker run
- --rm
- -v $(RepositoryRoot):$(_DockerRootDirectory)
- -e DOTNET_SKIP_FIRST_TIME_EXPERIENCE=true
- -e INSTALLER_NAME=$(DebPrefix)-$(DebVersion)
- -e INSTALLER_VERSION=$(DebVersion)
- -e 'KOREBUILD_DOTNET_VERSION=$(KOREBUILD_DOTNET_VERSION)'
- -e 'KOREBUILD_DOTNET_SHARED_RUNTIME_VERSION=$(KOREBUILD_DOTNET_SHARED_RUNTIME_VERSION)'
- -e 'KOREBUILD_DOTNET_FEED_CDN=$(KOREBUILD_DOTNET_FEED_CDN)'
- -e 'KOREBUILD_DOTNET_FEED_UNCACHED=$(KOREBUILD_DOTNET_FEED_UNCACHED)'
- -e "KOREBUILD_DOTNET_FEED_CREDENTIAL=$KOREBUILD_DOTNET_FEED_CREDENTIAL"
- docker-image-$(Image)
- ./build.sh /t:RunDebTool"
- ContinueOnError="WarnAndContinue" />
- <!-- Copy Runtime Store and Hosting Bundle packages to output -->
- <ItemGroup>
- <GeneratedDebFiles Include="$(_WorkOutputDir)/*.deb" />
- </ItemGroup>
- <Error Text="@(GeneratedDebFiles->Count()) deb installer files generated." Condition="'@(GeneratedDebFiles->Count())' != 1" />
- <Copy
- DestinationFiles="$(_InstallersOutputDir)$(DebPrefix)-$(DebVersion)-$(Image)-x64.deb"
- SourceFiles="@(GeneratedDebFiles)"
- OverwriteReadOnlyFiles="True"
- SkipUnchangedFiles="False"
- UseHardlinksIfPossible="False" />
- </Target>
- <Target Name="_GenerateDebOnPlatform">
- <PropertyGroup>
- <CommonRSArguments>Image=$(Image);DebConfig=$(RSDebConfigFile);DebPrefix=$(RSInstallerName)</CommonRSArguments>
- <CommonHostingArguments>Image=$(Image);DebConfig=$(HostingDebConfigFile);DotnetVersion=$(MicrosoftNETCoreApp20PackageVersion);DebPrefix=$(HostingInstallerName)</CommonHostingArguments>
- </PropertyGroup>
- <!-- Build Docker Image -->
- <MSBuild Projects="$(MSBuildProjectFullPath)" Targets="_BuildDockerImage" Properties="Image=$(Image)" />
- <MSBuild
- Projects="$(MSBuildProjectFullPath)"
- Targets="_GenerateDeb"
- Properties="$(CommonRSArguments);RSArchive=$(TimestampRSArchive);DebVersion=$(Version)" />
- <MSBuild
- Projects="$(MSBuildProjectFullPath)"
- Targets="_GenerateDeb"
- Properties="$(CommonRSArguments);RSArchive=$(TimestampFreeLinuxRSArchive);DebVersion=$(PackageVersionNoTimestamp)" />
- <MSBuild
- Projects="$(MSBuildProjectFullPath)"
- Targets="_GenerateDeb"
- Properties="$(CommonHostingArguments);DebVersion=$(Version)" />
- <MSBuild
- Projects="$(MSBuildProjectFullPath)"
- Targets="_GenerateDeb"
- Properties="$(CommonHostingArguments);DebVersion=$(PackageVersionNoTimestamp)" />
- <!-- Remove Docker Image to save disk space -->
- <MSBuild Projects="$(MSBuildProjectFullPath)" Targets="_RemoveDockerImage" Properties="Image=$(Image)" />
- </Target>
- <Target Name="GenerateDebs" DependsOnTargets="_EnsureInstallerPrerequisites">
- <PropertyGroup>
- <CommonArguments>Version=$(Version);TimestampFreeVersion=$(PackageVersionNoTimestamp)</CommonArguments>
- </PropertyGroup>
- <MSBuild Projects="$(MSBuildProjectFullPath)" Targets="_GenerateDebOnPlatform" Properties="$(CommonArguments);Image=debian.8" />
- <MSBuild Projects="$(MSBuildProjectFullPath)" Targets="_GenerateDebOnPlatform" Properties="$(CommonArguments);Image=ubuntu.14.04" />
- <MSBuild Projects="$(MSBuildProjectFullPath)" Targets="_GenerateDebOnPlatform" Properties="$(CommonArguments);Image=ubuntu.16.04" />
- <MSBuild Projects="$(MSBuildProjectFullPath)" Targets="_GenerateDebOnPlatform" Properties="$(CommonArguments);Image=ubuntu.16.10" />
- </Target>
- <Target Name="RunDebTool">
- <!-- Install dotnet-deb tool -->
- <MSBuild Projects="$(_DebToolDir)dotnet-deb-tool-consumer.csproj" Targets="Restore" />
- <!-- Build deb package -->
- <Exec
- Command="dotnet deb-tool -i $(_WorkLayoutDir) -o $(_WorkOutputDir) -n $(INSTALLER_NAME) -v $(INSTALLER_VERSION)"
- WorkingDirectory="$(_DebToolDir)" />
- </Target>
- <Target Name="GenerateRelabledInstallers">
- <ItemGroup>
- <Debian8Installers Include="$(_InstallersOutputDir)*debian.8*" />
- <Ubuntu1604Installers Include="$(_InstallersOutputDir)*ubuntu.16.04*" />
- </ItemGroup>
- <!-- Create debian.9 installers by renaming debian.8 installers -->
- <Copy
- SourceFiles="%(Debian8Installers.FullPath)"
- DestinationFiles="$([System.String]::Copy('%(Debian8Installers.FullPath)').Replace('debian.8','debian.9'))"
- OverwriteReadOnlyFiles="True"
- SkipUnchangedFiles="False"
- UseHardlinksIfPossible="False" />
- <!-- Create ubuntu.17.04 installers by renaming ubuntu.16.04 installers -->
- <Copy
- SourceFiles="%(Ubuntu1604Installers.FullPath)"
- DestinationFiles="$([System.String]::Copy('%(Ubuntu1604Installers.FullPath)').Replace('ubuntu.16.04','ubuntu.17.04'))"
- OverwriteReadOnlyFiles="True"
- SkipUnchangedFiles="False"
- UseHardlinksIfPossible="False" />
- </Target>
- </Project>
|