software.cfg 10.3 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/coreutils/buildout.cfg
18
    ../../component/bash/buildout.cfg
19
    ../../component/grep/buildout.cfg
20
    ../../component/bzip2/buildout.cfg
21
    ../../component/curl/buildout.cfg
22
    ../../component/tar/buildout.cfg
23 24 25 26
    ../../component/gzip/buildout.cfg
    ../../component/dcron/buildout.cfg
    ../../component/logrotate/buildout.cfg

27 28
parts =
    ruby2.1
Kirill Smelkov's avatar
Kirill Smelkov committed
29
    golang16
30 31 32 33 34 35 36 37
    git
    postgresql92
    redis28
    cmake
    icu
    pkgconfig
    nginx-output

38
    python-4gitlab
39 40 41
    gitlab-shell/vendor
    gitlab/vendor/bundle
    gitlab-workhorse
42
    git-backup
43

44 45 46
#   for instance
    instance.cfg

47 48 49 50
# TODO stop using slapos.cookbook-develop once 571d6514 gets into released
# slapos.cookbook egg
    slapos-cookbook-develop

51 52 53
    slapos-cookbook
    eggs

54 55
    bash
    curl
56
    watcher-sigkill
57
    gitlab-export
58 59 60 61
    gzip
    dcron-output
    logrotate

62 63 64
[slapos.cookbook-repository]
revision = 571d6514f7290e8faa9439c4b86aa2f6c87df261

65 66 67 68
[git]
# TODO stop using custom git revision once git 2.11 is supported by Gitlab
url = https://www.kernel.org/pub/software/scm/git/git-2.10.2.tar.xz
md5sum = 3cd1dca37be60668f482545716923b72
69 70 71 72 73

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

74 75 76 77 78 79 80 81 82 83 84
# 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

85 86 87
# rubygemsrecipe with fixed url and this way pinned rubygems version
[rubygemsrecipe]
recipe  = rubygemsrecipe
88
url     = https://rubygems.org/rubygems/rubygems-2.5.2.zip
89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112


# 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
113 114 115
# 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 )
116 117
# gitlab (via github-markup) wants to convert rst -> html via running: python2 (with docutils egg)
# (python-4gitlab puts interpreter into ${buildout:bin-directory})
118
environment =
119
  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
120 121 122 123 124 125 126 127 128 129


# 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
130
#repository = https://gitlab.com/gitlab-org/gitlab-ce.git
131
repository = https://lab.nexedi.com/nexedi/gitlab-ce.git
iv's avatar
iv committed
132 133
# 8.8.X + NXD patches:
revision = v8.8.9-10-g967afbdc3a2d2bcc58ed31ca50d5293fa2a2e9ed
134 135 136 137
location = ${buildout:parts-directory}/gitlab

[gitlab-shell-repository]
<= git-repository
138
#repository = https://gitlab.com/gitlab-org/gitlab-shell.git
139
repository = https://lab.nexedi.com/nexedi/gitlab-shell.git
iv's avatar
iv committed
140
# gitlab 8.8 wants gitlab-shell 2.7.2
141 142
# 2.7.2 + NXD patches
revision = v2.6.10-50-gfbca95be784816349abc5930324659151eca50d1
143 144 145 146
location = ${buildout:parts-directory}/gitlab-shell

[gitlab-workhorse-repository]
<= git-repository
147
#repository = https://gitlab.com/gitlab-org/gitlab-workhorse.git
148
repository = https://lab.nexedi.com/nexedi/gitlab-workhorse.git
iv's avatar
iv committed
149
# gitlab 8.8 wants gitlab-workhorse 0.7.1
150 151
# 0.7.1 + NXD patches
revision = v0.7.1-5-gd23a3247829fc3200e3dc784dcd57b5a0febac48
152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169
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

170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215
# directories and repositories required by gitlab-backup
[gopath]
directory = ${buildout:directory}/go.work
src	= ${:directory}/src
bin	= ${:directory}/bin

[go-git-repository]
<= git-repository
repository = https://${:go.importpath}.git
location = ${gopath:src}/${:go.importpath}

[git2go-repository]
<= go-git-repository
go.importpath = github.com/libgit2/git2go
# branch 'next' is required by git-backup
revision = next-g53594d7581617dbae7bb5960b4ac5f0ff513c184

[git-backup-repository]
<= go-git-repository
go.importpath = lab.nexedi.com/kirr/git-backup
revision = 3ba6cf73ba224c40f67f1fb87c855b915eb91f58


