A gomnibus port of omnibus-gitlab — builds self-contained GitLab Community Edition packages (.deb, .rpm, .tar.gz) from declarative YAML definitions.
gomnibus-gitlab translates the Ruby Omnibus DSL from omnibus-gitlab into gomnibus YAML definitions. No Ruby, no Bundler, no Gemfile — just gomnibus build gitlab.
| Component | Version | Description |
|---|---|---|
| GitLab Rails | 17.11.0 | Main GitLab web application |
| Gitaly | 17.11.0 | Git operations service |
| GitLab Shell | 14.43.0 | SSH access and Git push handler |
| GitLab Workhorse | 17.11.0 | HTTP acceleration proxy (built inside Rails repo) |
| GitLab Pages | 17.11.0 | Static site hosting service |
| GitLab KAS | 17.11.0 | Kubernetes Agent Server |
| Ruby | 3.3.11 | Runtime for Rails and Gitaly |
| PostgreSQL | 17.10 | Primary database |
| Valkey | 7.2.11 | In-memory store (Redis-compatible; replaces Redis) |
| Nginx | 1.26.3 | Reverse proxy and static file server |
| Git | 2.47.0 | Git SCM binary |
| Node.js | 22.11.0 | Required for asset compilation |
| Prometheus | 3.11.2 | Metrics collection |
| Alertmanager | 0.31.1 | Alert routing |
| node-exporter | 1.9.1 | Host metrics exporter |
| redis-exporter | 1.86.0 | Valkey metrics exporter |
| postgres-exporter | 0.19.1 | PostgreSQL metrics exporter |
| runit | 2.1.2 | Process supervision |
| logrotate | 3.22.0 | Log rotation |
Base libraries (from gomnibus-software): zlib, OpenSSL, libffi, libyaml, ncurses, bzip2, curl, CA certificates
GitLab-specific libraries (in this repo): pcre2, libedit, jemalloc, libicu, libxml2, libxslt, libiconv, libossp-uuid, libevent
- gomnibus:
go install github.com/syntaxroot-cc/gomnibus/cmd/gomnibus@latest - Standard build tools:
gcc,make,autoconf,cmake,pkg-config - Platform package requirements — see CONTRIBUTING.md
git clone https://github.com/syntaxroot-cc/gomnibus-gitlab
cd gomnibus-gitlab
git submodule update --init # pulls lib/gomnibus-software
# Validate all definitions without building
gomnibus validate gitlab
# Full build (takes several hours the first time; subsequent builds use the cache)
gomnibus build gitlab
# Packages land in pkg/
ls pkg/
# gitlab_17.11.0-1_amd64.deb
# gitlab-17.11.0-1.x86_64.rpm
# gitlab-17.11.0-1.tar.gzgomnibus.yaml # global config (cache settings, software_dirs)
config/
projects/
gitlab.yaml # GitLab CE project definition
software/
*.yaml # component definitions (25 components)
lib/
gomnibus-software/ # git submodule — shared base library
validate/
validate_test.go # CI validation suite (go test ./validate/...)
.kitchen.yml # Test Kitchen config (Docker integration tests)
.github/
workflows/ci.yml # GitHub Actions CI
dependabot.yml # weekly gomod + actions updates
Enable S3 caching for faster builds across machines:
# gomnibus.yaml
use_git_caching: true
use_s3_caching: true
s3_bucket: my-gomnibus-cache
s3_region: us-east-1The first build populates the cache; subsequent builds skip unchanged components.
Pin any component to a specific version without editing the software definition:
# config/projects/gitlab.yaml
overrides:
- name: postgresql
version: "16.8"
- name: ruby
version: "3.3.10"Integration tests build GitLab packages inside Docker containers and verify the package installs correctly:
gomnibus kitchen list # show platform status
gomnibus kitchen test ubuntu # build + install + verify on Ubuntu 22.04
gomnibus kitchen test # all platforms| Aspect | omnibus-gitlab | gomnibus-gitlab |
|---|---|---|
| DSL | Ruby | YAML |
| Build tool | omnibus gem (Ruby) |
gomnibus (Go binary) |
| Definition files | config/software/*.rb |
config/software/*.yaml |
| Project file | config/projects/gitlab.rb |
config/projects/gitlab.yaml |
| Dependency resolution | Ruby Omnibus | gomnibus topological sort |
| Version pinning | Gitlab::Version.new(...) |
overrides: in project YAML |
| Multi-version blocks | Ruby DSL | versions: in software YAML |
| Build caching | git-based | content-addressable + S3 |
| Package formats | deb, rpm | deb, rpm, tar.gz |
| Install dir | /opt/gitlab |
/opt/gitlab |
| Embedded libs path | /opt/gitlab/embedded/ |
/opt/gitlab/embedded/ |
Apache License 2.0 — see LICENSE.
Based on omnibus-gitlab © GitLab, Inc. (Apache 2.0).