Comments (4)
Back when I started buildbot-nix, there was no inputDerivations
in nix-eval-jobs so this analysis would have been harder. I guess I didn't needed this feature as much because my main concern was to have a fast CI for NixOS machines and inter-dependencies was that much of a factor. How do you connect different projects? Buildbot actually support multiple source triggers the same hydra does it, but with flakes everything is kind of pinned.
So here is my constraints:
- building all derivations individually will be likely too slow so we probably need to keep it as coarse grained as only building flake attributes -> but this is what you do as well.
- if we group flake attributes, we should probably still maintain separate build logs because otherwise it becomes quite hard to see errors in long logs. Buildbot actually support many text outputs per build step.
Buildbot also allows some control regarding scheduling in python code, so even if it's displayed as separated build step it could still internally following the ordering that you propose.
All in all it would be probably to discuss this more in detail in our matrix channel:
https://matrix.to/#/#buildbot-nix:thalheim.io
from buildbot-nix.
Just had a chat with @Mic92 and we agreed on not mapping multiple derivations to one build, but keep the 1:1 mapping that exists currently. Instead, model the dependency graph of derivations in buildbot scheduling directly. Essentially we inform buildbot with the dependency information that Nix already has, and let builds wait for their dependencies to build.
In order for this to work nicely, all actual builders (in the Nix sense, the machines that do nix build
, might be the worker, or might be a remote builder) would have to have access to a shared Nix store or binary cache for this to make sense. This could be resolved by using the grouping I sketched above to map builds to workers (or builders in the Nix sense). We decided to postpone this, and first get dependency-based scheduling to work on its own.
from buildbot-nix.
There's are two interesting scheduling concepts in buildbot:
At a first glance, Triggerable Scheduler seems to be strictly better (?!). I'll look at this into more detail soon, but wanted to share as early as possible.
from buildbot-nix.
We are currently using the Triggerable Scheduler because it allows to create dynamic pipelines.
from buildbot-nix.
Related Issues (20)
- Gitea support at all? HOT 8
- Hercules-effects support
- Support other binary caches next to cachix HOT 7
- Rework GITHUB_TOKEN support so we only need a github app
- Odd issue accessing a Gitea private repo when curling the Gitea API works fine. HOT 11
- "Register gcroot" doesn't work well with the pull-request flow HOT 4
- Fine-Grained Personal Access Tokens don't need `repo:admin` HOT 5
- buildbot-nix access control for private repos HOT 6
- Add integration tests
- UX: Links back to the repos
- Better error handling on boot HOT 2
- Support rendering HTML outputs
- Parse the Nix evaluation warnings and display them in the UI HOT 1
- Build the frontend from source
- Org members cannot stop builds HOT 6
- pull based CI runs
- Reporting issue when there are too many checks HOT 10
- JWT token creation is unreliable HOT 14
- Generic OIDC auth HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from buildbot-nix.