software.cfg 8.05 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
# 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

16
#   for instance
17
    ../../component/bash/buildout.cfg
18
    ../../component/bzip2/buildout.cfg
19
    ../../component/curl/buildout.cfg
20 21 22 23
    ../../component/gzip/buildout.cfg
    ../../component/dcron/buildout.cfg
    ../../component/logrotate/buildout.cfg

24 25 26 27 28 29 30 31 32 33 34
parts =
    ruby2.1
    golang15
    git
    postgresql92
    redis28
    cmake
    icu
    pkgconfig
    nginx-output

35
    python-4gitlab
36 37 38 39
    gitlab-shell/vendor
    gitlab/vendor/bundle
    gitlab-workhorse

40 41 42 43 44 45
#   for instance
    instance.cfg

    slapos-cookbook
    eggs

46 47
    bash
    curl
48
    watcher-sigkill
49 50 51 52
    gzip
    dcron-output
    logrotate

53 54 55 56 57

############################
#   Software compilation   #
############################

58 59 60 61 62 63 64 65 66 67 68
# python with eggs, that will be used in gitlab
[python-4gitlab]
# NOTE cannot use zc.recipe.egg - github-markup invoks `python2 -S` and
# interpreter generated by zc.recipe.egg cannot handle that.
recipe  = z3c.recipe.scripts
# NOTE github-markup invokes it as `python2`, that's why we are naming it this way
# https://github.com/github/markup/blob/5393ae93/lib/github/markups.rb#L36
interpreter = python2
eggs    =
    docutils

69 70 71
# rubygemsrecipe with fixed url and this way pinned rubygems version
[rubygemsrecipe]
recipe  = rubygemsrecipe
72
url     = https://rubygems.org/rubygems/rubygems-2.5.2.zip
73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96


# 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
97 98 99
# gitlab wants git to be really on path ( it uses git from abspath defined in
#   gitlab.yml, but there are not all cases like this, e.g. in
#   https://gitlab.com/gitlab-org/gitlab_git/blob/2f0d3c1a/lib/gitlab_git/repository.rb#L259 )
100 101
# gitlab (via github-markup) wants to convert rst -> html via running: python2 (with docutils egg)
# (python-4gitlab puts interpreter into ${buildout:bin-directory})
102
environment =
103
  PATH    = ${:ruby-location}/bin:${cmake:location}/bin:${pkgconfig:location}/bin:${nodejs:location}/bin:${postgresql92:location}/bin:${redis28:location}/bin:${git:location}/bin:${buildout:bin-directory}:%(PATH)s
104 105 106 107 108 109 110 111 112 113


# 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
114
#repository = https://gitlab.com/gitlab-org/gitlab-ce.git
115
repository = https://lab.nexedi.com/nexedi/gitlab-ce.git
116
# 8.5.X + NXD patches:
Kirill Smelkov's avatar
Kirill Smelkov committed
117
revision = v8.5.3-15-g827d39147af496bcd4696c845e9094a07b5a09d3
118 119 120 121
location = ${buildout:parts-directory}/gitlab

[gitlab-shell-repository]
<= git-repository
122
#repository = https://gitlab.com/gitlab-org/gitlab-shell.git
123
repository = https://lab.nexedi.com/nexedi/gitlab-shell.git
124 125 126
# gitlab 8.5 wants gitlab-shell 2.6.10
# 2.6.10 + no-hooks.old patch
revision = v2.6.10-13-gcb8f331c955aa780efe10263d0d45b332f030f42
127 128 129 130
location = ${buildout:parts-directory}/gitlab-shell

[gitlab-workhorse-repository]
<= git-repository
131
#repository = https://gitlab.com/gitlab-org/gitlab-workhorse.git
132
repository = https://lab.nexedi.com/nexedi/gitlab-workhorse.git
133
# 0.6.4 + NXD patches for blob download speedup
134
# (https://gitlab.com/gitlab-org/gitlab-workhorse/merge_requests/17)
135
revision = v0.6.4-3-g32ec77c4db3556dc66e8c863326325f8ec970849
136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180
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


181 182 183 184 185 186 187 188 189
###############################
#   Trampoline for instance   #
###############################

# eggs for instance.cfg
[eggs]
recipe  = zc.recipe.egg
eggs    =
    plone.recipe.command
190
    cns.recipe.symlink
191 192 193 194 195 196


[instance.cfg]
recipe  = slapos.recipe.template
url     = ${:_profile_base_location_}/instance.cfg.in
output  = ${buildout:directory}/instance.cfg
197
md5sum  = e5e7ddede71265987bb0c534b009aa45
198

199 200 201 202 203
[watcher-sigkill]
recipe  = slapos.recipe.template:jinja2
template= ${:_profile_base_location_}/${:_buildout_section_name_}.in
rendered= ${buildout:bin-directory}/${:_buildout_section_name_}
mode    = 0755
204
md5sum  = 2986dcb006dc9e8508ff81f646656131
205 206 207
context =
    section bash    bash

208 209 210 211 212 213 214 215 216 217 218

# macro: download a file named as section name
#
#   [filename]
#   <= download-file
#   md5sum = ...
[download-file]
recipe  = slapos.recipe.build:download
url     = ${:_profile_base_location_}/${:_buildout_section_name_}
destination = ${buildout:directory}/${:_buildout_section_name_}

219 220 221 222 223 224 225 226
# like download-file, but download from template/<filename>
[download-template]
<= download-file
url     = ${:_profile_base_location_}/template/${:_buildout_section_name_}


[config.ru.in]
<= download-template
227
md5sum  = 91737a2067be80f3ae48157e5a0738b4
228 229 230

[database.yml.in]
<= download-template
231
md5sum  = 76d8f20532d63282ecd3617a3937fcf1
232

233 234
[gitconfig.in]
<= download-template
235
md5sum  = d8b3611386c4982605edd9a31832ee28
236

237 238
[gitlab-parameters.cfg]
<= download-file
239
md5sum  = b04b72949f0b9b5da96870ffbf8c1ff4
240

241 242
[gitlab-shell-config.yml.in]
<= download-template
243
md5sum  = 9c62aa1bf7396f207a528e39973aa135
244

245 246
[gitlab-unicorn-startup.in]
<= download-file
247
md5sum  = 14c5632182d830c03f7788c85d6f4da1
248

249 250
[gitlab.yml.in]
<= download-template
251
md5sum  = 8f1c52ed223ee2c2d07c6c79bcd2f6c0
252 253 254

[instance-gitlab.cfg.in]
<= download-file
255
md5sum  = d3158d58e7fea9a656a8ef6e238a919b
256

257 258
[macrolib.cfg.in]
<= download-file
259
md5sum  = a56a44e96f65f5ed20211bb6a54279f4
260

261 262
[nginx-gitlab-http.conf.in]
<= download-template
263
md5sum  = be7ddd26b0b0196fde8d699e50e84b2f
264 265 266

[nginx.conf.in]
<= download-template
267
md5sum  = 71b4221cd91e0e1e20a72b97991f2665
268

269 270
[rack_attack.rb.in]
<= download-template
271
md5sum  = 2cf56b210a906cee80f86cde7112f468
272 273 274

[resque.yml.in]
<= download-template
275
md5sum  = 1fa21655a845602f68a901f23a1da89a
276 277 278

[smtp_settings.rb.in]
<= download-template
279
md5sum  = 07b640122b8c4840e853360f2479d0ac
280 281 282

[unicorn.rb.in]
<= download-template
283
md5sum  = 4f7c14147fd60b4cc9aefe7f64524abe
284

285 286

[versions]
287
cns.recipe.symlink = 0.2.3
288
docutils = 0.12
289
plone.recipe.command = 1.1
290
rubygemsrecipe  = 0.2.2
291
slapos.recipe.template = 2.9
292
z3c.recipe.scripts = 1.0.1