-
Notifications
You must be signed in to change notification settings - Fork 779
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
ci: configure bors #2761
ci: configure bors #2761
Conversation
actions/runner#1985 |
bors try |
tryBuild succeeded: |
- emscripten | ||
if: always() | ||
runs-on: ubuntu-latest | ||
steps: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is this really necessary? Doesn't needs
already require these job to finish successfully? Also what the reason to have if: always()
here?
Generally speaking, I am not a fan of the manual JavaScript-based approach to CI workflows and would prefer if just split our workflows into one pull requests and for used by bors even if it means having some redundancies between the two workflow definitions if this allows us to keep the declarative approach.
I am also not sure if just adjusting the matrix of the build
job is sufficient differentiation between the two use cases (pre-review check and pre-merge check). More fundamentally, I feel that the build
could use some re-engineering as it has a collected a lot of different use cases in conditional steps which would work better as individual jobs IMHO.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is this really necessary? Doesn't
needs
already require these job to finish successfully? Also what the reason to haveif: always()
here?
It gives a nicer overview: https://github.com/PyO3/pyo3/actions/runs/3508244920/jobs/5876898372#step:2:1 even when canceled due to previous failures.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I feel that the
build
could use some re-engineering as it has a collected a lot of different use cases in conditional steps which would work better as individual jobs IMHO.
Expanding more jobs may result in more cache misses thus longer build time, we are already over the 10GB cache limit.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Expanding more jobs may result in more cache misses thus longer build time, we are already over the 10GB cache limit.
We could also improve on this front, considering the approach outlined in #2710 (comment), the caches for the pull requests could become much more lightweight. (I think the issue of missing caches could also be solved by running the lightweight on-pull-request workflow as an on-push event on main
? The heavyweight jobs would only run on trying
/staging
I guess?)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
run check (not test) for each OS / Python version, and then one run of the test suite on each OS w. latest Python
It's not really lightweight IMO, I'd drop the run check (not test) for each OS / Python version
part, and coverage jobs are even heavier but they should be kept to ensure good test coverage.
I think the issue of missing caches could also be solved by running the lightweight on-pull-request workflow as an on-push event on
main
?
It will do, but I think with bors we shouldn't re-run workflow on main
, bors was designed to avoid broken checks on main
I think?. Maybe we should explore using sccache instead.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'd drop the run check (not test) for each OS / Python version part
I agree. I don't think full platform coverage is something we need during review.
and coverage jobs are even heavier but they should be kept to ensure good test coverage.
As with the above, I think one coverage job should suffice. (And it could subsume the test job because the tests run to produce the coverage.)
It will do, but I think with bors we shouldn't re-run workflow on main,
Exactly, bors should only run on trying/staging
which is main
after merging the PR, hence one does not need to re-run bors on main
because updating main
to trying/staging
is a fast-forward merge to something that was just tested.
So in summary:
main
and pull requests: lightweight pre-review workflow to seed cache.trying/staging
: heavyweight bors pre-merge workflow. (Since bors pushes to our repo it should be able to use our caches without seeding.)
72b6f8a
to
53cb9f6
Compare
bors try |
tryBuild succeeded: |
bors try |
tryBuild succeeded: |
Thanks! I'm curious to see what it looks like without the conclusion job, so I've pushed that to my own branch. |
I'm a bit worried about it due to this comment in bors forum: https://forum.bors.tech/t/check-matrix/673/2
|
Right, good find. In which case, I think this is a great starting point, shall we merge this one and then we can write follow-up PRs for the improvements in #2761 (comment) as well as bringing |
I think so. We need to tweak the required status. I think we can drop |
bors r+ |
I think I've managed to update the rules... Let's see what happens. |
Build succeeded: |
Closes #2710
Closes #2714