A client for the GitLab REST (v4) and GraphQL API, for
Jennifer programs: gitlab.com or a
self-managed instance. Projects, groups and subgroups, members and hooks;
issues, notes, labels and milestones; merge requests, approvals and
merging; releases with their links and the generic package registry;
branches, tags, files and the repository tree; commits, commit statuses,
pipelines and CI/CD variables. call and getAll reach every other
endpoint, graphql the GraphQL API.
jvc add @deckyard/gitlabThis vendors the deck to vendor/<scope>/gitlab/. Without jvc, unpack the
src/ subtree of a release archive (<scope>-gitlab-<version>.tar.gz) there.
import "@deckyard/gitlab/" as gitlab;
def c as gitlab.Client init gitlab.client("gitlab.com");
$c = gitlab.withToken($c, fs.readString("/run/secrets/gitlab"));
for (def i in gitlab.issues($c, "my-group/app", "opened")) {
io.printf("#%d %s\n", $i.iid, $i.title);
}
gitlab.createRelease($c, "my-group/app", "v1.2.0", "main", "", "Notes");
gitlab.uploadAsset($c, "my-group/app", "v1.2.0", "app", "app.tar.gz", fs.readBytes("dist/app.tar.gz"));
Jennifer 0.26.0 or newer, the default jennifer binary (not
jennifer-tiny), and the net capability.
tools/check-all.sh # the full gate, as CI runs it
jennifer test src/gitlab_test.j # the test overlay
tools/check-docs.sh # docs against the code
tools/pack.sh dist # build the release archiveLGPL-3.0-only, see LICENSE. Copyright (C) 2026 mplx <[email protected]>.
tools/check-headers.sh checks every source file's SPDX header against
deck.toml.