Merge branch 'release/2.1' into dev

This commit is contained in:
Nate McMaster 2018-02-01 10:40:07 -08:00
commit 864ee50b4c
7 changed files with 163 additions and 10 deletions

1
.gitignore vendored
View File

@ -23,3 +23,4 @@ node_modules
.deps
global.json
msbuild.ProjectImports.zip
.env

View File

@ -55,7 +55,7 @@
Value="$(PackageVersion)" />
</Target>
<Target Name="GetFilesToPublish" DependsOnTargets="ResolveRepoInfo;GeneratePublishFiles">
<Target Name="GetFilesToPublish" DependsOnTargets="GetArtifactInfo;GeneratePublishFiles">
<PropertyGroup>
<BlobBasePath>Runtime/$(PackageVersion)/</BlobBasePath>
<AliasBlobBasePath>Runtime/$(SharedFxCliBlobChannel)/</AliasBlobBasePath>
@ -133,7 +133,12 @@
<Output TaskParameter="JoinResult" ItemName="PackagesToPublish" />
</RepoTasks.JoinItems>
<Message Text="@(FilesToPublish -> '%(FullPath) -> %(RelativeBlobPath)','%0A')" />
<ItemGroup>
<_MissingPackages Include="@(PackageArtifact)" />
<_MissingPackages Remove="%(PackagesToPublish.PackageId)" />
</ItemGroup>
<Error Text="Missing expected packages from PackagesToPublish: %0A - @(_MissingPackages, '%0A - ')" Condition="@(_MissingPackages->Count()) != 0" />
</Target>
<Target Name="_CheckFilesToPublish">

View File

@ -2,10 +2,28 @@
<Import Project="common.props" />
<Import Project="SharedFx.props" />
<PropertyGroup>
<GetArtifactInfoDependsOn>$(GetArtifactInfoDependsOn);GetMetapackageArtifactInfo</GetArtifactInfoDependsOn>
</PropertyGroup>
<PropertyGroup>
<SharedFxOutputPath>$([MSBuild]::NormalizeDirectory($(ArtifactsDir)))assets\Runtime\$(PackageVersion)\</SharedFxOutputPath>
</PropertyGroup>
<Target Name="GetMetapackageArtifactInfo">
<ItemGroup>
<_MetapackageProject Include="$(RepositoryRoot)src\Microsoft.AspNetCore.All\Microsoft.AspNetCore.All.csproj" />
<_MetapackageProject Include="$(RepositoryRoot)src\Microsoft.AspNetCore.App\Microsoft.AspNetCore.App.csproj" />
<_MetapackageProject Include="$(RepositoryRoot)src\Microsoft.AspNetCore.Analyzers\Microsoft.AspNetCore.Analyzers.csproj" />
</ItemGroup>
<MSBuild Projects="@(_MetapackageProject)"
Targets="GetArtifactInfo"
Properties="PackageOutputPath=$(BuildDir);BuildNumber=$(BuildNumber);DesignTimeBuild=true;IsFinalBuild=$(IsFinalBuild)">
<Output TaskParameter="TargetOutputs" ItemName="ArtifactInfo" />
</MSBuild>
</Target>
<Target Name="_BuildMetapackage" DependsOnTargets="ResolveRepoInfo">
<PropertyGroup>
<MetapackageSource>$(_MetapackageSrcRoot)$(MetapackageName)\</MetapackageSource>

View File

@ -1,24 +1,40 @@
<Project>
<PropertyGroup>
<TemplatingProjectRoot>$(MSBuildThisFileDirectory)..\modules\Templating\</TemplatingProjectRoot>
<GetArtifactInfoDependsOn>$(GetArtifactInfoDependsOn);GetTemplateArtifactInfo</GetArtifactInfoDependsOn>
</PropertyGroup>
<PropertyGroup>
<TemplateProjProperties>
RepositoryRoot=$(TemplatingProjectRoot);
BuildNumber=$(BuildNumber);
Configuration=$(Configuration);
IsFinalBuild=$(IsFinalBuild);
</TemplateProjProperties>
</PropertyGroup>
<Target Name="GetTemplateArtifactInfo">
<MSBuild Projects="$(MSBuildProjectFullPath)"
Targets="GetArtifactInfo"
Properties="$(TemplateProjProperties);DesignTimeBuild=true">
<Output TaskParameter="TargetOutputs" ItemName="ArtifactInfo" />
</MSBuild>
</Target>
<Target Name="BuildTemplates" DependsOnTargets="GeneratePropsFiles">
<PropertyGroup>
<TemplateProjProperties>
RepositoryRoot=$(TemplatingProjectRoot);
<_BuildTemplateProjProperties>
$(TemplateProjProperties);
SkipAspNetCoreRuntimeInstall=true;
DotNetRestoreSourcesPropsPath=$(GeneratedRestoreSourcesPropsPath);
DotNetPackageVersionPropsPath=$(GeneratedPackageVersionPropsPath);
BuildNumber=$(BuildNumber);
Configuration=$(Configuration);
IsFinalBuild=$(IsFinalBuild);
SkipAspNetCoreRuntimeInstall=true;
</TemplateProjProperties>
SkipTests=true;
</_BuildTemplateProjProperties>
</PropertyGroup>
<MSBuild Projects="$(MSBuildProjectFullPath)"
Targets="CleanArtifacts;Build"
Properties="$(TemplateProjProperties);SkipTests=true" />
Properties="$(_BuildTemplateProjProperties)" />
<ItemGroup>
<TemplateArtifacts Include="$(TemplatingProjectRoot)artifacts\build\*" />

