Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update the artifacts directory organization and simplify publishing targets #5701

Merged
merged 7 commits into from
Dec 18, 2018

Conversation

natemcmaster
Copy link
Contributor

This simplifies the way that we publish files to our network drop share.

Changes:

  • Instead of explicitly listing every file that needs to publish, use directories to classify packages and artifacts into different categories.
  • Add documentation for the expected layout of artifacts/
  • Remove the need for static analysis to determine which packages go to which project
  • Add the MSBuild property "IsProductPackage" to .csproj files which ship as a package to NuGet.org.

Implements https://github.com/aspnet/AspNetCore-Internal/issues/1427

cc @mkArtakMSFT @muratg

@natemcmaster natemcmaster added this to the 3.0.0-preview2 milestone Dec 18, 2018
@natemcmaster natemcmaster added the area-infrastructure Includes: MSBuild projects/targets, build scripts, CI, Installers and shared framework label Dec 18, 2018
By default, all projects which produce packages are not intended to ship to NuGet.org as a product package.
Packages which are intended to ship to NuGet.org must opt-in by setting this to true in the project file.
-->
<IsProductPackage Condition=" '$(IsProductPackage)' == '' ">false</IsProductPackage>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this semantically different from IsShipping that's used by arcade? If there's an important different should we discuss with them? If not, should we just use the same property name as arcade?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think of IsShipping as a subset of IsProductPackage. IsProductPackage means "this is a package that is meant for a customer to use" and IsShipping means "this package should ship in the next release". In 2.2 we had a handful of packages that were built as "product packages" but that we decided to yank from shipping after the build was done.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It sounds like we have a requirement that they don't totally support then? Is this tracked somewhere

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

dotnet/arcade#1179 is probably the best item for this. Arcade publishing is a hot mess right now and will likely be completely re-invented again before we finish RTM. I'm not pinning any hopes on 'IsShipping'.

Copy link
Contributor

@ryanbrandenburg ryanbrandenburg left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good. Some suggestions and requests but no show-stoppers.

<NpmPackageToPublish Include="$(DependencyAssetsDir)%(ArtifactInfo.FileName)%(ArtifactInfo.Extension)" Condition="'%(ArtifactInfo.ArtifactType)' == 'NpmPackage'">
<RelativeBlobPath>$(NpmBlobBasePath)%(ArtifactInfo.PackageId)/%(ArtifactInfo.FileName)%(ArtifactInfo.Extension)</RelativeBlobPath>
<!-- NPM packages -->
<NpmPackagesToPublish Include="$(ProductPackageOutputPath)*.tgz">
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it a safe assumption that all tgz files are npm packages?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In the context of the ProductPackageOutputPath folder, yes, *.tgz should only match npm packages.

docs/Artifacts.md Show resolved Hide resolved
docs/BuildFromSource.md Show resolved Hide resolved
</PropertyGroup>

<PropertyGroup>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems like this is boilerplate now, is it possible to pop it up a level into something like src/Directory.Build.targets?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This entire file will completely go away as we continue to make progress on #4246.

src/Components/Directory.Build.props Show resolved Hide resolved
*.tgz = NPM packages which ship to npmjs.org
internal/
*.nupkg = NuGet packages for internal use only. Used to hand off bits to Microsoft partner teams. Not intended for use by customers.
```
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice 👍

@natemcmaster natemcmaster merged commit 335c9be into dotnet:master Dec 18, 2018
@natemcmaster natemcmaster deleted the publish branch December 18, 2018 19:40
@natemcmaster natemcmaster restored the publish branch December 19, 2018 17:03
dougbu pushed a commit to dougbu/razor-compiler that referenced this pull request Nov 17, 2021
…argets (dotnet/aspnetcore#5701)

This simplifies the way that we publish files to our network drop share.

Changes:
* Instead of explicitly listing every file that needs to publish, use directories to classify packages and artifacts into different categories.
* Add documentation for the expected layout of artifacts/
* Remove the need for static analysis to determine which packages go to which project
* Add the MSBuild property "IsProductPackage" to .csproj files which ship as a package to NuGet.org.

Commit migrated from dotnet/aspnetcore@335c9be7b4a7
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area-infrastructure Includes: MSBuild projects/targets, build scripts, CI, Installers and shared framework
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants