jvq Now Gates GitLab Merge Requests, With a Ready Template and a JUnit Report
Until now jvq came with a GitHub Action and a line in the README saying GitLab works the same way. It did, if you worked out the base commit, the clone depth and the download yourself. Version 0.4 does that part for you.
There’s a ready job to include, jvq reads GitLab’s own merge request variables to pick the base, and a new JUnit report puts the result in the merge request’s test summary, next to your other tests.

Three Lines in .gitlab-ci.yml
include:
- remote: https://raw.githubusercontent.com/just-very-quickly/jvq/v0.4.0/ci/gitlab/jvq.yml
benchmarks:
extends: .jvq
image: golang:1.26
variables:
JVQ_COMMAND: go test -run=NONE -bench=. -benchmem ./...
The .jvq job runs in merge request pipelines and on the default branch. It asks GitLab for a full clone, downloads the release and checks it against its SHA256SUMS, and runs jvq run. A regression fails the job. The table goes to the job log, jvq.md and jvq.json are kept as artifacts, and the JUnit report shows in the merge request.
Picking the Right Base
GitLab has several kinds of merge request pipeline, and each wants a different base. In a merged results pipeline, head is GitLab’s merge of the change into the target branch, so jvq compares it with the target. In a merge train on a fast-forward project there’s no merge commit at all, just the change rebased onto the target, and jvq takes the target commit GitLab names. Otherwise it uses the merge request’s own base commit. The review before release caught the fast-forward case; it would have gated only the last commit of a train.
Also for Jenkins
-junit FILE works anywhere. Each gated result is a test case: a regression fails it, an inconclusive result is marked skipped with the reason. Jenkins and most other CI systems read the format.
We tested the template with gitlab-ci-local, which ran it end to end and downloaded and checked a real release, and with GitLab’s variables set by hand. It hasn’t run on gitlab.com yet. If it trips on something there, write in. The details are in the reference.