software.cfg 6.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 18
    ../../component/bash/buildout.cfg
    ../../component/curl/buildout.cfg
19 20 21 22
    ../../component/gzip/buildout.cfg
    ../../component/dcron/buildout.cfg
    ../../component/logrotate/buildout.cfg

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

    gitlab-shell/vendor
    gitlab/vendor/bundle
    gitlab-workhorse

38 39 40 41 42 43
#   for instance
    instance.cfg

    slapos-cookbook
    eggs

44 45
    bash
    curl
46
    watcher-sigkill
47 48 49 50
    gzip
    dcron-output
    logrotate

51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104

############################
#   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
105 106
# 2.6.8 + NXD patches
revision = v2.6.8-2-g216d7e15fe06917198891a895f762ba84fdcc4d4
107 108 109 110 111
location = ${buildout:parts-directory}/gitlab-shell

[gitlab-workhorse-repository]
<= git-repository
repository = https://gitlab.com/gitlab-org/gitlab-workhorse.git
112 113
# 0.4.X + NXD patches
revision = 0.4.1-10-g0d0bd209eea7441a3b4202c2e00a989cf340ee86
114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158
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


159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175
###############################
#   Trampoline for instance   #
###############################

# eggs for instance.cfg
[eggs]
recipe  = zc.recipe.egg
eggs    =
    plone.recipe.command


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

176 177 178 179 180 181 182 183 184
[watcher-sigkill]
recipe  = slapos.recipe.template:jinja2
template= ${:_profile_base_location_}/${:_buildout_section_name_}.in
rendered= ${buildout:bin-directory}/${:_buildout_section_name_}
mode    = 0755
# md5sum = TODO
context =
    section bash    bash

185 186 187 188 189 190 191 192 193 194 195

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

196 197 198 199 200 201 202 203 204 205 206 207 208 209
# 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
# md5sum = TODO

[database.yml.in]
<= download-template
# md5sum = TODO

210 211 212 213
[gitconfig.in]
<= download-template
# md5sum = TODO

214 215 216 217
[gitlab-parameters.cfg]
<= download-file
# md5sum = TODO

218 219 220 221
[gitlab-shell-config.yml.in]
<= download-template
# md5sum = TODO

222 223 224 225
[gitlab-unicorn-startup.in]
<= download-file
# md5sum = TODO

226 227 228
[gitlab.yml.in]
<= download-template
# md5sum = TODO
229 230 231 232

[instance-gitlab.cfg.in]
<= download-file
# md5sum = TODO
233

234 235 236 237
[macrolib.cfg.in]
<= download-file
# md5sum = TODO

238 239 240 241 242 243 244 245
[nginx-gitlab-http.conf.in]
<= download-template
# md5sum = TODO

[nginx.conf.in]
<= download-template
# md5sum = TODO

246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261
[rack_attack.rb.in]
<= download-template
# md5sum = TODO

[resque.yml.in]
<= download-template
# md5sum = TODO

[smtp_settings.rb.in]
<= download-template
# md5sum = TODO

[unicorn.rb.in]
<= download-template
# md5sum = TODO

262 263

[versions]
264
plone.recipe.command = 1.1
265
rubygemsrecipe  = 0.2.2
266
slapos.recipe.template = 2.9