Skip to content

[build] Split integration tests into 18 buckets#161

Merged
FelixGV merged 1 commit intolinkedin:mainfrom
FelixGV:gh_ci_granularity
Jan 10, 2023
Merged

[build] Split integration tests into 18 buckets#161
FelixGV merged 1 commit intolinkedin:mainfrom
FelixGV:gh_ci_granularity

Conversation

@FelixGV
Copy link
Copy Markdown
Contributor

@FelixGV FelixGV commented Jan 9, 2023

The buckets are controlled by a map defined in:

internal/venice-test-common/build.gradle

The build can now also dynamically generate the GitHub CI workflow file according to the content of the build, by running:

./gradlew generateGHCI

This reduces the wall-clock time of the build to roughly half an hour.

How was this PR tested?

Example run: https://github.com/FelixGV/venice/actions/runs/3877390120/usage

Does this PR introduce any user-facing changes?

  • No. You can skip the rest of this section.
  • Yes. Make sure to explain your proposed changes and call out the behavior change.

Copy link
Copy Markdown
Contributor

@adamxchen adamxchen left a comment

Choose a reason for hiding this comment

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

Thank you, Felix! Left one comment. most of integ tests are finished within 10 mins!

Comment thread .github/workflows/gh-ci.yml
@sixpluszero
Copy link
Copy Markdown
Contributor

I have a general question about this effort. I have a feeling that it seems like the whole build is less performant compared to our original Venice CI, is that true? I do see my newly introduced heavy integration test could not reach ideal state in time in this env (before your diff it seems to fail very often, with your diff I see latest run in suite Z it failed once then complete), but it was constantly passing in Jenkins CI. Is my understanding correct?

@FelixGV
Copy link
Copy Markdown
Contributor Author

FelixGV commented Jan 9, 2023

I have a general question about this effort. I have a feeling that it seems like the whole build is less performant compared to our original Venice CI, is that true? I do see my newly introduced heavy integration test could not reach ideal state in time in this env (before your diff it seems to fail very often, with your diff I see latest run in suite Z it failed once then complete), but it was constantly passing in Jenkins CI. Is my understanding correct?

Yeah so... there's no doubt that the CI we use internally is way more powerful than the cloud hosts we get for GH Actions. That is why the build on GH takes >4h while the internal one takes ~1h.

Regarding flakiness, it is possible that the two environments behave differently. I haven't looked into that yet, so IDK.

@adamxchen
Copy link
Copy Markdown
Contributor

I have a general question about this effort. I have a feeling that it seems like the whole build is less performant compared to our original Venice CI, is that true? I do see my newly introduced heavy integration test could not reach ideal state in time in this env (before your diff it seems to fail very often, with your diff I see latest run in suite Z it failed once then complete), but it was constantly passing in Jenkins CI. Is my understanding correct?

In case you are wondering, there's the spec on Github runner hosts. Definitely not as powerful as internal CI hosts.

adamxchen
adamxchen previously approved these changes Jan 9, 2023
Copy link
Copy Markdown
Contributor

@adamxchen adamxchen left a comment

Choose a reason for hiding this comment

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

Thank you!!! 🚀

@FelixGV
Copy link
Copy Markdown
Contributor Author

FelixGV commented Jan 9, 2023

Thanks for shipping it @adamxchen, but I found an issue... will fix it and update the PR. Stay tuned!

The buckets are controlled by a map defined in:

internal/venice-test-common/build.gradle

The build can now also dynamically generate the GitHub CI workflow file
according to the content of the build, by running:

./gradlew generateGHCI

This reduces the wall-clock time of the build to roughly half an hour.

Also overrode Gradle's logging logic to print the runtime of successful
tests.
@FelixGV
Copy link
Copy Markdown
Contributor Author

FelixGV commented Jan 10, 2023

Ok, the broken thing is fixed, and I did some more tweaking of the balance between buckets... I think this is good to go. Thanks!

Copy link
Copy Markdown
Contributor

@adamxchen adamxchen left a comment

Choose a reason for hiding this comment

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

🚀

@FelixGV FelixGV merged commit 57fa901 into linkedin:main Jan 10, 2023
FelixGV added a commit to FelixGV/venice that referenced this pull request Jan 10, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants