Create NuGet packages as part of the build
This commit is contained in:
parent
f67a247252
commit
413488f502
7 changed files with 58 additions and 16 deletions
|
@ -1,3 +1,18 @@
|
|||
# Copyright (c) .NET Foundation and contributors. All rights reserved.
|
||||
# Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
||||
|
||||
param(
|
||||
[string]$toolsDir = $(throw "Specify the full path to the directory which has dotnet tool"),
|
||||
[string]$versionSuffix = ""
|
||||
)
|
||||
|
||||
# unify trailing backslash
|
||||
$toolsDir = $toolsDir.TrimEnd('\')
|
||||
$versionArg = ""
|
||||
if ($versionSuffix -ne "") {
|
||||
$versionArg = "--version-suffix $VersionSuffix"
|
||||
}
|
||||
|
||||
. "$PSScriptRoot\..\..\scripts\_common.ps1"
|
||||
|
||||
$IntermediatePackagesDir = "$RepoRoot\artifacts\packages\intermediate"
|
||||
|
@ -15,14 +30,14 @@ $Projects = @(
|
|||
|
||||
foreach ($ProjectName in $Projects) {
|
||||
$ProjectFile = "$RepoRoot\src\$ProjectName\project.json"
|
||||
& dotnet restore "$ProjectFile"
|
||||
& $toolsDir\dotnet restore "$ProjectFile"
|
||||
if (!$?) {
|
||||
Write-Host "dotnet restore failed for: $ProjectFile"
|
||||
Write-Host "$toolsDir\dotnet restore failed for: $ProjectFile"
|
||||
Exit 1
|
||||
}
|
||||
& dotnet pack "$ProjectFile" --output "$IntermediatePackagesDir"
|
||||
& $toolsDir\dotnet pack "$ProjectFile" --output "$IntermediatePackagesDir" $versionArg
|
||||
if (!$?) {
|
||||
Write-Host "dotnet pack failed for: $ProjectFile"
|
||||
Write-Host "$toolsDir\dotnet pack failed for: $ProjectFile"
|
||||
Exit 1
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,6 +18,7 @@ if (!(Test-Path $env:DOTNET_INSTALL_DIR))
|
|||
}
|
||||
$env:PATH = "$env:DOTNET_INSTALL_DIR\cli\bin;$env:PATH"
|
||||
|
||||
$VersionSuffix = ""
|
||||
if (!$env:DOTNET_BUILD_VERSION) {
|
||||
# Get the timestamp of the most recent commit
|
||||
$timestamp = git log -1 --format=%ct
|
||||
|
@ -27,8 +28,10 @@ if (!$env:DOTNET_BUILD_VERSION) {
|
|||
$minorVersion = 0
|
||||
$buildnumber = $commitTime.Days
|
||||
$revnumber = $commitTime.TotalSeconds
|
||||
|
||||
$VersionSuffix = "$buildnumber.$revnumber"
|
||||
|
||||
$env:DOTNET_BUILD_VERSION = "$majorVersion.$minorVersion.$buildnumber.$revnumber"
|
||||
$env:DOTNET_BUILD_VERSION = "$majorVersion.$minorVersion.$VersionSuffix"
|
||||
}
|
||||
|
||||
Write-Host -ForegroundColor Green "*** Building dotnet tools version $($env:DOTNET_BUILD_VERSION) - $Configuration ***"
|
||||
|
@ -52,3 +55,11 @@ if (!$?) {
|
|||
Write-Host "Generating dotnet MSI finished with errors."
|
||||
Exit 1
|
||||
}
|
||||
|
||||
|
||||
Write-Host -ForegroundColor Green "*** Generating NuGet packages ***"
|
||||
& "$RepoRoot\packaging\nuget\package.ps1" $Stage2Dir\bin $VersionSuffix
|
||||
if (!$?) {
|
||||
Write-Host "Generating NuGet packages finished with errors."
|
||||
Exit 1
|
||||
}
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
{
|
||||
"version": "1.0.0-*",
|
||||
"dependencies": {
|
||||
"Microsoft.DotNet.ProjectModel": "1.0.0-*",
|
||||
"Microsoft.CodeAnalysis.CSharp.Workspaces": "1.1.0-*"
|
||||
|
|
|
@ -83,13 +83,13 @@ namespace Microsoft.DotNet.ProjectModel
|
|||
/// <summary>
|
||||
/// Creates a project context for each framework located in the project at <paramref name="projectPath"/>
|
||||
/// </summary>
|
||||
public static IEnumerable<ProjectContext> CreateContextForEachFramework(string projectPath)
|
||||
public static IEnumerable<ProjectContext> CreateContextForEachFramework(string projectPath, ProjectReader.Settings settings = null)
|
||||
{
|
||||
if(!projectPath.EndsWith(Project.FileName))
|
||||
{
|
||||
projectPath = Path.Combine(projectPath, Project.FileName);
|
||||
}
|
||||
var project = ProjectReader.GetProject(projectPath);
|
||||
var project = ProjectReader.GetProject(projectPath, settings);
|
||||
|
||||
foreach(var framework in project.GetTargetFrameworks())
|
||||
{
|
||||
|
|
|
@ -16,6 +16,11 @@ namespace Microsoft.DotNet.ProjectModel
|
|||
{
|
||||
public class ProjectReader
|
||||
{
|
||||
public class Settings
|
||||
{
|
||||
public string VersionSuffix = null;
|
||||
}
|
||||
|
||||
public static bool TryGetProject(string path, out Project project, ICollection<DiagnosticMessage> diagnostics = null)
|
||||
{
|
||||
project = null;
|
||||
|
@ -61,22 +66,23 @@ namespace Microsoft.DotNet.ProjectModel
|
|||
return true;
|
||||
}
|
||||
|
||||
public static Project GetProject(string projectFile)
|
||||
public static Project GetProject(string projectFile, Settings settings = null)
|
||||
{
|
||||
return GetProject(projectFile, new List<DiagnosticMessage>());
|
||||
return GetProject(projectFile, new List<DiagnosticMessage>(), settings);
|
||||
}
|
||||
|
||||
public static Project GetProject(string projectFile, ICollection<DiagnosticMessage> diagnostics)
|
||||
public static Project GetProject(string projectFile, ICollection<DiagnosticMessage> diagnostics, Settings settings = null)
|
||||
{
|
||||
var name = Path.GetFileName(Path.GetDirectoryName(projectFile));
|
||||
using (var stream = new FileStream(projectFile, FileMode.Open, FileAccess.Read, FileShare.Read))
|
||||
{
|
||||
return new ProjectReader().ReadProject(stream, name, projectFile, diagnostics);
|
||||
return new ProjectReader().ReadProject(stream, name, projectFile, diagnostics, settings);
|
||||
}
|
||||
}
|
||||
|
||||
public Project ReadProject(Stream stream, string projectName, string projectPath, ICollection<DiagnosticMessage> diagnostics)
|
||||
public Project ReadProject(Stream stream, string projectName, string projectPath, ICollection<DiagnosticMessage> diagnostics, Settings settings = null)
|
||||
{
|
||||
settings = settings ?? new Settings();
|
||||
var project = new Project();
|
||||
|
||||
var reader = new StreamReader(stream);
|
||||
|
@ -101,7 +107,7 @@ namespace Microsoft.DotNet.ProjectModel
|
|||
{
|
||||
try
|
||||
{
|
||||
var buildVersion = Environment.GetEnvironmentVariable("DOTNET_BUILD_VERSION");
|
||||
var buildVersion = settings.VersionSuffix ?? Environment.GetEnvironmentVariable("DOTNET_BUILD_VERSION");
|
||||
project.Version = SpecifySnapshot(version, buildVersion);
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
{
|
||||
"version": "1.0.0-*",
|
||||
"compilationOptions": {
|
||||
"emitEntryPoint": true
|
||||
},
|
||||
|
|
|
@ -37,6 +37,7 @@ namespace Microsoft.DotNet.Tools.Compiler
|
|||
var output = app.Option("-o|--output <OUTPUT_DIR>", "Directory in which to place outputs", CommandOptionType.SingleValue);
|
||||
var intermediateOutput = app.Option("-t|--temp-output <OUTPUT_DIR>", "Directory in which to place temporary outputs", CommandOptionType.SingleValue);
|
||||
var configuration = app.Option("-c|--configuration <CONFIGURATION>", "Configuration under which to build", CommandOptionType.SingleValue);
|
||||
var versionSuffix = app.Option("--version-suffix <VERSION_SUFFIX>", "Defines what `*` should be replaced with in version field in project.json", CommandOptionType.SingleValue);
|
||||
var project = app.Argument("<PROJECT>", "The project to compile, defaults to the current directory. Can be a path to a project.json or a project directory");
|
||||
|
||||
app.OnExecute(() =>
|
||||
|
@ -59,10 +60,17 @@ namespace Microsoft.DotNet.Tools.Compiler
|
|||
return 1;
|
||||
}
|
||||
|
||||
ProjectReader.Settings settings = null;
|
||||
if (versionSuffix.HasValue())
|
||||
{
|
||||
settings = new ProjectReader.Settings();
|
||||
settings.VersionSuffix = versionSuffix.Value();
|
||||
}
|
||||
|
||||
var configValue = configuration.Value() ?? Cli.Utils.Constants.DefaultConfiguration;
|
||||
var outputValue = output.Value();
|
||||
|
||||
return TryBuildPackage(path, configValue, outputValue, intermediateOutput.Value()) ? 0 : 1;
|
||||
return TryBuildPackage(path, configValue, outputValue, intermediateOutput.Value(), settings) ? 0 : 1;
|
||||
});
|
||||
|
||||
try
|
||||
|
@ -80,9 +88,9 @@ namespace Microsoft.DotNet.Tools.Compiler
|
|||
}
|
||||
}
|
||||
|
||||
private static bool TryBuildPackage(string path, string configuration, string outputValue, string intermediateOutputValue)
|
||||
private static bool TryBuildPackage(string path, string configuration, string outputValue, string intermediateOutputValue, ProjectReader.Settings settings = null)
|
||||
{
|
||||
var contexts = ProjectContext.CreateContextForEachFramework(path);
|
||||
var contexts = ProjectContext.CreateContextForEachFramework(path, settings);
|
||||
var project = contexts.First().ProjectFile;
|
||||
|
||||
if (project.Files.SourceFiles.Any())
|
||||
|
|
Loading…
Reference in a new issue