software.cfg 7.95 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
parts =
    ruby2.1
Kirill Smelkov's avatar
Kirill Smelkov committed
26
    golang16
27 28 29 30 31 32 33 34
    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 117
# 8.6.X + NXD patches:
revision = v8.6.9-9-g1aafce0d0634afa9b3cfaf1e3a5b090c8c980076
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.6 wants gitlab-shell 2.6.12
# 2.6.12 + NXD patches
revision = v2.6.12-1-g03df9d7f9cfaa9e058f4c7053a497069b9b52657
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 134
# 0.7.1 + NXD patches
revision = v0.7.1-5-gd23a3247829fc3200e3dc784dcd57b5a0febac48
135 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
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 =
Kirill Smelkov's avatar
Kirill Smelkov committed
177
  PATH=${golang16:location}/bin:%(PATH)s
178 179


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

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


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

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

207 208 209 210 211 212 213 214 215 216 217

# 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_}

218 219 220 221 222 223 224 225
# 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
226
md5sum  = 4f6191c6e6bbaf2cd39c6f155fe192e1
227 228 229

[database.yml.in]
<= download-template
230
md5sum  = 60504181bf40fefd023b2b8facff291d
231

232 233
[gitconfig.in]
<= download-template
234
md5sum  = 56b135596e013c02bda5555dda6b376b
235

236 237
[gitlab-parameters.cfg]
<= download-file
238
md5sum  = 8cbcdb8d9e942df67d2fbb4db5fbfaad
239

240 241
[gitlab-shell-config.yml.in]
<= download-template
242
md5sum  = cdcb2036c33da547a2cf5d0515cf48ff
243

244 245
[gitlab-unicorn-startup.in]
<= download-file
246
md5sum  = a9cb347f60aad3465932fd36cd4fe25d
247

248 249
[gitlab.yml.in]
<= download-template
250
md5sum  = 043804b76affe91a0bd3686f93f80ac8
251 252 253

[instance-gitlab.cfg.in]
<= download-file
254
md5sum  = 0e7c13b5a5a3ad8748a79eea177b0ce3
255

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

260 261
[nginx-gitlab-http.conf.in]
<= download-template
262
md5sum  = 27feb252c2eba8e665164ea3b496fcd7
263 264 265

[nginx.conf.in]
<= download-template
266
md5sum  = 5799afef0a60d07c9e6b52d0efaccec7
267

268 269
[rack_attack.rb.in]
<= download-template
270
md5sum  = 6218a2f01fea29da1f61d69584635b52
271 272 273

[resque.yml.in]
<= download-template
274
md5sum  = acd686b43ae37c4282e67b668786986e
275 276 277

[smtp_settings.rb.in]
<= download-template
278
md5sum  = a4dda9c94f2ee72851343f505d5f495e
279 280 281

[unicorn.rb.in]
<= download-template
282
md5sum  = 293143fecab603299bbc0a3dfd907ac3
283

284 285

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