Build RPM installers
This commit is contained in:
parent
89a2dadfca
commit
dfd7929746
|
|
@ -22,6 +22,9 @@
|
|||
<NoTimestampVersion>$(VersionPrefix)-$(OriginalVersionSuffix)-$(NoTimestampSuffix)</NoTimestampVersion>
|
||||
<TimestampVersion>$(VersionPrefix)-$(OriginalVersionSuffix)-$(BuildNumber)</TimestampVersion>
|
||||
|
||||
<RuntimeStoreTimestampInstallerPackageName>aspnetcore-store-$(TimestampVersion)</RuntimeStoreTimestampInstallerPackageName>
|
||||
<RuntimeStoreNoTimestampInstallerPackageName>aspnetcore-store-$(NoTimestampVersion)</RuntimeStoreNoTimestampInstallerPackageName>
|
||||
|
||||
<RuntimeStoreWorkingDirectory>$(RepositoryRoot).rw\</RuntimeStoreWorkingDirectory>
|
||||
<RuntimeStoreOutputPath>$(RepositoryRoot).ro\</RuntimeStoreOutputPath>
|
||||
<ArtifactsDir>$(RepositoryRoot)artifacts\</ArtifactsDir>
|
||||
|
|
@ -46,11 +49,13 @@
|
|||
<RuntimeStoreReferenceDirectory>$(ToolsDir)Build.RuntimeStore.References\</RuntimeStoreReferenceDirectory>
|
||||
<RuntimeStoreReferencePackageDirectory>$(RuntimeStoreReferenceDirectory)bin\Release\</RuntimeStoreReferencePackageDirectory>
|
||||
<DebianConfigTemplateFile>$(ToolsDir)debian_config.json</DebianConfigTemplateFile>
|
||||
<RPMChangelogTemplateFile>$(ToolsDir)changelog</RPMChangelogTemplateFile>
|
||||
<DotnetDebToolDirectory>$(ToolsDir)dotnet-deb-tool-consumer\</DotnetDebToolDirectory>
|
||||
<RestoreRuntimeStoreDirectory>$(ToolsDir)RestoreRuntimeStore\</RestoreRuntimeStoreDirectory>
|
||||
<BuildDirectory>$(RepositoryRoot).build\</BuildDirectory>
|
||||
<BuildTempDirectory>$(BuildDirectory)temp\</BuildTempDirectory>
|
||||
<BuildDotnetDirectory>$(BuildDirectory)dotnet\</BuildDotnetDirectory>
|
||||
<DockerRootDirectory>/opt/code/</DockerRootDirectory>
|
||||
|
||||
<PrepareDependsOn>
|
||||
$(PrepareDependsOn);
|
||||
|
|
@ -307,10 +312,9 @@
|
|||
<ZipArchive File="%(MetaPackageNupkg.FullPath)" SourceFiles="@(ArchiveFiles)" WorkingDirectory="@(MetaPackageNupkg->'$(TempDir)%(Filename)')" Overwrite="true" />
|
||||
</Target>
|
||||
|
||||
<Target Name="BuildInstallers" DependsOnTargets="GenerateDebs" />
|
||||
|
||||
<Target Name="GenerateDebs">
|
||||
<Target Name="BuildInstallers" DependsOnTargets="GenerateDebs;GenerateRpms" />
|
||||
|
||||
<Target Name="EnsureInstallerPrerequisites">
|
||||
<!-- Check Docker server OS -->
|
||||
<Exec Command="docker version -f "{{.Server.Os}}"" ConsoleToMSBuild="true">
|
||||
<Output TaskParameter="ConsoleOutput" PropertyName="DockerHostOS" />
|
||||
|
|
@ -328,12 +332,146 @@
|
|||
|
||||
<Error Text="@(RuntimeStoreTimestampArchive->Count()) timestamp linux archives found." Condition="'@(RuntimeStoreTimestampArchive->Count())' != 1" />
|
||||
<Error Text="@(RuntimeStoreNoTimestampArchive->Count()) no timestamp linux archives found." Condition="'@(RuntimeStoreNoTimestampArchive->Count())' != 1" />
|
||||
</Target>
|
||||
|
||||
<Target Name="GenerateRpms" DependsOnTargets="EnsureInstallerPrerequisites">
|
||||
<!-- Create layout: Aspnet runtime store -->
|
||||
<RemoveDir Directories="$(RuntimeStoreInstallerLayoutPackageRootTimestampDirectory)" />
|
||||
<RemoveDir Directories="$(RuntimeStoreInstallerLayoutTimestampDirectory)" />
|
||||
<MakeDir Directories="$(RuntimeStoreInstallerLayoutPackageRootTimestampDirectory)" />
|
||||
<Exec Command="tar -xzf @(RuntimeStoreTimestampArchive) -C $(RuntimeStoreInstallerLayoutPackageRootTimestampDirectory)" />
|
||||
<RemoveDir Directories="$(RuntimeStoreInstallerLayoutPackageRootNoTimestampDirectory)" />
|
||||
<RemoveDir Directories="$(RuntimeStoreInstallerLayoutNoTimestampDirectory)" />
|
||||
<MakeDir Directories="$(RuntimeStoreInstallerLayoutPackageRootNoTimestampDirectory)" />
|
||||
<Exec Command="tar -xzf @(RuntimeStoreNoTimestampArchive) -C $(RuntimeStoreInstallerLayoutPackageRootNoTimestampDirectory)" />
|
||||
|
||||
<!-- Create layout: Place changelog -->
|
||||
<Copy
|
||||
SourceFiles="$(RPMChangelogTemplateFile)"
|
||||
DestinationFiles="$(RuntimeStoreInstallerLayoutTimestampDirectory)templates/changelog"
|
||||
OverwriteReadOnlyFiles="True"
|
||||
SkipUnchangedFiles="False"
|
||||
UseHardlinksIfPossible="False" />
|
||||
<Copy
|
||||
SourceFiles="$(RPMChangelogTemplateFile)"
|
||||
DestinationFiles="$(RuntimeStoreInstallerLayoutNoTimestampDirectory)templates/changelog"
|
||||
OverwriteReadOnlyFiles="True"
|
||||
SkipUnchangedFiles="False"
|
||||
UseHardlinksIfPossible="False" />
|
||||
|
||||
<!-- Update Date and Version -->
|
||||
<Exec Command="sed -i -e 's/DATE/$([System.DateTime]::UtcNow.ToString(ddd MMM dd yyyy))/' $(RuntimeStoreInstallerLayoutTimestampDirectory)templates/changelog" />
|
||||
<Exec Command="sed -i -e 's/DATE/$([System.DateTime]::UtcNow.ToString(ddd MMM dd yyyy))/' $(RuntimeStoreInstallerLayoutNoTimestampDirectory)templates/changelog" />
|
||||
<Exec Command="sed -i -e 's/PACKAGE_VERSION/$(TimestampVersion)/' $(RuntimeStoreInstallerLayoutTimestampDirectory)templates/changelog" />
|
||||
<Exec Command="sed -i -e 's/PACKAGE_VERSION/$(NoTimestampVersion)/' $(RuntimeStoreInstallerLayoutNoTimestampDirectory)templates/changelog" />
|
||||
|
||||
<MSBuild Projects="$(ProjectPath)" Targets="BuildRuntimeStoreRPM" Properties="InstallerPlatform=rhel" />
|
||||
</Target>
|
||||
|
||||
<Target Name="BuildRuntimeStoreRPM">
|
||||
<ItemGroup>
|
||||
<RPMDirectories Include="/usr/share/dotnet/store" />
|
||||
<RPMDirectories Include="/usr/share/dotnet/additionalDeps" />
|
||||
</ItemGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
<RuntimeStoreTimestampRPMFileName>$(RuntimeStoreTimestampInstallerPackageName)-$(InstallerPlatform)-$(PACKAGE_CACHE_PLATFORM).rpm</RuntimeStoreTimestampRPMFileName>
|
||||
<RuntimeStoreNoTimestampRPMFileName>$(RuntimeStoreNoTimestampInstallerPackageName)-$(InstallerPlatform)-$(PACKAGE_CACHE_PLATFORM).rpm</RuntimeStoreNoTimestampRPMFileName>
|
||||
<RPMDirectoriesArguments>@(RPMDirectories->' --directories "%(FullPath)"', ' ')</RPMDirectoriesArguments>
|
||||
<InstallerSummary>Microsoft ASP.NET Core Runtime Package Store 2.0.0 - Preview 2</InstallerSummary>
|
||||
<InstalerDescription>Runtime package store for Microsoft ASP.NET Core. It is open source, cross-platform and is supported by Microsoft. We hope you enjoy using it! If you do, please consider joining the active community of developers that are contributing to the project on GitHub (https://github.com/aspnet/home). We happily accept issues and PRs.</InstalerDescription>
|
||||
<InstallerMaintainerName>Microsoft</InstallerMaintainerName>
|
||||
<InstallerMaintainerEmail>nugetaspnet@microsoft.com</InstallerMaintainerEmail>
|
||||
<InstallerVendor>.NET Foundation</InstallerVendor>
|
||||
<InstallerLicense>Apache</InstallerLicense>
|
||||
<InstallerPackageRevision>1</InstallerPackageRevision>
|
||||
<InstallerHomepage>https://www.asp.net/</InstallerHomepage>
|
||||
<InstallerInstallRoot>/usr/share/dotnet</InstallerInstallRoot>
|
||||
</PropertyGroup>
|
||||
|
||||
<!-- Clear the output dir -->
|
||||
<RemoveDir Directories="$(RuntimeStoreInstallerOutputTimeStampDirectory);$(RuntimeStoreInstallerOutputNoTimeStampDirectory)" />
|
||||
<MakeDir Directories="$(RuntimeStoreInstallerOutputTimeStampDirectory);$(RuntimeStoreInstallerOutputNoTimeStampDirectory)" />
|
||||
|
||||
<!-- Build Docker Image -->
|
||||
<Exec
|
||||
Command="docker build --build-arg USER_ID=%24(id -u) -t docker-image-$(InstallerPlatform) $(InstallerPlatform)"
|
||||
WorkingDirectory="$(DockerDir)" />
|
||||
|
||||
<!-- Build Runtime Store Deb package -->
|
||||
<Exec Command="docker run
|
||||
--rm
|
||||
-v $(RepositoryRoot):$(DockerRootDirectory)
|
||||
docker-image-$(InstallerPlatform)
|
||||
fpm
|
||||
--verbose
|
||||
-s dir
|
||||
-t rpm
|
||||
-n $(RuntimeStoreTimestampInstallerPackageName)
|
||||
-v $(TimestampVersion)
|
||||
-a amd64
|
||||
$(RPMDirectoriesArguments)
|
||||
--rpm-changelog $(DockerRootDirectory)artifacts/itLayout/templates/changelog
|
||||
--rpm-summary "$(InstallerSummary)"
|
||||
--description "$(InstalerDescription)"
|
||||
--maintainer "$(InstallerMaintainerName) <$(InstallerMaintainerEmail)>"
|
||||
--vendor "$(InstallerVendor)"
|
||||
-p $(DockerRootDirectory)artifacts/itOutput/$(RuntimeStoreTimestampRPMFileName)
|
||||
--license "$(InstallerLicense)"
|
||||
--iteration $(InstallerPackageRevision)
|
||||
--url "$(InstallerHomepage)"
|
||||
$(DockerRootDirectory)artifacts/itLayout/package_root/=$(InstallerInstallRoot)" />
|
||||
<Exec Command="docker run
|
||||
--rm
|
||||
-v $(RepositoryRoot):$(DockerRootDirectory)
|
||||
docker-image-$(InstallerPlatform)
|
||||
fpm
|
||||
--verbose
|
||||
-s dir
|
||||
-t rpm
|
||||
-n $(RuntimeStoreNoTimestampInstallerPackageName)
|
||||
-v $(NoTimestampVersion)
|
||||
-a amd64
|
||||
$(RPMDirectoriesArguments)
|
||||
--rpm-changelog $(DockerRootDirectory)artifacts/inLayout/templates/changelog
|
||||
--rpm-summary "$(InstallerSummary)"
|
||||
--description "$(InstalerDescription)"
|
||||
--maintainer "$(InstallerMaintainerName) %3C$(InstallerMaintainerEmail)%3E"
|
||||
--vendor "$(InstallerVendor)"
|
||||
-p $(DockerRootDirectory)artifacts/inOutput/$(RuntimeStoreNoTimestampRPMFileName)
|
||||
--license "$(InstallerLicense)"
|
||||
--iteration $(InstallerPackageRevision)
|
||||
--url "$(InstallerHomepage)"
|
||||
$(DockerRootDirectory)artifacts/inLayout/package_root/=$(InstallerInstallRoot)" />
|
||||
|
||||
<!-- Remove Docker Image to save disk space -->
|
||||
<Exec Command="docker rmi docker-image-$(InstallerPlatform)" />
|
||||
|
||||
<!-- Copy Runtime Store package to output -->
|
||||
<ItemGroup>
|
||||
<GeneratedTimestampRPMFiles Include="$(RuntimeStoreInstallerOutputTimeStampDirectory)/*.rpm" />
|
||||
<GeneratedNoTimestampRPMFiles Include="$(RuntimeStoreInstallerOutputNoTimeStampDirectory)/*.rpm" />
|
||||
</ItemGroup>
|
||||
|
||||
<Error Text="@(GeneratedTimestampRPMFiles->Count()) timestamp .rpm files generated." Condition="'@(GeneratedTimestampRPMFiles->Count())' != 1" />
|
||||
<Error Text="@(GeneratedNoTimestampRPMFiles->Count()) no timestamp .rpm files generated." Condition="'@(GeneratedNoTimestampRPMFiles->Count())' != 1" />
|
||||
|
||||
<Copy
|
||||
DestinationFiles="$(RuntimeStoreInstallerDirectory)$(RuntimeStoreTimestampRPMFileName)"
|
||||
SourceFiles="@(GeneratedTimestampRPMFiles)"
|
||||
OverwriteReadOnlyFiles="true"
|
||||
SkipUnchangedFiles="false" />
|
||||
<Copy
|
||||
DestinationFiles="$(RuntimeStoreInstallerDirectory)$(RuntimeStoreNoTimestampRPMFileName)"
|
||||
SourceFiles="@(GeneratedNoTimestampRPMFiles)"
|
||||
OverwriteReadOnlyFiles="true"
|
||||
SkipUnchangedFiles="false" />
|
||||
</Target>
|
||||
|
||||
<Target Name="GenerateDebs" DependsOnTargets="EnsureInstallerPrerequisites">
|
||||
<!-- Create layout: Aspnet runtime store -->
|
||||
<RemoveDir Directories="$(RuntimeStoreInstallerLayoutTimestampDirectory)" />
|
||||
<MakeDir Directories="$(RuntimeStoreInstallerLayoutPackageRootTimestampDirectory)" />
|
||||
<Exec Command="tar -xzf @(RuntimeStoreTimestampArchive) -C $(RuntimeStoreInstallerLayoutPackageRootTimestampDirectory)" />
|
||||
<RemoveDir Directories="$(RuntimeStoreInstallerLayoutNoTimestampDirectory)" />
|
||||
<MakeDir Directories="$(RuntimeStoreInstallerLayoutPackageRootNoTimestampDirectory)" />
|
||||
<Exec Command="tar -xzf @(RuntimeStoreNoTimestampArchive) -C $(RuntimeStoreInstallerLayoutPackageRootNoTimestampDirectory)" />
|
||||
|
||||
|
|
@ -357,12 +495,11 @@
|
|||
<MSBuild Projects="$(ProjectPath)" Targets="BuildRuntimeStoreDeb" Properties="InstallerPlatform=ubuntu.16.10" />
|
||||
</Target>
|
||||
|
||||
|
||||
<Target Name="BuildRuntimeStoreDeb">
|
||||
<PropertyGroup>
|
||||
<RuntimeStoreTimestampDebianPackageName>aspnetcore-store-$(TimestampVersion)</RuntimeStoreTimestampDebianPackageName>
|
||||
<RuntimeStoreNoTimestampDebianPackageName>aspnetcore-store-$(NoTimestampVersion)</RuntimeStoreNoTimestampDebianPackageName>
|
||||
<RuntimeStoreTimestampDebianFileName>$(RuntimeStoreTimestampDebianPackageName)-$(InstallerPlatform)-$(PACKAGE_CACHE_PLATFORM).deb</RuntimeStoreTimestampDebianFileName>
|
||||
<RuntimeStoreNoTimestampDebianFileName>$(RuntimeStoreNoTimestampDebianPackageName)-$(InstallerPlatform)-$(PACKAGE_CACHE_PLATFORM).deb</RuntimeStoreNoTimestampDebianFileName>
|
||||
<RuntimeStoreTimestampDebianFileName>$(RuntimeStoreTimestampInstallerPackageName)-$(InstallerPlatform)-$(PACKAGE_CACHE_PLATFORM).deb</RuntimeStoreTimestampDebianFileName>
|
||||
<RuntimeStoreNoTimestampDebianFileName>$(RuntimeStoreNoTimestampInstallerPackageName)-$(InstallerPlatform)-$(PACKAGE_CACHE_PLATFORM).deb</RuntimeStoreNoTimestampDebianFileName>
|
||||
</PropertyGroup>
|
||||
|
||||
<!-- Clear the output dir -->
|
||||
|
|
@ -384,21 +521,20 @@
|
|||
<!-- Build Runtime Store Deb package -->
|
||||
<Exec Command="docker run
|
||||
--rm
|
||||
-v %24(pwd):/opt/code
|
||||
-v $(RepositoryRoot):$(DockerRootDirectory)
|
||||
-e DOTNET_SKIP_FIRST_TIME_EXPERIENCE=true
|
||||
-e KOREBUILD_SKIP_RUNTIME_INSTALL=true
|
||||
-e BuildNumber=$(BuildNumber)
|
||||
-e RUNTIMESTORE_TIMESTAMP_INSTALLERNAME=$(RuntimeStoreTimestampDebianPackageName)
|
||||
-e RUNTIMESTORE_NOTIMESTAMP_INSTALLERNAME=$(RuntimeStoreNoTimestampDebianPackageName)
|
||||
-e RUNTIMESTORE_TIMESTAMP_INSTALLERNAME=$(RuntimeStoreTimestampInstallerPackageName)
|
||||
-e RUNTIMESTORE_NOTIMESTAMP_INSTALLERNAME=$(RuntimeStoreNoTimestampInstallerPackageName)
|
||||
docker-image-$(InstallerPlatform)
|
||||
/bin/bash -c "
|
||||
/opt/code/.build/dotnet/dotnet-install.sh
|
||||
$(DockerRootDirectory).build/dotnet/dotnet-install.sh
|
||||
--channel preview
|
||||
--version $(CLIVersionNumber) &&
|
||||
export PATH=$PATH:/home/code_executor/.dotnet &&
|
||||
./build.sh /t:RunDebTool
|
||||
""
|
||||
WorkingDirectory="$(RepositoryRoot)"
|
||||
ContinueOnError="WarnAndContinue" />
|
||||
|
||||
<!-- Remove Docker Image to save disk space -->
|
||||
|
|
|
|||
|
|
@ -0,0 +1,2 @@
|
|||
* DATE Microsoft <nugetaspnet@microsoft.com> - PACKAGE_VERSION-1
|
||||
- Bootstrap loop package
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
#
|
||||
# Copyright (c) .NET Foundation. All rights reserved.
|
||||
# Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
#
|
||||
|
||||
# Dockerfile that creates a container suitable to build dotnet-cli
|
||||
FROM microsoft/dotnet-buildtools-prereqs:rhel-7-rpmpkg-c982313-20174116044113
|
||||
|
||||
# Install from sudo main package TODO This package needs to be mirrored
|
||||
RUN yum install -y https://www.sudo.ws/sudo/dist/packages/RHEL/7/sudo-1.8.20-3.el7.x86_64.rpm \
|
||||
&& yum clean all
|
||||
|
||||
# Setup User to match Host User, and give superuser permissions
|
||||
ARG USER_ID=0
|
||||
RUN useradd -m code_executor -u ${USER_ID} -g root
|
||||
RUN echo 'code_executor ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
|
||||
|
||||
# With the User Change, we need to change permssions on these directories
|
||||
RUN chmod -R a+rwx /usr/local
|
||||
RUN chmod -R a+rwx /home
|
||||
RUN chown root:root /usr/bin/sudo && chmod 4755 /usr/bin/sudo
|
||||
|
||||
# Set user to the one we just created
|
||||
USER ${USER_ID}
|
||||
|
||||
# Set working directory
|
||||
WORKDIR /opt/code
|
||||
Loading…
Reference in New Issue