The Mayhem for API CLI tool,
mapi, leverages git if ran within a git repository.
It detects the author, branch, commit SHA, commit message, and the parent commit SHA.
This information is attached to a job and helps Mayhem display useful information about
The default branch is considered the baseline for comparisons and overall target health.
Typical default branches are
develop. The default branch is set
on the target's settings page.
Jobs ran on the default branch will have a default tag shown on the job's row.
Issues found on the default branch will be replayed on other branches.
Mayhem supports two different scenarios for computing the difference between jobs with git context.
Note: To auto-detect diffs, Mayhem needs a non-shallow history.
Default Branch Job
Each default branch job is compared to the last job of the previous commit.
If the previous commit of the default branch does not have a job, because of a pipeline failure or CI configuration, a reason explaining the cause of the missing diff will be shown in place of a number.
For example, a git command to find the previous commit SHA is
git rev-parse HEAD~1.
Jenkins can group commits together. Default branch jobs on Jenkins will use
the value of the environment variable
GIT_PREVIOUS_SUCCESSFUL_COMMIT if it is available.
Jenkins publishes the available environment variables at
GIT_PREVIOUS_SUCCESSFUL_COMMIT is not available, Mayhem will fall back to the logic above.
A job ran on any branch other than the default branch is compared to the last job of the commits merge base with the default branch.
If a merge base commit cannot be found, or a job does not exist for it because of a pipeline failure or CI configuration, a reason explaining the cause of the missing diff will be shown in place of a number.
The example of a git command is
git merge-base HEAD origin/main.
Some CI providers like GitHub Actions fetch a shallow clone of the repository by default. We recommend cloning a full repository if possible. If it is not desirable or possible to clone the full repository, a partial clone of a depth that will capture the merge base is recommended.
If Mayhem cannot detect the parent SHA with the context it is given, it will try to deepen
the repository by 50 commits and retry the SHA detection a single time. This requires that
fetch access to the remote repository is available to
git in the CI step.
Identifying the Previous Job
The previous job that was used as a baseline for a diff can be seen by hovering over the diff stats on the job row.
Overriding the Parent SHA
If a project's git workflow is not compatible with the default behaviour, override the parent SHA by supplying it:
mapi run \ <target_name> \ auto \ <path_to_api_specification> \ --url "https://example.com" \ --parent-sha <your_sha>
No git branch or commit information
To enable git support for
mapi, ensure that it is:
- Ran within the path of a git repository
gitis available on the Path
Try adding the shell scripts to your CI provider before executing
mapi and verify
that the output is a SHA:
# this should return the SHA when the default branch is checked out git rev-parse HEAD~1 # this should return a SHA when git merge-base HEAD origin/main