-
-
Notifications
You must be signed in to change notification settings - Fork 523
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
GH Actions (macOS): Run a job for "make build-local" first, cache image for job "make build" #32703
Comments
Dependencies: #31535 |
Commit: |
Last 10 new commits:
|
Branch pushed to git repo; I updated commit sha1. New commits:
|
Branch pushed to git repo; I updated commit sha1. New commits:
|
Branch pushed to git repo; I updated commit sha1. New commits:
|
comment:11
working well now |
Branch pushed to git repo; I updated commit sha1. New commits:
|
Branch pushed to git repo; I updated commit sha1. This was a forced push. New commits:
|
comment:14
If I understand the changes (and the output) correctly, then currently stage 1 and 2 run parallel. For example, some stage 2 runs (e.g https://github.com/mkoeppe/sage/runs/3935018795?check_suite_focus=true) fail since they try to download a non-existing artifact. Maybe something like https://github.com/marketplace/actions/wait-for-check helps. |
comment:15
Replying to @tobiasdiez:
Yes, in theory. But in practice we only get 5 parallel jobs on macOS and we launch many more jobs...
Well, they failed because the previous stage failed. |
comment:16
Replying to @tobiasdiez:
Thanks for the pointer, we can look into using something like this |
comment:17
Testing with integrated builds for the optional packages now at https://github.com/mkoeppe/sage/actions/runs/1360303527 |
comment:18
Replying to @mkoeppe:
Okay, but isn't this a very fragile design? Imagine that you have exactly 5 matrix cases. So all of the stage 1 tasks start at the same time. Now if the last case exists slightly before the other 4, then the stage 2 for the other 4 may be invoked and now fail as their stage 1 is not yet finished. Also this would limit everything to mac, as on linux you have way more runners. |
comment:40
Replying to @mkoeppe:
(same as #32113 comment:17) |
Dependencies: #32113 |
Branch pushed to git repo; I updated commit sha1. Last 10 new commits:
|
Branch pushed to git repo; I updated commit sha1. New commits:
|
Branch pushed to git repo; I updated commit sha1. New commits:
|
comment:48
I know we already touch upon this point, but can you please expand on
That is, why do you prefer the "custom stage build" over having a "local-macos-stage2" job that depends via "needs" on "local-macos-stage1", where each of these jobs defines an appropriate matrix. In particular, I don't understand the "all platforms" part, as ubuntu and macos are in different jobs, right? It appears to me that with the current design also stage 1 builds are executed before any stage 2 is executed, so the only difference is that you can already have 4 or so stage 2 builds running while the last stage 1 build finishes. I guess for the overall build time this shouldn't make much of a difference anyway, as these 4 runners would be busy with other workflows then (or are free to execute builds of other stuff in the sagemath org). |
comment:49
Replying to @tobiasdiez:
To avoid copy-paste |
comment:50
Replying to @tobiasdiez:
Yes, that's right, within each job; and in this ticket, only for macos. |
comment:51
Replying to @mkoeppe:
Github recently made it possible to reuse workflows: https://docs.github.com/en/actions/learn-github-actions/reusing-workflows |
comment:52
Thanks for the pointer!! I've added this to #29060 for welcome future refactoring - but this won't make it into Sage 9.5 |
Branch pushed to git repo; I updated commit sha1. New commits:
|
This comment has been minimized.
This comment has been minimized.
Changed reviewer from https://github.com/mkoeppe/sage/actions/runs/1605145773 to Dima Pasechnik |
comment:55
OK,macOS runs on GH look good. |
comment:56
Thanks! |
We revise the GH Actions workflows to use a 2-stage build:
In the first stage, run
make build-local
, and storeSAGE_LOCAL
as a build artifact. In the second stage, download the build artifact and run more building and testing.(+) On top of the artifact containing the full SAGE_LOCAL, we can test several ways to build the Python parts
configure --enable-editable
configure --enable-system-site-packages
(configure --enable-system-site-packages via spkg-configure.m4 for cvxopt and other python packages #29665)(+) Tests of optional and experimental packages can be streamlined, as we avoid rebuilding their dependencies that are standard packages.
(+) Splitting the job into two would also help with the configurations for which we scrape at the 6 hour time limit
(-) Unfortunately, because because "needs" cannot depend on "matrix", the jobs for building/testing Python packages would not start before all jobs building
SAGE_LOCAL
for all platforms are completedIn this ticket, we only change all existing
macos
workflows to a 2-stage workflow, integrating the separate workflows for optional and experimental packages.As of this ticket, we rely on the bottleneck of the available parallel jobs on GH Actions to ensure that the 2nd stages of a configuration are run after the 1st stage of that configuration. Experience with this workflow will show whether this suffices.
We also update the macOS/Xcode versions according to what's available on GH Actions and switch the
homebrew
builds to fasterhomebrew-usrlocal
variants, which can use bottles for all available packages.Depends on #32113
Depends on #32947
CC: @tobiasdiez @kliem @orlitzky @isuruf
Component: porting
Author: Matthias Koeppe
Branch/Commit:
edb4364
Reviewer: Dima Pasechnik
Issue created by migration from https://trac.sagemath.org/ticket/32703
The text was updated successfully, but these errors were encountered: