Skip to content

Optimize windows CI build #3374

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

Open
lalitb opened this issue Apr 22, 2025 · 4 comments
Open

Optimize windows CI build #3374

lalitb opened this issue Apr 22, 2025 · 4 comments
Labels
triage/accepted Indicates an issue or PR is ready to be actively worked on.

Comments

@lalitb
Copy link
Member

lalitb commented Apr 22, 2025

Currently taking > 1hr, I think specifically for gRPC build:

Image

@github-actions github-actions bot added the needs-triage Indicates an issue or PR lacks a `triage/foo` label and requires one. label Apr 22, 2025
@ThomsonTan
Copy link
Contributor

Does this long running build block merging PR now?

@dbarker
Copy link
Contributor

dbarker commented Apr 29, 2025

The longest running windows job now appears to be one I added .github/workflows/cmake_install.yml#L14 which builds/tests all components in one step then builds/tests the dll component in a second step.

A recent run of this job took 43 min to build the vcpkg packages followed by ~18 min for each test run step. Most of the vcpkg build time is on the grpc package. It seems vcpkg builds both release and debug.

A few minutes can be saved by not building unused grpc plugins (most are built by default). It may also be possible to only build debug and not release. The bigger savings likely comes from caching the vcpkg built binary packages.

Caching the packages seems reasonable:

@ThomsonTan
Copy link
Contributor

The longest running windows job now appears to be one I added .github/workflows/cmake_install.yml#L14 which builds/tests all components in one step then builds/tests the dll component in a second step.

A recent run of this job took 43 min to build the vcpkg packages followed by ~18 min for each test run step. Most of the vcpkg build time is on the grpc package. It seems vcpkg builds both release and debug.

A few minutes can be saved by not building unused grpc plugins (most are built by default). It may also be possible to only build debug and not release. The bigger savings likely comes from caching the vcpkg built binary packages.

Caching the packages seems reasonable:

I think binary caching was discussed before, and cache with the container with grpc build was 5 or 6GB, and may be even bigger for now.

For cache with NuGet, we have OpenTelemetry .NET publishing package to NuGet, probably we can use the same setting to cache vcpkg blob for gRPC?

@dbarker
Copy link
Contributor

dbarker commented Apr 29, 2025

I think binary caching was discussed before, and cache with the container with grpc build was 5 or 6GB, and may be even bigger for now.

For cache with NuGet, we have OpenTelemetry .NET publishing package to NuGet, probably we can use the same setting to cache vcpkg blob for gRPC?

Thanks for the background. Yeah if the vcpkg packages from our vcpkg submodule tag are already cached somewhere trusted/accessible it may not be a big step to configure this project's ci jobs to use the cache.

@ThomsonTan ThomsonTan added triage/accepted Indicates an issue or PR is ready to be actively worked on. and removed needs-triage Indicates an issue or PR lacks a `triage/foo` label and requires one. labels Apr 30, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
triage/accepted Indicates an issue or PR is ready to be actively worked on.
Projects
None yet
Development

No branches or pull requests

3 participants