2
scripts/requirements.txt Normal file
View File

@ -0,0 +1,2 @@
PyYAML==3.12
termcolor==1.1.0

View File

@ -0,0 +1,100 @@
#!/usr/bin/env python3
import collections
import glob
import yaml
from os import path
from termcolor import colored, cprint
from yaml.constructor import Constructor
def dump_format(dump, tag, mapping, flow_style=None):
"""
Better output formatting for YAML dictionaries
"""
value = []
node = yaml.MappingNode(tag, value, flow_style=flow_style)
if dump.alias_key is not None:
dump.represented_objects[dump.alias_key] = node
best_style = True
if hasattr(mapping, 'items'):
mapping = mapping.items()
for item_key, item_value in mapping:
node_key = dump.represent_data(item_key)
node_value = dump.represent_data(item_value)
if not (isinstance(node_key, yaml.ScalarNode) and not node_key.style):
best_style = False
if not (isinstance(node_value, yaml.ScalarNode) and not node_value.style):
best_style = False
value.append((node_key, node_value))
if flow_style is None:
if dump.default_flow_style is not None:
node.flow_style = dump.default_flow_style
else:
node.flow_style = best_style
return node
def add_bool_as_scalar(self, node):
"""
Don't auto-parse boolean values
"""
if node.value == 'true' or node.value == 'false' :
return self.construct_yaml_bool(node)
return self.construct_scalar(node)
_mapping_tag = yaml.resolver.BaseResolver.DEFAULT_MAPPING_TAG
def dict_representer(dumper, data):
return dumper.represent_mapping(_mapping_tag, data.iteritems())
def dict_constructor(loader, node):
return collections.OrderedDict(loader.construct_pairs(node))
def update(pattern, updater):
print('\n\n\n')
cprint(pattern, 'magenta')
for f in glob.glob(path.join(repo_root, "modules", "*", pattern)):
yml = path.join(repo_root, f)
if not path.exists(yml):
cprint("File does not exist: {}".format(yml), 'red')
continue
print("Updating {}".format(yml))
document = yaml.load(open(yml, 'r'))
document = updater(document)
yml_file = open(yml, 'w')
yml_file.write(yaml.safe_dump(document, default_flow_style=False, indent=2))
yml_file.close()
#
# Config yaml parser
#
# Do not reorder keys in yaml file
yaml.add_representer(collections.OrderedDict, dict_representer)
yaml.add_constructor(_mapping_tag, dict_constructor)
# Pretty print dictionaries
yaml.SafeDumper.add_representer(collections.OrderedDict,
lambda dumper, value: dump_format(dumper, u'tag:yaml.org,2002:map', value))
# Don't parse booleans - treat them as scalars
yaml.Loader.add_constructor(u'tag:yaml.org,2002:bool', add_bool_as_scalar)
yaml.SafeLoader.add_constructor(u'tag:yaml.org,2002:bool', add_bool_as_scalar)
#
# Main
#
repo_root = path.dirname(path.dirname(path.abspath(__file__)))
def transform_yaml_doc(document):
if not 'branches' in document:
document['branches'] = {}
document['branches']['only'] = [
'dev', '/^release\/.*$/', '/^(.*\/)?ci-.*$/']
return document
update(".travis.yml", transform_yaml_doc)
update(".appveyor.yml", transform_yaml_doc)

View File

@ -0,0 +1,11 @@
<Project>
<Target Name="GetArtifactInfo" Returns="@(ArtifactInfo)">
<ItemGroup>
<ArtifactInfo Include="$(PackageOutputPath)$(PackageId).$(PackageVersion).nupkg">
<ArtifactType>NuGetPackage</ArtifactType>
<PackageId>$(PackageId)</PackageId>
<Version>$(PackageVersion)</Version>
</ArtifactInfo>
</ItemGroup>
</Target>
</Project>