|
|
@@ -1,189 +0,0 @@
|
|
|
-<Project>
|
|
|
- <Target Name="BuildInstallers" DependsOnTargets="GenerateRpms;GenerateDebs" />
|
|
|
-
|
|
|
- <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="Expected archive missing at $(SharedFxIntermediateArchiveFilePrefix)-linux-x64.tar.gz."
|
|
|
- Condition="!Exists('$(SharedFxIntermediateArchiveFilePrefix)-linux-x64.tar.gz')" />
|
|
|
- </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 $(SharedFxArchive) -C $(_WorkRoot)package_root\" Condition="'$(SharedFxArchive)'!=''" />
|
|
|
-
|
|
|
- <!-- Create layout: Create changelog -->
|
|
|
- <PropertyGroup>
|
|
|
- <ChangeLogProps>DATE=$([System.DateTime]::UtcNow.ToString(ddd MMM dd yyyy))</ChangeLogProps>
|
|
|
- <ChangeLogProps>$(ChangeLogProps);MAINTAINER_NAME=$(RpmMaintainerName)</ChangeLogProps>
|
|
|
- <ChangeLogProps>$(ChangeLogProps);MAINTAINER_EMAIL=$(RpmMaintainerEmail)</ChangeLogProps>
|
|
|
- <ChangeLogProps>$(ChangeLogProps);PACKAGE_VERSION=$(RpmPackageVersion)</ChangeLogProps>
|
|
|
- <ChangeLogProps>$(ChangeLogProps);PACKAGE_REVISION=$(RpmRevision)</ChangeLogProps>
|
|
|
- </PropertyGroup>
|
|
|
-
|
|
|
- <GenerateFileFromTemplate TemplateFile="$(_PackagingDir)changelog.in" OutputPath="$(_WorkRoot)templates/changelog" Properties="$(ChangeLogProps)" />
|
|
|
-
|
|
|
- <!-- Run fpm -->
|
|
|
- <!-- Retry added due to fpm/docker race where .w/package_root directory cannot be resolved -->
|
|
|
- <Run
|
|
|
- FileName="docker"
|
|
|
- Command="run --rm -v $(RepositoryRoot):$(_DockerRootDir) docker-image-$(Image) fpm --verbose -s dir -t rpm -n $(RpmName)-$(RpmIdVersion) -p $(_DockerRootDir)artifacts/installers/$(RpmName)-$(RpmFileVersion)-$(RpmFileSuffix) -v $(RpmPackageVersion) --iteration $(RpmRevision) -a amd64 $(RpmArguments) --rpm-changelog $(_DockerRootDir).w/$(SharedFxRid)/templates/changelog --rpm-summary "$(RpmMSummary)" --description "$(RpmDescription)" --maintainer "$(RpmMaintainerName) <$(RpmMaintainerEmail)>" --vendor "$(RpmVendor)" --license "$(RpmLicense)" --url "$(RpmHomepage)" $(_DockerRootDir).w/$(SharedFxRid)/package_root/="$(RpmInstallRoot)/""
|
|
|
- MaxRetries="5"/>
|
|
|
- </Target>
|
|
|
-
|
|
|
- <Target Name="GenerateRpms" DependsOnTargets="_EnsureInstallerPrerequisites">
|
|
|
- <PropertyGroup>
|
|
|
- <Image>rhel.7</Image>
|
|
|
- <RpmVendor>.NET Foundation</RpmVendor>
|
|
|
- <RHInstallRoot>/opt/rh/rh-dotnet20/root/usr/lib64/dotnet</RHInstallRoot>
|
|
|
- <Rpm_DotnetRuntimeDependencyId>dotnet-runtime-$(AspNetCoreMajorVersion).$(AspNetCoreMinorVersion)</Rpm_DotnetRuntimeDependencyId>
|
|
|
- <Rpm_DotnetRuntimeDependencyVersion>$(MicrosoftNETCoreAppPackageVersion.Split('-')[0])</Rpm_DotnetRuntimeDependencyVersion>
|
|
|
- </PropertyGroup>
|
|
|
-
|
|
|
- <!-- Build Docker Image -->
|
|
|
- <MSBuild Projects="$(MSBuildProjectFullPath)" Targets="_BuildDockerImage" Properties="Image=$(Image)" />
|
|
|
-
|
|
|
- <ItemGroup>
|
|
|
- <RpmSharedFxDependencies Include="$(Rpm_DotnetRuntimeDependencyId)" Version="$(Rpm_DotnetRuntimeDependencyVersion)" />
|
|
|
- <RpmRHSharedFxDirectories Include="$(RHInstallRoot)/shared" />
|
|
|
- <RpmGenericSharedFxDirectories Include="$(InstallRoot)/shared" />
|
|
|
- </ItemGroup>
|
|
|
-
|
|
|
- <PropertyGroup>
|
|
|
- <RpmSharedFxArguments>@(RpmSharedFxDependencies->' -d "%(Identity) >= %(Version)"', ' ')</RpmSharedFxArguments>
|
|
|
- <RpmRHSharedFxArguments>$(RpmSharedFxArguments) @(RpmRHSharedFxDirectories->' --directories "%(FullPath)"', ' ')</RpmRHSharedFxArguments>
|
|
|
- <RpmGenericSharedFxArguments>$(RpmSharedFxArguments) @(RpmGenericSharedFxDirectories->' --directories "%(FullPath)"', ' ')</RpmGenericSharedFxArguments>
|
|
|
-
|
|
|
- <RpmCommonProps>Image=$(Image);RpmVendor=$(RpmVendor);RpmName=$(SharedFxInstallerName)</RpmCommonProps>
|
|
|
- <RpmCommonProps>$(RpmCommonProps);RpmMaintainerName=$(MaintainerName);RpmMaintainerEmail=$(MaintainerEmail)</RpmCommonProps>
|
|
|
- <RpmCommonProps>$(RpmCommonProps);RpmHomepage=$(Homepage);RpmRevision=$(RpmPackageRevision)</RpmCommonProps>
|
|
|
- <RpmCommonProps>$(RpmCommonProps);RpmLicense=$(LicenseType)</RpmCommonProps>
|
|
|
- <RpmCommonProps>$(RpmCommonProps);SharedFxArchive=$(SharedFxIntermediateArchiveFilePrefix)-linux-x64.tar.gz</RpmCommonProps>
|
|
|
- <RpmCommonProps>$(RpmCommonProps);RpmMSummary=$(SharedFxSummary);RpmDescription=$(SharedFxDescription)</RpmCommonProps>
|
|
|
- <RpmGenericProps>RpmInstallRoot=$(InstallRoot)</RpmGenericProps>
|
|
|
- <RpmRHProps>RpmInstallRoot=$(RHInstallRoot)</RpmRHProps>
|
|
|
- <RpmProps>RpmIdVersion=$(InstallerIdVersion);RpmPackageVersion=$(InstallerPackageVersion);RpmFileVersion=$(PackageVersion)</RpmProps>
|
|
|
-
|
|
|
- <RpmSharedFxProps>$(RpmCommonProps);$(RpmGenericProps);$(RpmProps);RpmArguments=$(RpmGenericSharedFxArguments);RpmFileSuffix=x64.rpm</RpmSharedFxProps>
|
|
|
- <RpmRHSharedFxProps>$(RpmCommonProps);$(RpmRHProps);$(RpmProps);RpmArguments=$(RpmRHSharedFxArguments);RpmFileSuffix=rh.rhel.7-x64.rpm</RpmRHSharedFxProps>
|
|
|
- </PropertyGroup>
|
|
|
-
|
|
|
- <!-- Generic installer-->
|
|
|
- <MSBuild Projects="$(MSBuildProjectFullPath)" Targets="_GenerateRpm" Properties="$(RpmSharedFxProps)" />
|
|
|
-
|
|
|
- <!-- RH installer-->
|
|
|
- <MSBuild Projects="$(MSBuildProjectFullPath)" Targets="_GenerateRpm" Properties="$(RpmRHSharedFxProps)" />
|
|
|
-
|
|
|
- <!-- Remove Docker Image to save disk space -->
|
|
|
- <MSBuild Projects="$(MSBuildProjectFullPath)" Targets="_RemoveDockerImage" Properties="Image=$(Image)" />
|
|
|
- </Target>
|
|
|
-
|
|
|
- <Target Name="RunDebTool">
|
|
|
- <PropertyGroup>
|
|
|
- <BuildDebInstallerScript>$(RepositoryRoot)src/Installers/Debian/build.sh</BuildDebInstallerScript>
|
|
|
- </PropertyGroup>
|
|
|
-
|
|
|
- <!-- Build deb package -->
|
|
|
- <Exec Command="$(BuildDebInstallerScript) -i $(_WorkLayoutDir) -o $(_WorkOutputDir) -n $(INSTALLER_NAME) -v $(INSTALLER_VERSION)" />
|
|
|
- </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 $(SharedFxArchive) -C $(_WorkLayoutDir)package_root/" Condition="'$(SharedFxArchive)'!=''" />
|
|
|
-
|
|
|
- <!-- Create layout: Generate and Place debian_config.json -->
|
|
|
- <PropertyGroup>
|
|
|
- <DebConfigProps>MAINTAINER_NAME=$(MaintainerName)</DebConfigProps>
|
|
|
- <DebConfigProps>$(DebConfigProps);MAINTAINER_EMAIL=$(MaintainerEmail)</DebConfigProps>
|
|
|
- <DebConfigProps>$(DebConfigProps);HOMEPAGE=$(Homepage)</DebConfigProps>
|
|
|
- <DebConfigProps>$(DebConfigProps);INSTALL_ROOT=$(InstallRoot)</DebConfigProps>
|
|
|
- <DebConfigProps>$(DebConfigProps);PACKAGE_NAME=$(DebPrefix)</DebConfigProps>
|
|
|
- <DebConfigProps>$(DebConfigProps);PACKAGE_REVISION=$(PackageRevision)</DebConfigProps>
|
|
|
- <DebConfigProps>$(DebConfigProps);LICENSE_TYPE=$(LicenseType)</DebConfigProps>
|
|
|
- <DebConfigProps>$(DebConfigProps);SHORT_DESCRIPTION=$(DebSummary)</DebConfigProps>
|
|
|
- <DebConfigProps>$(DebConfigProps);LONG_DESCRIPTION=$(DebDescription)</DebConfigProps>
|
|
|
- <DebConfigProps>$(DebConfigProps);DEBIAN_DEPENDENCIES=$(DebDependencies)</DebConfigProps>
|
|
|
- </PropertyGroup>
|
|
|
-
|
|
|
- <GenerateFileFromTemplate TemplateFile="$(DebConfigInFile)" OutputPath="$(_WorkLayoutDir)debian_config.json" Properties="$(DebConfigProps)" />
|
|
|
-
|
|
|
- <!-- Build SharedFx Bundle Deb package -->
|
|
|
-
|
|
|
- <Exec Command="docker run --rm -v $(RepositoryRoot):$(_DockerRootDir) -e DOTNET_SKIP_FIRST_TIME_EXPERIENCE=true -e INSTALLER_NAME=$(DebPrefix)-$(DebIdVersion) -e INSTALLER_VERSION=$(DebPackageVersion) docker-image-$(Image) ./build.sh /t:RunDebTool"
|
|
|
- ContinueOnError="WarnAndContinue" />
|
|
|
-
|
|
|
- <!-- Copy SharedFx 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)-$(DebFileVersion)-x64.deb"
|
|
|
- SourceFiles="@(GeneratedDebFiles)"
|
|
|
- OverwriteReadOnlyFiles="True"
|
|
|
- SkipUnchangedFiles="False"
|
|
|
- UseHardlinksIfPossible="False" />
|
|
|
- </Target>
|
|
|
-
|
|
|
- <Target Name="GenerateDebs" DependsOnTargets="_EnsureInstallerPrerequisites">
|
|
|
- <PropertyGroup>
|
|
|
- <Deb_DotnetRuntimeDependencyId>dotnet-runtime-$(AspNetCoreMajorVersion).$(AspNetCoreMinorVersion)</Deb_DotnetRuntimeDependencyId>
|
|
|
- <Deb_DotnetRuntimeDependencyVersion>$(MicrosoftNETCoreAppPackageVersion)</Deb_DotnetRuntimeDependencyVersion>
|
|
|
- <!-- Needed some creativity to convert the PackageVersion M.N.P-Build to the installer version M.N.P~Build, The conditional handles stabilized builds -->
|
|
|
- <Deb_DotnetRuntimeDependencyVersion Condition="$(Deb_DotnetRuntimeDependencyVersion.Contains('-'))">$(Deb_DotnetRuntimeDependencyVersion.Substring(0, $(Deb_DotnetRuntimeDependencyVersion.IndexOf('-'))))~$(Deb_DotnetRuntimeDependencyVersion.Substring($([MSBuild]::Add($(Deb_DotnetRuntimeDependencyVersion.IndexOf('-')), 1))))</Deb_DotnetRuntimeDependencyVersion>
|
|
|
- </PropertyGroup>
|
|
|
-
|
|
|
- <ItemGroup>
|
|
|
- <_DebSharedFxDependencies Include="$(Deb_DotnetRuntimeDependencyId)" Version="$(Deb_DotnetRuntimeDependencyVersion)"/>
|
|
|
- </ItemGroup>
|
|
|
-
|
|
|
- <PropertyGroup>
|
|
|
- <Image>ubuntu.14.04</Image>
|
|
|
-
|
|
|
- <DebSharedFxDependencies>@(_DebSharedFxDependencies->'"%(Identity)": { "package_version": "%(Version)" }', ', ')</DebSharedFxDependencies>
|
|
|
-
|
|
|
- <DebCommonProps>Image=$(Image);DebPrefix=$(SharedFxInstallerName)</DebCommonProps>
|
|
|
- <DebCommonProps>$(DebCommonProps);DebSummary=$(SharedFxSummary);DebDescription=$(SharedFxDescription)</DebCommonProps>
|
|
|
- <DebCommonProps>$(DebCommonProps);SharedFxArchive=$(SharedFxIntermediateArchiveFilePrefix)-linux-x64.tar.gz</DebCommonProps>
|
|
|
-
|
|
|
- <DebProps>DebIdVersion=$(InstallerIdVersion);DebPackageVersion=$(DebInstallerPackageVersion);DebFileVersion=$(PackageVersion);DebDependencies=$(DebSharedFxDependencies)</DebProps>
|
|
|
- </PropertyGroup>
|
|
|
-
|
|
|
- <!-- Build Docker Image -->
|
|
|
- <MSBuild Projects="$(MSBuildProjectFullPath)" Targets="_BuildDockerImage" Properties="Image=$(Image)" />
|
|
|
-
|
|
|
- <MSBuild Projects="$(MSBuildProjectFullPath)" Targets="_GenerateDeb" Properties="$(DebCommonProps);$(DebProps)" />
|
|
|
-
|
|
|
- <!-- Remove Docker Image to save disk space -->
|
|
|
- <MSBuild Projects="$(MSBuildProjectFullPath)" Targets="_RemoveDockerImage" Properties="Image=$(Image)" />
|
|
|
- </Target>
|
|
|
-</Project>
|