|
|
|
|
|
by peterldowns
533 days ago
|
|
Out of curiosity, were you dealing with microservices defined within a monorepo, or microservices each in their own repo? The steps here: > Build your binaries with the new version. Go through the build errors if any. > Run all the unit tests with the new version. Go through the test failures. are a lot easier in a monorepo. Separately, I've experienced frequent breaking changes in the golangci-lint configuration file. I can't point to a specific instance of this happening but one thing I'd suggest is pinning your version of golangci-lint in development and in CI rather than using "latest". Golang's backwards compatibility and simplified toolchain is one of my favorite parts about it. Bumping go.mod and downloading the new version of go is usually all it takes! |
|
I've found it's actually not so bad to do this kind of work across many repos, as long as you have the tooling to apply the same change to any number of codebases all at once. Our strategy was typically:
- Write an idempotent codemod to do an upgrade. This is easy as long as your configuration is in a declarative language.
- Regularly apply it or update it on all of the applicable repos.
- Merge upgrades incrementally until you've upgraded 100%.