Gitlab

auto-mr: one command from feature branch to merged PR

A Go CLI that pushes your branch, opens an MR/PR, waits for CI, and merges — works on both GitLab and GitHub

I push a feature branch a dozen times a week. Every single time, the dance is the same: git push, switch to the browser, click the “Create MR” button, set assignee, set reviewer, add labels, wait for CI, click merge, switch back to terminal, git checkout main, git pull, git branch -d feature/.... It’s not hard. It’s just tedious — and the kind of friction that adds up over a week.

I had a shell script glued together with glab, gh, jq, yq, and gum doing this for years. It worked, but it broke whenever any of those tools updated and was a pain to ship to a fresh laptop. So I rewrote the whole thing in Go and called it auto-mr. One binary, no external CLIs, works on both GitLab and GitHub.

Tools golang gitlab github

gitlab-mcp: drive GitLab from Claude Code without leaving the terminal

An MCP server that exposes GitLab issues, labels, epics, and CI/CD pipelines as tools Claude Code can call directly

I spend a lot of time in Claude Code, and a lot of time in GitLab. The constant tab-switching between the two — copy an issue ID, paste it into a prompt, jump back to read a job log, paste that too — got tiresome. So I wrote gitlab-mcp, a Model Context Protocol server that lets Claude Code talk to GitLab directly.

Tools gitlab mcp claude-code

gitlab-token-expiration: stop getting surprised by expiring GitLab tokens

A CLI that lists every expirable token across your GitLab projects, groups, and personal account so you can plan rotations

GitLab access tokens expire. Project tokens, group tokens, personal access tokens — all of them. The trouble is that the expiration dates live in different corners of the UI, and you usually find out one expired the morning a CI pipeline mysteriously starts failing.

gitlab-token-expiration is the small tool I wrote to never have that morning again.

Tools gitlab security cli

gitlab-backup2s3: Encrypted GitLab Backups to S3, with Kubernetes Support

A Docker image wrapping gitlab-backup with AES-GCM encryption and Kubernetes CronJob deployment for automated, secure GitLab backups to S3

gitlab-backup2s3: Encrypted GitLab Backups to S3, with Kubernetes Support

Source code: github.com/sgaunet/gitlab-backup2s3 Helm chart: github.com/sgaunet/helm-gitlab-backup2s3

In the previous article, I covered gitlab-backup, a CLI tool for exporting GitLab projects and groups as portable archives. It handles the export, the restore, and supports both local and S3 storage natively.

But for production backup workflows — especially in a Kubernetes environment — you often want more: scheduled execution, optional encryption at rest, and a container image that bundles everything together. That’s exactly what gitlab-backup2s3 brings to the table.

DevOps gitlab backup s3

Using Go Modules Hosted in a Private GitLab Repository

Configure Go, GitLab CI job tokens, and .netrc to seamlessly consume private Go modules from internal GitLab repositories

When your Go project depends on an internal library living in a private GitLab repository, a plain go get will fail — GitLab doesn’t know who is asking, and Go doesn’t know the repository is private. Fortunately, a handful of configuration steps sorts everything out, both locally and in CI.

DevOps golang gitlab cicd