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

🏗 Pass CircleCI matrix parameters to (module|nomodule)-tests.js as a command line flag #32922

Merged
merged 4 commits into from Feb 26, 2021

Conversation

danielrozenberg
Copy link
Member

As discussed in #32865 (comment)

@amp-owners-bot
Copy link

Hey @rsimha! These files were changed:

.circleci/config.yml
build-system/pr-check/module-tests.js
build-system/pr-check/nomodule-tests.js

Copy link
Contributor

@rsimha rsimha left a comment

Choose a reason for hiding this comment

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

LGTM! Thanks for the quick fix.

.circleci/config.yml Outdated Show resolved Hide resolved
@rsimha
Copy link
Contributor

rsimha commented Feb 25, 2021

@danielrozenberg Apologies in advance for what is going to be a disruptive comment to this PR:

Your exploration in #32932 and the subsequent points in #32932 (comment) make me believe we should un-split the Nomodule / Module Tests jobs back to single jobs that run both prod and canary tests one after another, using the new stuff in #32927.

The actual running of integration tests takes <2 minutes, so the full cycle of downloading binaries, running prod tests, applying the canary config, and running canary tests will in total still take less time than the E2E Tests job which runs in parallel, so this won't affect the total wait time for a CI build.

Yet, it will reduce the number of VMs blocked by a single build, and will allow for more people's jobs to run simultaneously.

WDYT?

@danielrozenberg
Copy link
Member Author

I dunno, it doesn't feel right to have both of them run in the same job - my thinking is that each test suite should run separately, so that a failure in one wouldn't preclude showing the results of the following test suite. i.e., if we run gulp integration --prod and afterwards gulp integration --canary, but the prod tests fail, the developer won't know that the test also fails (or maybe not) on canary

I think the clarity of the results overrides the slight overrun

@rcebulko
Copy link
Contributor

CircleCI already is a decent improvement in speed; are we seeing a shortage of VMs slowing down development during non-Fixit weeks?

@danielrozenberg
Copy link
Member Author

CircleCI already is a decent improvement in speed; are we seeing a shortage of VMs slowing down development during non-Fixit weeks?

@rsimha's worry is about the max parallelization - we get 80 parallel VMs, so increasing PR runs from 18 to 20 VMs each means we can check 4 instead of 4.44 PRs in parallel, which is a small but not insignificant drop

@rsimha
Copy link
Contributor

rsimha commented Feb 26, 2021

we get 80 parallel VMs

... for the entire ampproject org, not just for amphtml.

my thinking is that each test suite should run separately, so that a failure in one wouldn't preclude showing the results of the following test suite

We already preclude later results when one result fails in a lot of places. E.g. if presubmit fails, we don't run lint. If unit tests fail for local changes, we don't run all unit tests. If unit tests fail on Safari, FF, or Edge, we don't run integration or E2E tests. In the case of integration tests for prod vs. canary, we could make a case to apply the same rationale.

worry is about the max parallelization

Correct, this is my main concern. We should draw a balance between finishing a build ASAP and allowing as many people's builds to run in parallel.

In addition, being judicious about resource usage saves us $$$, because one extra minute of CPU time per CI job multiplies out to nearly half a million extra minutes over a year.

Having said all this, I'm okay merging this PR as-is and assessing these concerns separately since things aren't as bad yet. Also, thanks for the discussions, because they're helping keep me honest 😃

@danielrozenberg
Copy link
Member Author

As you can already guess I prefer to merge this as-is ;)

Let's keep checking the pulse as things evolve

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants