SCM Request Check Plugin Module
Introduction
Whenever an scm client (for example, the git
binary) pushes commits to or pulls commits from Bitbucket Server, the request must pass through a pipeline of SCM Request Checks before being allowed to interact with a Bitbucket Server repository. You can add to this pipeline by defining your own SCM Request Check modules.
Example SCM request checks might include:
- A check that puts a repository into maintenance mode (all pushes and pulls are blocked) to fix a bad merge
- A check that prevents access to a repository that has been moved to another server, and sends the user a message with the new location
ScmRequestCheck
implementations are passed an ScmRequest
object which allows them to determine the context repository for the request and whether the request is a push or pull. ScmRequest
also allows the request check to send human-readable messages to the client.
Configuration
The root element for an SCM Request Check plugin module is <scm-request-check/>
. It allows the following attributes for configuration:
Attributes
Name | Required | Description | Default |
---|---|---|---|
key | The identifier of the plugin module. This key must be unique within the plugin where it is defined. | N/A | |
class | The fully qualified Java class name of SCM request check. This class must implement ScmRequestCheck. | N/A | |
weight | The (integer) weight of the plugin module. Request checks with a larger weight will be processed later. | 10 |
Example
Here is an excerpt from the atlassian-plugin.xml
file that defines Bitbucket Server's bundled SCM request checks:
x1<atlassian-plugin key="${project.groupId}.${project.artifactId}" name="${project.name}" plugins-version="2">
2<plugin-info>
3<description>${project.description}</description>
4<version>${project.version}</version>
5<vendor name="${project.organization.name}" url="${project.organization.url}" />
6</plugin-info>
7
8<!-- check that the context user has access to the repository, processed first -->
9<scm-request-check key="repository-authorisation-check"
10weight="100"
11class="com.atlassian.bitbucket.internal.scm.check.RepositoryAuthorisationCheck" />
12
13<!-- check that there aren't too many concurrent git hosting operations, processed second -->
14<scm-request-check key="throttle-check"
15weight="200"
16class="com.atlassian.bitbucket.internal.scm.check.ThrottleCheck" />
17</atlassian-plugin>