NuGet / NuGetGallery

NuGet Gallery is a package repository that powers https://www.nuget.org. Use this repo for reporting NuGet.org issues.
https://www.nuget.org/
Apache License 2.0
1.54k stars 644 forks source link

[Feature] Run NuGet server in linux docker container on Kestrel #3390

Open JorritSalverda opened 7 years ago

JorritSalverda commented 7 years ago

The NuGet server is one of the few applications we still need to run on Windows, whereas all of our applications already written in .net core run in Kubernetes.

Are their any plans to 'upgrade' Nuget.Server to asp.net core?

skofman1 commented 7 years ago

Hi @JorritSalverda ! The NuGet team is currently investing all it's time in security related features. Unfortunately, improvement to NuGet.Server is not in our plans for the near future.

Thanks for your understanding!

WernerMairl commented 7 years ago

Any news here ?

NuGet is one of the most important pieces in dotnet core and there is no core implementation available/scheduled in 2017 ?

urbanhusky commented 6 years ago

Is there a roadmap yet for .net core support? We host our entire infrastructure in a docker swarm and we have definite (and urgent) need for a NuGet server.

tomzo commented 6 years ago

Since it seems we might wait unknown/long time for official nuget server on dotnet core, I have started a project which aims exactly at it. https://github.com/ai-traders/liget It ports pieces of this repository and several others to get private nuget server working on dotnet core with kestrel. I have already setup CI with end to end tests which run with various common clients such as nuget CLI dotnet CLI and paket. It already implements push and basic queries, so that paket install, paket update and alike are passing.

bugproof commented 6 years ago

Any official updates?

skofman1 commented 6 years ago

@lecoque , the team continues to focus on security and package authenticity issues in the NuGet ecosystem, as well as key experiences on nuget.org like search results quality. Our quarterly plan will be published shortly on our blog. Unfortunately we won't be able to get to rewriting NuGet.Server in .NET core in the near future. I hope tools like @tomzo 's liget will be able to fill the gap.

loic-sharma commented 6 years ago

I've been working on a ASP.NET Core version of NuGet.Server: https://github.com/loic-sharma/BaGet

Summary of BaGet:

⚠️ Although I work on nuget.org for Microsoft, this is a side project that I've been working on my own time that isn't official supported by either Microsoft nor NuGet.

tmds commented 6 years ago

@skofman1

Unfortunately we won't be able to get to rewriting NuGet.Server in .NET core in the near future

Do we need a full rewrite? Maybe we can start with a minimal viable product?

I hope tools like @tomzo 's liget will be able to fill the gap.

It would be good to have some involvement from the NuGet team so one of these community projects can grow to be the real deal. Maybe you can host an implementation on the GitHub NuGet org?

tomzo commented 6 years ago

It would be good to have some involvement from the NuGet team so one of these community projects can grow to be the real deal.

I totally agree on this, there must be at least 20 projects on GitHub with nuget server, each implementing just some cases that original developer needed. The same is true for LiGet, until I need windows hosting support or good visual studio integration, I won't implement it. But that should not stop anyone from contributing when they need it. @loic-sharma creates yet another implementation and again, its a single developer, it supports some cases. Sadly we did not talk before he started re-implementing half of what LiGet does already. And it would be really great to have someone from Microsoft who knows original NuGet to participate in a community server development.

Maybe you can host an implementation on the GitHub NuGet org?

That would be great. If Microsoft does not want to support an open nuget server, then at least publishing some of the working implementation would help community to take initiative. Currently all we have is documentation of v3 API and that's all. When I started LiGet even that wasn't available. v2 is undocumented till this day.

My general message to anybody reading this issue is this - We are all in a bad place with NuGet server, you can blame Microsoft or not, you can try to persuade them to help. But If you feel like implementing yet another scratch server because your case does not work in LiGet or any other community project, please at least open an issue on LiGet first, let's talk. I can contribute time into integrating efforts of multiple users, help with design, provide CI and automation, and actually implement stuff as I did already. So that in the long term we have the real deal nuget server, which has many maintainers/developers and does not rely on efforts of single person to do all work for everyone, because that won't last long.

maartenba commented 6 years ago

(side note to this thread: there are already a couple of real deal NuGet servers out there, both on-prem (ProGet, Artifactory, Sonatype, NuGet.Server) as well as SaaS (MyGet, Bintray). Of those on-prem ones, most can be run in a container if needed)

tomzo commented 6 years ago

@maartenba the thread is about running NuGet.Server on dotnet core in container and actually you cannot do that, because it relies on old libraries which don't run on Core. LiGet was created by replacing those references. Yes there are some great closed-source, paid solutions out there. But as @WernerMairl NuGet is one of the most important pieces in dotnet core and there is no core implementation available/scheduled in ... is a really bad state that I was referring to. NuGet is basically the only official framework for managing dependencies in dotnet core and yet we need to rely on closed, external solutions to host private packages. There is no other "Open" platform which does that.

valeriob commented 6 years ago

Totally agree, we really need good specification (v3 ?) and the best implementation of the latest protocol as stand alone service, with the community involved. Right now the project has no guidance and anything is stuck (see pull requests).

WernerMairl commented 6 years ago

Currently i'm investing time into https://github.com/loic-sharma/BaGet

my personal focus

in my own projects currently i'm using Nexus from Sonatype on Docker

loic-sharma commented 6 years ago

Totally agree, we really need good specification (v3 ?) and the best implementation of the latest protocol as stand alone service, with the community involved.

The v3 protocol has been documented here. The only standalone NuGet v3 implementations that I'm aware of are BaGet and Sleet.

... publishing some of the working implementation would help community to take initiative. Currently all we have is documentation of v3 API and that's all

You can find nuget.org's v3 implementation here: NuGet/NuGet.Services.Metadata

skofman1 commented 6 years ago

I understand the need for an open-source, lighweight implementation of NuGet Server that will be able to run on linux, docker, etc. Unfortunately, as already stated, NuGet team currently doesn't have the capacity to take on this work. We would like to help community projects like LiGet and BaGet to get users and contributors. We started by adding links to them on our documentation page. We can also help join those projects to .NET Foundation.

From a technical perspecive, I stronly recommend implementating V3 protocol. V2 protocol is obsolete and all new NuGet features (like Package Signing) are added only to V3. In addition, V3 is thoroughly documented here.

Magnificus36 commented 5 years ago

Another alternative is: simple-nuget-server Docker image with simple-nuget-server from idoop or fork by agowa338. The second one uses his own fork of simple-nuget-server.

However, it would we really great if NuGet.Server 'just' worked on Linux with ASP.NET Core because this alternative also is not feature complete (it only supports a single API key). But I do understand that the resources and time of the NuGet team is finite and choices need to be made.

Sword-Smith commented 5 years ago

Really cool to see that open source solutions are being built. A year has gone by since the last answer from Microsoft. Any updates?

DoCode commented 5 years ago

I tried to convert the NuGet.Server to .NET Core 1.5 years ago. I don't remember exactly what the blocker was. Vague, some XML transformation libs? Does anybody know more?