Commit Graph

148 Commits

Author SHA1 Message Date
Nate McMaster 0ec25d3167
Create new 'runtime pack' nuget packages for Microsoft.AspNetCore.App (#7475)
* Create a new package  - Microsoft.AspNetCore.App.Runtime.${rid} - which contains crossgen-ed versions of shared framework assemblies. This will be used by the SDK to replace rid-split packages
* Add a task which can generate the .deps.json file for the shared framework. Unlike the existing task we have, this does not rely on consuming a .deps.json file generated by first running a restore on packages.
* Move the reference to xunit.runner.console into the normal targets and files for managing dependencies
* Produce binlogs during build
2019-02-14 07:25:13 -08:00
Nate McMaster 0bf063ec2c
Remove obsolete publishing targets and tasks (#7248) 2019-02-05 08:08:28 -08:00
Nate McMaster 6081fec894
Add new build.cmd/sh options for suppressing restore, NodeJS, setting target arch and OS name, and more (#7137)
Add new command line parameters for working with the project:

* `-NoBuild`, `-NoRestore` - these already existed, but users found it hard to discover this powershell syntax: '-build:$false'
* `-Arch`/`--arch` - set the target CPU architecture to build. Defaults to x64
* `--os-name` - on non-Windows builds, manually specify if the build should target Alpine. generic Linux, or MacOS
* Rename flags used to build specific project types. The pattern now is `--build-$(group)` or `--no-build-$(group)` (In PowerShell its `-Build$(Group)` or `-NoBuild$(Group). Example: -NoBuildJava

Changes to build definitions:
* Update the ci build definition to build all supported architectures
* Support publishing multiple artifacts per job

Other changes:
* `-NoBuild` implies `-NoRestore`
* Add new properties, `TargetArchitecture`, `TargetOsName`, and `TargetRuntimeIdentifier`
* Replace usages of `SharedFxRid` with these new properties
* To make `--no-build-nodejs` actually work, replaced Components.Browser.JS.csproj with Components.Browser.JS.npmproj
* Fix errors when building for win-arm on a clean machine
* Fix a few other project errors, like using the wrong syntax for DefaultItemExcludes, or using the wrong Platform value for x86
2019-01-31 15:47:47 -08:00
Nate McMaster ac04019e42
Remove obsolete build infrastructure (#6995)
Changes:

* Remove obsolete targets which are unnecessary now that this repo no longer builds git submodules in a separate build process
* Remove the need for static analysis of 'ArtifactInfo' items
* Simplify how the code signing task is configured
* Remove unused repo tasks
* Remove duplicate lists of external dependencies and packages to be produced
* Remove obsolete build definition
* Remove obsolete build script parameters
* Add VisualStudioSetupOutputPath
2019-01-28 09:57:59 -08:00
Nate McMaster 4235998962
Publish to the build asset registry and conditionally skip building Windows Azure build task (#6683) 2019-01-15 10:05:30 -08:00
Nate McMaster 7f7723bdf2
Consume dependencies updates automatically via darc (#6676)
This refactors the list of dependency versions to support consuming updates automatically via darc and maestro.
2019-01-14 12:01:31 -08:00
Nate McMaster 0f65d44482
Merge branch 'release/2.2' 2019-01-09 18:09:25 -08:00
Nate McMaster a3f9b74bb9
Merge branch 'release/2.1' into release/2.2 2019-01-09 14:52:53 -08:00
Nate McMaster 5d16f97965
Remove netcoreapp2.0 test TFMs (#6461)
.NET Core 2.0 reached EOL last year. This removes multi-targeting our test projects and test assets to only use .NET Core 2.1 and .NET Framework 4.6.1.
2019-01-08 11:20:09 -08:00
Justin Kotalik 7e0d6323d1
Fix JoinItems namespace collision (#6302) 2019-01-02 12:06:08 -08:00
Justin Kotalik 2b7a3a222a Build Windows Installers using the repo's main build script and repotasks (#6139)
Follow-up to #6078

This should solve race conditions in restoring .wixproj files.

Co-authored-by: Nate McMaster <natemcmaster@users.noreply.github.com>
Co-authored-by: Justin Kotalik <jkotalik@users.noreply.github.com>
2018-12-31 10:54:15 -08:00
Nate McMaster 2af766db49
Stop producing unused package archives (#6073)
The following package archives which are no longer used by partner teams. It is expected that these will be replaced by targeting packs.

* LZMA (was used by dotnet-cli)
* Package zips (ended up not getting used by anyone)
* Compat package zips (was used by Azure Web Apps)
2018-12-20 20:07:40 -08:00
Nate McMaster 85e2147ff0
Merge branch 'release/2.2' 2018-12-07 11:11:44 -08:00
Nate McMaster 569a14ecb8
Merge branch 'release/2.1' into release/2.2 2018-12-06 17:09:03 -08:00
Justin Kotalik 0588b13f5b Fix 2.1 build issues and remove obsolete build code (#4443)
- Stop producing the 'Universe' lineup package
- Removes all PackageLineup code
- Use full msbuild on Windows
- Fix invalid reference to internal.aspnetcore.sdk in 2.1.x
- Fix shared folder references for PackageArchive task.
2018-12-05 17:01:02 -08:00
Nate McMaster 0295f536ef
Stop shipping packages for assemblies which are shared-framework-only (#4178)
The removes the need to ship packages for assemblies which are part of Microsoft.AspNetCore.App. The implementation of this requires first building packages, and then modifying .nuspec's and categorizing packages as "noship". This will be cleaned up in the future as we continue to refactor the way this repository builds.
2018-11-21 10:33:07 -08:00
Nate McMaster 71ca1faa6b
React to MSBuild breaking changes and remove ProdCon v1 variables (#4161)
This should unblock the consumption of the latest .NET Core SDK, which includes breaking changes in MSBuild. We don't _really_ need the MSBuild APIs which were broken because ProdCon v1 is dead. This removes the unused ProdCon v1 tasks and targets.
2018-11-20 11:34:53 -08:00
Nate McMaster fd1a5b43f1
Generate PlatformManifest and package conflict overrides for Microsoft.AspNetCore.App (#4072)
This generates additional metadata for the .NET Core SDK to resolve conflicts between Microsoft.AspNetCore.App and PackageReferences which contain the same assemblies.
2018-11-16 16:36:14 -08:00
Nate McMaster 0e12274a8e
Flatten the dependency graph of Microsoft.AspNetCore.App (#4061)
This changes the way Microsoft.AspNetCore.App works to follow patterns set by Microsoft.NETCore.App. Instead of being a metapackage with dozens of dependencies, this package has no dependencies. It uses RID-splitting to deliver standalone assets for self-contained deployments.

Changes:
* Implements RID-split packages for Microsoft.AspNetCore.App.
* Update shared fx deps.json generation to only include entries for the RID-specific metapackages
* Include platform-specific packages in publish output
* Remove all nuspec dependencies of Microsoft.AspNetCore.App and collect all references into the package.
2018-11-16 15:16:15 -08:00
Nate McMaster c2685813ab
2.1: Update corefx dependencies (#4037) 2018-11-15 12:20:37 -08:00
Nate McMaster c1c7d711b6
Merge branch 'release/2.1' into release/2.2 2018-11-14 09:27:23 -08:00
Nate McMaster 59ed8df382
Add targets and tools for ensuring consistent package versions between servicing builds 2018-11-09 13:05:31 -08:00
Nate McMaster 34999a804e
Remove submodules for repos that merged to aspnet/Extensions (#3671)
Builds of the packages in aspnet/Extensions repo go through ProdCon instead of building as a submodule of this repo.
2018-11-09 08:48:42 -08:00
Nate McMaster 0ba800841b
Ensure build output is still present when crossgen is disabled
* Split targets for copying outputs and preparing the crossgen tool
* Fix version override check by only looking at the 'pinned' section
2018-10-26 16:00:48 -07:00
Nate McMaster 968df9578b
Refactor shared framework projects targets and project layout (#3703)
This refactors the targets used to build the shared framework and its .zip files. There are lots of reasons motivating this: Arcade convergence, migration to VSTS, making it easier to build this locally, etc.

Changes:
* Moves move content of build/Sharedfx.{props/targets} into eng/targets/SharedFx.Common.{props/targets}
* Update the build to produce a `runtime.$rid.Microsoft.AspNetCore.App` package (not just the one with symbols in it)
* Refactor the targets which produce .tar.gz/.zip files into separate projects in `src/Installers/`
* Refactor installers, unit tests, and the framework projects to use ProjectReference to flow dependencies between different parts of the build.
* Makes it easier to build the shared framework locally (for the inner dev loop, you can run `dotnet build -p src/Framework/Microsoft.AspNetCore.App/src/ -r win-x64`)
2018-10-24 15:42:06 -07:00
Nate McMaster eaad1eb3aa
Remove tasks for analyzing the repo graph (#1469)
As a part of converging repos, we no longer need this code. It is currently buggy and slow, and we can get away without by hard-coding the repo graph (which rarely changes)
2018-10-09 12:01:41 -07:00
Nate McMaster 12f4235342
Merge branch 'release/2.1' into release/2.2 2018-09-05 17:23:44 -07:00
Nate McMaster e9b0415bb9
Make System.IO.Pipelines a direct dependency of Microsoft.AspNetCore.App 2018-09-05 15:20:11 -07:00
Nate McMaster 555f10b5f9
Fix #650 - remove the BuildGraphOf property (#1302) 2018-08-10 09:42:43 -07:00
Nate McMaster 2e96271e69
Merge branch 'release/2.1' into release/2.2 2018-07-25 09:29:48 -07:00
Nate McMaster e69a47f230
Implement patch policies per repo and set default to ProductChangesOnly
Our policy since 1.0.0 has been to always cascade version updates in the packages we own. e.g. if Logging has a product change in 2.1.x, then Kestrel, EF Core, Mvc, etc also re-ship with the updated Logging dependency. This has been done for a variety of reasons:

* NuGet does not show updates for transitive dependencies, only direct ones
* NuGet does resolves the lowest compatible transitive dependencies
* ASP.NET Core ships to both .NET Framework (where transitive dependency version matters) and .NET Core (where it matters less if you use the shared framework)

While transitive dependencies is still an important scenario, this practice of always patching has led to bigger issues.

* High probability users will unintentionally upgrade out of the shared framework: #3307
* Conflicts with metapackages that attempt to use exact version constraints: aspnet/Universe#1180
* A quality perception issue: the high volume of new versions in servicing updates with only metadata changes has created the impression that new versions of packages may not be very important. It's also made it appear like there are more issues product than there really are.
* High volume of packages changing with only metadata changes. Of the last 301 packages published in a servicing update, only 11 contained actual changes to the implementation assemblies. (3.5%)

This change implements a system to verify a new, non-cascading versioning policy for servicing updates. This required changes to repos to pin version variables to that matter per-repo,
and to remove some of the restrictions and checks.

Incidentally, this should make defining new patches easier because it automatically determines which packages are or are not patching in the release.
2018-07-12 21:33:50 -07:00
Nate McMaster d50f75ac21
Merge branch 'release/2.1' into release/2.2 2018-07-10 16:17:44 -07:00
Nate McMaster b410a585f7
Merge 2.1.2 into release/2.1 2018-07-10 10:27:26 -07:00
Nate McMaster 9276602279
Merge branch 'release/2.1' into release/2.2 2018-07-06 13:43:43 -07:00
Nate McMaster bf03fee4be
Refactor LZMA generation to support Docker and Antares usage
List explicitly as .csproj files the scenarios for which the offline package cache is important

Produces new artifacts designed for various scenarios, such as:
 * Docker (where xml doc files are not needed)
 * Azure web apps (where 1.x SDKs must still be supported, but xml docs are not needed)
2018-07-06 13:15:23 -07:00
John Luo 4dd62a6863 Merge branch 'release/2.1' into release/2.2 2018-06-29 10:56:50 -07:00
John Luo b9d956df59 Ensure no trailing slashes for LZMA generation 2018-06-28 20:28:36 -07:00
Nate McMaster 91a1d2de50
Add unit tests for the shared framework (#1228)
Changes:
* Add a test project with simple unit tests for the shared framework
* Add root-level Directory.Build.props/targets files
* Cleanup .csproj files to reduce duplication
2018-06-27 14:56:10 -07:00
Doug Bunting f47e86439d Support packages both built in Universe and used as external dependencies
- `AnalyzeBuildGraph` fix should correct Update Universe build break
- `VerifyCoherentVersions` fix should correct UniverseCoherence build break

nits:
- add and rename a couple of variables for clarity and reduced repetition
- remove and sort `using`s
2018-06-23 00:34:33 -07:00
John Luo 5931c7fb9a Remove trailing slashes when creating LZMAs 2018-06-18 13:08:43 -07:00
John Luo f0b5f73c73 Merge branch 'release/2.1' into dev 2018-06-08 11:24:44 -07:00
John Luo 25bbb466db Create compressed delta lzma for antares
- The delta lzma is packaged as a zip
- Only new content that's not present in the LKG lzma is included
- Xmls are removed
2018-06-08 11:08:09 -07:00
Nate McMaster b1b92385c0
Add unit tests for the shared framework
Changes:
* Add a test project with simple unit tests for the shared framework
* Add root-level Directory.Build.props/targets files
* Cleanup .csproj files to reduce duplication
2018-06-08 10:33:31 -07:00
Nate McMaster 6586c921f0
Fix compiler error introduced by merge conflict 2018-06-04 10:39:30 -07:00
Nate McMaster d5d1246c46
Fixup bad changes from merge 2018-06-01 17:16:43 -07:00
Nate McMaster ca4e81b975
Merge branch 'release/2.0' into release/2.1 2018-06-01 17:08:08 -07:00
Nate McMaster 309e9e3077
Widen dependency version range on Microsoft.AspNetCore.App to allow patch updates (#1186)
Originally, we thought using exact version ranges on the dependencies of Microsoft.AspNetCore.App
would help protect consumers from lifting binaries out of the shared framework. However,
this makes it difficult for consumers to use packages that share a dependency with .App.
When users tried to mix Microsoft.EntityFramework.SQLite 2.1.1 with Microsoft.AspNetCore.App 2.1.0,
NuGet errors and warnings made it difficult to reason about what was wrong, and how to resolve it.

This changes the dependency version range to allow uses to upgrade within the major.minor patch family
without needing to override NuGet warnings. This removes some of the protections against users
unintentionally lifting to a binary newer than the shared framework, however, after lots of discussion,
we believe this is a better user experience.
2018-05-31 12:40:52 -07:00
Nate McMaster da8ca36fe8
Pin to stable 2.1.0 corefx packages (#1188)
* Pin to stable 2.1.0 corefx packages
* Ensures ProdCon overrides passed to us match our expectations about which variables will be set
2018-05-30 13:42:36 -07:00
Nate McMaster faf600ce71
Fixup the effect of cascading versions (#1187)
The PR #1175 was incomplete. This fixes the cascading effect of patching to 2.1.1

Changes:
 - add CheckRepoGraph (ported directly from the release/2.0 branch)
 - Update submodules
2018-05-30 10:58:10 -07:00
Nate McMaster 695bf56afc
Run VerifyCoherentVersions check (#1156)
All packages were being ignored. This adds an error if 0 packages are found, and also fixes the folder scanned for coherence.

This also required removing the 'Private' designation from external dependencies, because we no longer scan just shipping packages,

Removed unused NoWarn metadata as well.
2018-05-08 16:51:26 -07:00