[git-backup]
# install git2go, git-backup, gitlab-backup in <gopath>/bin
recipe  = slapos.recipe.cmmi
path    = ${git-backup-repository:location}
configure-command = :
make-binary =
make-targets= cd ${git2go-repository:location}
              && git submodule update --init
              && make install
              && install -d ${gopath:bin}
              && go install ${git-backup-repository:go.importpath}
              && cp -a ${git-backup-repository:location}/contrib/gitlab-backup ${gopath:bin}
environment =
  PATH=${cmake:location}/bin:${pkgconfig:location}/bin:${git:location}/bin:${golang16:location}/bin:${buildout:bin-directory}:%(PATH)s
  GOPATH=${gopath:directory}

[xnice-repository]
# to get kirr's misc repo containing xnice script for executing processes
# with lower priority (used for backup script inside the cron)
<= git-repository
repository = https://lab.nexedi.com/kirr/misc.git
revision =  4073572ea700bf1b115f3a135aebebe5b3b824e4
location = ${buildout:parts-directory}/misc
216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239

# 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
240
  PATH=${golang16:location}/bin:%(PATH)s
241 242


243 244 245 246 247 248 249 250 251
###############################
#   Trampoline for instance   #
###############################

# eggs for instance.cfg
[eggs]
recipe  = zc.recipe.egg
eggs    =
    plone.recipe.command
252
    cns.recipe.symlink
253 254 255 256 257 258


[instance.cfg]
recipe  = slapos.recipe.template
url     = ${:_profile_base_location_}/instance.cfg.in
output  = ${buildout:directory}/instance.cfg
259
md5sum  = b99a99b161c0b292845002fc3fee50cd
260

261 262
# macro: download a shell script and put it rendered into <software>/bin/
[binsh]
263 264 265 266 267 268 269
recipe  = slapos.recipe.template:jinja2
template= ${:_profile_base_location_}/${:_buildout_section_name_}.in
rendered= ${buildout:bin-directory}/${:_buildout_section_name_}
mode    = 0755
context =
    section bash    bash

270 271 272 273 274 275 276 277 278
[watcher-sigkill]
<= binsh
md5sum  = 2986dcb006dc9e8508ff81f646656131

[gitlab-export]
<= binsh
md5sum  = a7b32680e80f34276f0a32a5e22dad50


279 280 281 282 283 284 285 286 287 288 289

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

290 291 292 293 294 295 296 297
# like download-file, but download from template/<filename>
[download-template]
<= download-file
url     = ${:_profile_base_location_}/template/${:_buildout_section_name_}


[database.yml.in]
<= download-template
298
md5sum  = 61d1d04b9347b3168a1ad7676e4681ef
299

300 301
[gitconfig.in]
<= download-template
302
md5sum  = eb1230fee50067924ba89f4dc6e82fa9
303

304 305
[gitlab-parameters.cfg]
<= download-file
306
md5sum  = a74670934ec0190cc212d1f3468c11ed
307

308 309
[gitlab-shell-config.yml.in]
<= download-template
310
md5sum  = 58c09b1e609f903e483a76fe9e57366c
311

312 313
[gitlab-unicorn-startup.in]
<= download-file
314
md5sum  = a9cb347f60aad3465932fd36cd4fe25d
315

316 317
[gitlab.yml.in]
<= download-template
318
md5sum  = 176939a6428a7aca4767a36421b0af2b
319 320 321

[instance-gitlab.cfg.in]
<= download-file
322
md5sum  = 89914e4a225f6cdebfa196d46359f6f2
323

324 325
[instance-gitlab-export.cfg.in]
<= download-file
326
md5sum  = 00bd4ddf75a40a9d18d8243289f68ee9
327

328 329
[macrolib.cfg.in]
<= download-file
330
md5sum  = a56a44e96f65f5ed20211bb6a54279f4
331

332 333
[nginx-gitlab-http.conf.in]
<= download-template
334
md5sum  = a11b50d2ff2b1fa842ba4aa20041e2fe
335 336 337

[nginx.conf.in]
<= download-template
338
md5sum  = 1374f38ab6f295b850d45ea0019ec05d
339

340 341
[rack_attack.rb.in]
<= download-template
342
md5sum  = 7d0e6dc6b826f6df6b20d8574a29e2f8
343 344 345

[resque.yml.in]
<= download-template
346
md5sum  = 7c89a730889e3224548d9abe51a2d719
347 348 349

[smtp_settings.rb.in]
<= download-template
350
md5sum  = c67ea492e17f774d0e18f1217338a55f
351 352 353

[unicorn.rb.in]
<= download-template
354
md5sum  = 83921db1835d9e81cbbe808631cc40a9
355

356 357

[versions]
358
cns.recipe.symlink = 0.2.3
359
docutils = 0.12
360
plone.recipe.command = 1.1
361
rubygemsrecipe  = 0.2.2
362
slapos.recipe.template = 2.9
363
z3c.recipe.scripts = 1.0.1