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

node+npm needed on build images for Windows, and Mariner-2 #3091

Open
1 of 3 tasks
radical opened this issue Jun 14, 2024 · 14 comments
Open
1 of 3 tasks

node+npm needed on build images for Windows, and Mariner-2 #3091

radical opened this issue Jun 14, 2024 · 14 comments
Assignees
Labels
Ops - Service Maintenance Used to track issues related to maintaining the services .NET Eng Supports Ops - Spike Work items to be included in our Ops Spike

Comments

@radical
Copy link
Member

radical commented Jun 14, 2024

dotnet/aspire CI is running on https://helix.dot.net/#heading-windows-vs2022preview-amd64-open and https://helix.dot.net/#heading-1es-mariner-2 and those don't appear to have node+npm installed on them by default. We need these for running some new tests.

Linux at least has node installed though, but no npm. And Windows is missing both.

cc @RussKie @joperezr

Release Note Category

  • Feature changes/additions
  • Bug fixes
  • Internal Infrastructure Improvements

Release Note Description

Added node 20 to windows and linux queues

@ilyas1974 ilyas1974 added the Ops - Service Maintenance Used to track issues related to maintaining the services .NET Eng Supports label Jun 14, 2024
@ilyas1974 ilyas1974 added Ops - P1 Operations task, priority 1 (highest priority) Ops - Spike Work items to be included in our Ops Spike and removed Ops - P1 Operations task, priority 1 (highest priority) labels Jul 24, 2024
@radical
Copy link
Member Author

radical commented Aug 1, 2024

@dougbu any ETA on this one? We have tests blocked on dotnet/aspire due to this.
cc @eerhardt

@dougbu
Copy link
Member

dougbu commented Aug 1, 2024

Sorry. I haven't had a chance to look. I'll keep a tab open here and get back to you b/4 Monday

@dougbu dougbu assigned dougbu and unassigned dougbu Aug 1, 2024
@dougbu
Copy link
Member

dougbu commented Aug 1, 2024

oh, I mixed this up w/ #3122. this issue is part of a "spike" of operations issues we're working through. it's no longer really on our backlog, more a matter of finding an assignee and / or deciding what we do when

could you speak to reason behind the urgency @radical❓ for example, why are automated tests on additional platforms needed❓

/cc @ilyas1974 and @garath

@radical
Copy link
Member Author

radical commented Aug 1, 2024

or example, why are automated tests on additional platforms needed❓

Using node+npm projects with dotnet/aspire is an explicit feature of the product, in parallel to all the others, and utilizes explicit aspire APIs for it. So, running node+npm dependent tests is not a different platform for us, it is just testing one part of the product.

Does that answer your question?

@dougbu
Copy link
Member

dougbu commented Aug 2, 2024

or example, why are automated tests on additional platforms needed❓

Using node+npm projects with dotnet/aspire is an explicit feature of the product, in parallel to all the others, and utilizes explicit aspire APIs for it. So, running node+npm dependent tests is not a different platform for us, it is just testing one part of the product.

Does that answer your question?

not exactly. if you can test node+npm on Linux, what's the urgency behind also testing those scenarios on Windows❓

@radical
Copy link
Member Author

radical commented Aug 2, 2024

cc @eerhardt

@eerhardt
Copy link
Member

eerhardt commented Aug 2, 2024

if you can test node+npm on Linux, what's the urgency behind also testing those scenarios on Windows❓

Because they are different, and we can have different bugs based on the OS. One example is here:

https://github.com/dotnet/aspire/pull/5142/files#diff-7a45254774650a016a455a5455a121b2ea58a5d9f5ee718dadd0a25127559967

npm isn't npm.exe on Windows, but it is npm.cmd. So when looking for the command the existing code wasn't finding it correctly.

@radical
Copy link
Member Author

radical commented Sep 13, 2024

Any update on this? Also Linux image has node 12 installed which reached EOL two years ago.
This is actively blocking testing on dotnet/aspire. dotnet/aspire#2225 (comment)
cc @davidfowl

@riarenas riarenas self-assigned this Oct 3, 2024
@riarenas
Copy link
Member

