Earlier quoted context omitted.
>- Put all build/publish/test logic in Makefiles or scripts in the repo. This means that devs can run it locally as well. The only interaction between a test runner and the codebase should be running `make `. This always breaks because then each platform has a specific way of defining env vars or secrets for those Makefiles and bash scripts. End result is devs still can't really run CI "proper" the way it's configure…
Maybe this is just me, but needing to define environment variables or secrets for testing seems like a massive problem in the test design. Does that mean the tests are dependent on the use of an external service, and that service can't be run locally? The only part of a CI pipeline I can imagine requiring secrets would be a release/publish step. However, those would only occur after the tests run successfully, so not…
- your code is using private dependencies, so you can't build the code without authentication
- you have some integration tests that use test containers using private docker images, so you need to do a "docker login" before running tests
Locally, that would work because you're locally authenticated (and likely have all dependencies already installed etc.)