grafana/scripts/modowners/README.md
Robert Horvath 86a9533863
Chore: Replace backend platform codeownership (#86010)
* Replace backend platform codeownership

* fix go.mod with work sync

* fix go.mod

Signed-off-by: Dave Henderson <dave.henderson@grafana.com>

---------

Signed-off-by: Dave Henderson <dave.henderson@grafana.com>
Co-authored-by: Dave Henderson <dave.henderson@grafana.com>
2024-04-19 19:12:59 +02:00

93 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Modowners
## Intro
Modowners is a way to ensure that each Go dependency has at least one team responsible for maintaining and upgrading it.
The `validate-modfile` drone step checks `go.mod` and will pass if every dependency has an owner. When adding a new dependency, add the responsible team in a line comment.
Currently `validate-modfile` is non-blocking, but will eventually become a blocking step. All newly added dependencies will require an assigned owner.
### Example of ownership assignment
`cloud.google.com/go/storage v1.30.1 // @grafana/grafana-backend-group`
## Utilities
### `check`
Validate `go.mod` and exit with an error if a dependency does not have an owner.
Example CLI command:
`go run scripts/modowners/modowners.go check go.mod`
If `go.mod` is valid, there will be no output.
### `owners`
List owners of given dependency.
Example CLI command to get a list of all owners with a count of the number of dependencies they own:
`go run scripts/modowners/modowners.go owners -a -c go.mod`
Example output:
```
@grafana/grafana-release-guild 5
@grafana/grafana-bi-squad 2
@grafana/grafana-app-platform-squad 13
@grafana/observability-metrics 4
@grafana/observability-traces-and-profiling 6
@grafana/aws-datasources 2
@grafana/alerting-squad-backend 22
@grafana/plugins-platform-backend 7
@grafana/grafana-operator-experience-squad 3
@grafana/dataviz-squad 1
@grafana/grafana-backend-group 75
@grafana/grafana-as-code 11
@grafana/identity-access-team 6
@grafana/partner-datasources 4
```
Example CLI command to get the owner for a specific dependency (you must use `dependency@version`, not `dependency version`):
`go run scripts/modowners/modowners.go owners -d cloud.google.com/go/storage@v1.30.1 go.mod`
Example output:
```
@grafana/grafana-backend-group
```
### `module`
List all dependencies of given owner(s).
Example CLI command to list all direct dependencies owned by Delivery and Authnz:
`go run scripts/modowners/modowners.go modules -o @grafana/grafana-release-guild,@grafana/identity-access-team go.mod`
Example output:
```
github.com/BurntSushi/toml@v1.2.1
github.com/go-ldap/ldap/v3@v3.4.4
github.com/magefile/mage@v1.14.0
golang.org/x/oauth2@v0.8.0
github.com/drone/drone-cli@v1.6.1
github.com/google/go-github/v45@v45.2.0
github.com/Masterminds/semver/v3@v3.1.1
gopkg.in/square/go-jose.v2@v2.6.0
filippo.io/age@v1.1.1
github.com/docker/docker@v23.0.4+incompatible
```
## Action items
For existing dependencies, please review and update ownership of your teams dependencies in `go.mod`.
- If any assignments are incorrect, you can replace your team name with the correct team in `go.mod`.
- If you dont know who the correct team is, you can reassign the dependency back to backend platform. Afterwards, open a PR and assign backend platform as reviewers.