Follow the steps below in order to configure the CODEOWNERS plugin:
CODEOWNERSfile in the root of your repository.
In the Bitbucket repository, go to
Repository Settings -> Merge Checksand enable the
Code Owners minimum approvalsoption. If there are multiple teams that own the project use the
Min. # of approvals for each groupoption.
To configure the owners of the projects and files of the repository, read the following instructions:
# Either put this in a file called CODEOWNERS # Every line is a file pattern that is followed by one or more code owners. # Lines starting with # are comments. # This user will be the default owner for everything in the repo. * AllMighty_Owner@trimble.com # Ordering is important! The last matching file pattern has the highest precedence. # So if only a Java file is in the pull request, The_Java_Guy@trimble is the code owner # and not the default owner AllMighty_Owner@trimble. *.java The_Java_Guy@trimble.com # You can also use Bitbucket groups which start with '@@' compared to single users. # This will add all members of the Bitbucket group JSExperts. *.js Some_Guy_Paul@trimble.com @@JSExperts # If you want, you can define your own code owner groups instead of using Bitbucket groups. # This will define a new group MyDevs, both including users and other groups: @@@MyDevs Some_Guy_Paul@trimble.com The_Java_Guy@trimble.com @@JSDevs # For Bitbucket users and groups with spaces in their name, put them into double quotes. *.ts @@"Dev Ops Team" # When your glob expression contains spaces, put the glob into double quotes. "a/path with spaces/*" firstname.lastname@example.org # Files starting with a `#` or a `!` can still be used by escaping them. \#myfile.rb Some_Guy_Paul@trimble.com \!your-file.rb @@MyDevs # AnnTheScalaPro is the code owner of all files in the /src/main/scala directory at # the root and all its descendants (e.g., /src/main/scala/com/x/y/z.scala). /src/main/scala/ AnnTheScalaPro@trimble.com # ci/* will match all files in the directory ci, but not deeper in # the directory hierarchy (so ci/jobs/prod.yml will not match). ci/* @devops # You can use '!' for negation in front of file pattern without any code owners afterwards, # to unset all previously defined code owners of the files. # e.g. devops group wants to review everything under ci (as defined above), # except ci/playgrounds.yml, which nobody needs to review: !ci/playgrounds.yml # It's also possible to use double-asterisk globs. Here's an example that will match # all JS files under /src/components. src/components/**/*.js @@MyDevs # MyDevs owns any files in the groovy directory anywhere in the # file tree (e.g., src/main/groovy/com/x/y/z.groovy). groovy/ @@MyDevs # It is important to protect CODEOWNERS file as well because otherwise it can get deleted # or moved within a pull request; so we want to assign a code owner to it which can prevent this CODEOWNERS AllMighty_Owner@trimble.com