riarenas commented Oct 3, 2024

I will start looking at this today.

A few questions.

https://helix.dot.net/#heading-1es-mariner-2

Is an image we get from 1ES, and not something we should modify, so we need to decide how we want to fix this scenario:

If neither of these options help, we will need to create a new image, which we can try to base off the existing mariner image, but it will take some experimentation to get that working end to end.

It seems we at least think that we install a portable version of Node 16 in the windows image under C:\arcade-tools We install node 10 and 16 in this way. Can you check if this installation would help with your needs?

image

@radical
Copy link
Member Author

radical commented Oct 3, 2024

Can you use docker instead of needing NPM on the host?

This needs to be explored, and would be non-trivial to implement. Especially, because aspire depends on talking to docker, and creating/building/running images.

Alternatively, could you try moving to the build.ubuntu.* images from helix.dot.net#1ESHostedPoolImagesWestUS-rg-Internal-Linux where we do install our artifacts?

How different is this from the existing images?

Also, I want to confirm that I shared the correct information. These are the helix queues that we use specifically, where we want this to be available:

            HelixTargetQueues: Windows.11.Amd64.Client.Open
            HelixTargetQueues: Windows.11.Amd64.Client

            HelixTargetQueues: Ubuntu.2204.Amd64.Open
            HelixTargetQueues: Ubuntu.2204.Amd64

@riarenas
Copy link
Member

riarenas commented Oct 3, 2024

How different is this from the existing images?

The software installed in the images is located in the Helix website. We have full control over the build.ubuntu images, while anything that starts with 1es-* is provided as is by 1ES and we don't control, or even know fully what is installed in them.

Also, I want to confirm that I shared the correct information. These are the helix queues that we use specifically, where we want this to be available:

That is certainly different from the issue description. I was looking at the build images, not the test images. Do you need this for build, or for tests in helix? (or both?)

@radical
Copy link
Member Author

radical commented Oct 4, 2024

Also, I want to confirm that I shared the correct information. These are the helix queues that we use specifically, where we want this to be available:

That is certainly different from the issue description. I was looking at the build images, not the test images. Do you need this for build, or for tests in helix? (or both?)

Oh my apologies. Yes, the initial ask was on build images because most of our tests were running there. But now we have moved most to helix. So, we need this on the helix images too.

@riarenas
Copy link
Member

riarenas commented Oct 4, 2024

Thanks for the clarification! I can't find us installing node in the windows helix queues, and looks like we only install really old node versions in the ubuntu queue.

So to clarify, the places where node + npm are needed:

  • Build images:
    • windows.vs2022preview.amd64[.open]
    • build.ubuntu.2204.amd64[.open]
  • Helix test queues:
    • windows.11.amd64.client[.open]
    • ubuntu.2204.amd64[.open]

I'm making the following assumptions:

  • The latest LTS (node 20) would work
  • You are able to use the build.ubuntu.* ubuntu build images provided by dnceng, as we shouldn't install additional software directly over the 1es-mariner-2 image.

Let me know if either of these assumptions don't hold!

@radical
Copy link
Member Author

radical commented Oct 4, 2024

Thanks for the clarification! I can't find us installing node in the windows helix queues, and looks like we only install really old node versions in the ubuntu queue.

So to clarify, the places where node + npm are needed:

  • Build images:

    • windows.vs2022preview.amd64[.open]
    • build.ubuntu.2204.amd64[.open]
  • Helix test queues:

    • windows.11.amd64.client[.open]
    • ubuntu.2204.amd64[.open]

Correct.

I'm making the following assumptions:

  • The latest LTS (node 20) would work

Yes.

  • You are able to use the build.ubuntu.* ubuntu build images provided by dnceng, as we shouldn't install additional software directly over the 1es-mariner-2 image.

Yes, I will try to move us to that.

Thank you!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Ops - Service Maintenance Used to track issues related to maintaining the services .NET Eng Supports Ops - Spike Work items to be included in our Ops Spike
Projects
None yet
Development

No branches or pull requests

5 participants