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

17
#   for instance
18
    ../../component/coreutils/buildout.cfg
19
    ../../component/bash/buildout.cfg
20
    ../../component/grep/buildout.cfg
21
    ../../component/bzip2/buildout.cfg
22
    ../../component/curl/buildout.cfg
23
    ../../component/tar/buildout.cfg
24 25 26 27
    ../../component/gzip/buildout.cfg
    ../../component/dcron/buildout.cfg
    ../../component/logrotate/buildout.cfg

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

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

45 46 47
#   for instance
    instance.cfg

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

52 53 54
    slapos-cookbook
    eggs

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

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

66 67 68 69
[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
70 71 72 73 74

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

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

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


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


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

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

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

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
# 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 =
207
  PKG_CONFIG_PATH=${openssl:location}/lib/pkgconfig:${zlib:location}/lib/pkgconfig
208 209 210 211 212 213 214 215 216 217
  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
218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241

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


245 246 247 248 249 250 251 252 253
###############################
#   Trampoline for instance   #
###############################

# eggs for instance.cfg
[eggs]
recipe  = zc.recipe.egg
eggs    =
    plone.recipe.command
254
    cns.recipe.symlink
255
    collective.recipe.template
256 257 258 259 260 261


[instance.cfg]
recipe  = slapos.recipe.template
url     = ${:_profile_base_location_}/instance.cfg.in
output  = ${buildout:directory}/instance.cfg
262
md5sum  = b2af6c8df8039ca7415ce433b6091919
263

264 265
# macro: download a shell script and put it rendered into <software>/bin/
[binsh]
266 267 268 269 270 271 272
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

273
[watcher]
274
<= binsh
275
md5sum  = 90690e1351637f20ff2df57a6c3e85b4
276 277 278 279 280 281

[gitlab-export]
<= binsh
md5sum  = a7b32680e80f34276f0a32a5e22dad50


282 283 284 285 286 287 288 289 290 291 292

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

293 294 295 296 297 298 299 300
# 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
301
md5sum  = 61d1d04b9347b3168a1ad7676e4681ef
302

303 304
[gitconfig.in]
<= download-template
305
md5sum  = eb1230fee50067924ba89f4dc6e82fa9
306

307 308
[gitlab-parameters.cfg]
<= download-file
309
md5sum  = 9ff67261781092ae4d1096d65927b9f2
310

311 312
[gitlab-shell-config.yml.in]
<= download-template
313
md5sum  = 58c09b1e609f903e483a76fe9e57366c
314

315 316
[gitlab-unicorn-startup.in]
<= download-file
317
md5sum  = a9cb347f60aad3465932fd36cd4fe25d
318

319 320
[gitlab.yml.in]
<= download-template
321
md5sum  = fb52f20f04b3c0bacd6a767dac9d6483
322 323 324

[instance-gitlab.cfg.in]
<= download-file
325
md5sum  = b05fad928ffbb689b4415837525c62d1
326

327 328
[instance-gitlab-export.cfg.in]
<= download-file
329
md5sum  = 319d7dbe3ad9b260c1e292cfc0d13b11
330

331 332
[macrolib.cfg.in]
<= download-file
333
md5sum  = a56a44e96f65f5ed20211bb6a54279f4
334

335 336
[nginx-gitlab-http.conf.in]
<= download-template
337
md5sum  = 37ea159762fe25db2af6b4ac3870d1e3
338 339 340

[nginx.conf.in]
<= download-template
341
md5sum  = 1374f38ab6f295b850d45ea0019ec05d
342

343 344
[rack_attack.rb.in]
<= download-template
345
md5sum  = 7d0e6dc6b826f6df6b20d8574a29e2f8
346 347 348

[resque.yml.in]
<= download-template
349
md5sum  = 7c89a730889e3224548d9abe51a2d719
350 351 352

[smtp_settings.rb.in]
<= download-template
353
md5sum  = c67ea492e17f774d0e18f1217338a55f
354

355 356 357 358
[template-gitlab-resiliency-restore.sh.in]
<= download-template
md5sum  = 99c4101b1fcc9a099cf94d09c33d70d0

359 360
[unicorn.rb.in]
<= download-template
361
md5sum  = 83921db1835d9e81cbbe808631cc40a9
362

363 364

[versions]
365
cns.recipe.symlink = 0.2.3
366
docutils = 0.12
367
plone.recipe.command = 1.1
368
rubygemsrecipe  = 0.2.2
369
slapos.recipe.template = 2.9
370
z3c.recipe.scripts = 1.0.1