Local reproducibility is very nice goal, but it rapidly becomes complex for anything but a simplest project.
- You want to test multiple build configurations in parallel, on multiple machines. How do you do locally?
- You need some test data, how do you handle auth to your file storage?
- You want it to be easy to jump directly to test results, and you want to see what takes all that time, how do you deal with that?
- Some of your tests require specific hardware (like GPU), how do you make sure it's provided?
- You have secured publish pipelines with OIDC and temporary token, so developer's machine compromise cannot upload rogue package. How does this work without CI?
Docker containers / nix is a great start, but it's nowhere close to the full picture. And yes, you can solve all of those problems, and get backup method for the cases when github is down, but it often means re-implementing things twice.. and a lot of teams simply do not bother.
That said, if you are so dependent on CI that you cannot even test the code locally, then there is something very wrong with your project. Every developer should be able to at least build the code and run basic/quick tests without CI's involvement.
theamk•25m ago
- You want to test multiple build configurations in parallel, on multiple machines. How do you do locally?
- You need some test data, how do you handle auth to your file storage?
- You want it to be easy to jump directly to test results, and you want to see what takes all that time, how do you deal with that?
- Some of your tests require specific hardware (like GPU), how do you make sure it's provided?
- You have secured publish pipelines with OIDC and temporary token, so developer's machine compromise cannot upload rogue package. How does this work without CI?
Docker containers / nix is a great start, but it's nowhere close to the full picture. And yes, you can solve all of those problems, and get backup method for the cases when github is down, but it often means re-implementing things twice.. and a lot of teams simply do not bother.
That said, if you are so dependent on CI that you cannot even test the code locally, then there is something very wrong with your project. Every developer should be able to at least build the code and run basic/quick tests without CI's involvement.