diff --git a/software/gitlab/software.cfg b/software/gitlab/software.cfg new file mode 100644 index 0000000000000000000000000000000000000000..a15ddebcd06870fbfcc29b48e71830dc294eb9a8 --- /dev/null +++ b/software/gitlab/software.cfg @@ -0,0 +1,141 @@ +# GitLab software-release +[buildout] +extends = + ../../stack/slapos.cfg + ../../component/ruby/buildout.cfg + ../../component/golang/buildout.cfg + ../../component/postgresql/buildout.cfg + ../../component/redis/buildout.cfg + ../../component/cmake/buildout.cfg + ../../component/icu/buildout.cfg + ../../component/pkgconfig/buildout.cfg + ../../component/nodejs/buildout.cfg + ../../component/openssl/buildout.cfg + ../../component/nginx/buildout.cfg + +parts = + ruby2.1 + golang15 + git + postgresql92 + redis28 + cmake + icu + pkgconfig + nginx-output + + gitlab-shell/vendor + gitlab/vendor/bundle + gitlab-workhorse + + +############################ +# Software compilation # +############################ + +# rubygemsrecipe with fixed url and this way pinned rubygems version +[rubygemsrecipe] +recipe = rubygemsrecipe +url = https://rubygems.org/rubygems/rubygems-2.5.1.zip + + +# bundler, that we'll use to +# - install gems for gitlab +# - run gitlab services / jobs (via `bundle exec ...`) +[bundler-4gitlab] +<= rubygemsrecipe +ruby-location = ${ruby2.1:location} +ruby-executable = ${:ruby-location}/bin/ruby +gems = bundler==1.11.2 + +# bin installed here +bundle = ${buildout:bin-directory}/bundle + +# install together with dependencies of gitlab, which we cannot specify using +# --with-... gem option +# ( reason: rubygemsrecipe hardcodes PATH inside generated bin/* and it is +# impossible to adjust it later ) +# +# bundle exec <smth> ; <smth> starts with `#!/usr/bin/env ruby` as rubygems +# Rugged needs: cmake, pkgconfig +# execjs needs: nodejs +# rails needs db client program on path: psql +# gitlab wants to check redis version via running: redis-cli +environment = + PATH = ${:ruby-location}/bin:${cmake:location}/bin:${pkgconfig:location}/bin:${nodejs:location}/bin:${postgresql92:location}/bin:${redis28:location}/bin:%(PATH)s + + +# gitlab, gitlab-shell & gitlab-workhorse checked out as git repositories +# pinned to exact commit +[git-repository] +recipe = slapos.recipe.build:gitclone +git-executable = ${git:location}/bin/git + +[gitlab-repository] +<= git-repository +repository = https://gitlab.com/gitlab-org/gitlab-ce.git +# 8.2.X +revision = v8.2.3-0-g19daba8a6f170e38bcd7371bab2d582d5324b215 +location = ${buildout:parts-directory}/gitlab + +[gitlab-shell-repository] +<= git-repository +repository = https://gitlab.com/gitlab-org/gitlab-shell.git +# gitlab 8.2 wants gitlab-shell 2.6.8 +revision = v2.6.8-0-g1a75d086b53d799ac10f77acfb198f2c5ea95621 +location = ${buildout:parts-directory}/gitlab-shell + +[gitlab-workhorse-repository] +<= git-repository +repository = https://gitlab.com/gitlab-org/gitlab-workhorse.git +# 0.4.X +revision = 0.4.1-3-g9123131eab0de3b896b8c365dc8f8892c13f70a9 +location = ${buildout:parts-directory}/gitlab-workhorse + + + +# build needed-by-gitlab gems via bundler +[gitlab/vendor/bundle] +recipe = slapos.recipe.cmmi +path = ${gitlab-repository:location} +bundle = ${bundler-4gitlab:bundle} + +configure-command = cd ${:path} && + ${:bundle} config --local build.charlock_holmes --with-icu-dir=${icu:location} && + ${:bundle} config --local build.pg --with-pg-config=${postgresql92:location}/bin/pg_config + +make-binary = +make-targets= cd ${:path} && + ${:bundle} install --deployment --without development test mysql kerberos + + +# build needed-by-gitlab-shell gems via bundler +# ( there is not vendor/ dir in gitlab-shell, so to avoid having buildout error +# on mkdir vendor/bundle, this part name is just /vendor ) +[gitlab-shell/vendor] +recipe = slapos.recipe.cmmi +path = ${gitlab-shell-repository:location} +bundle = ${bundler-4gitlab:bundle} + +configure-command = true +make-binary = +make-targets= cd ${:path} && + ${:bundle} install --deployment --without development test + + +# build gitlab-workhorse +[gitlab-workhorse] +recipe = slapos.recipe.cmmi +path = ${gitlab-workhorse-repository:location} + +configure-command = : +make-targets= ${:_buildout_section_name_} + +environment = + PATH=${golang15:location}/bin:%(PATH)s + + + + +[versions] +rubygemsrecipe = 0.2.2