gitlab: Compile assets on instantiation and make sure DB is properly setup/migrated...
authorKirill Smelkov <kirr@nexedi.com>
Thu, 7 Jan 2016 20:04:23 +0000 (23:04 +0300)
committerKirill Smelkov <kirr@nexedi.com>
Sun, 17 Jan 2016 21:39:29 +0000 (00:39 +0300)
commit5a744de7a88cc135e7a7830906745d859c8974b0
treebecf68d022967aa77a9e2df6d470e5f4b888b381
parent481e4758ca361e8dcc8293cde9bab18ea3e7fffc
gitlab: Compile assets on instantiation and make sure DB is properly setup/migrated before unicorn runs

There are several actions that needs to be done on gitlab instance
upgrade:

    - we have to (re-)compile assets
    - we have to migrate DB

and also before the first run

    - we have to initialize DB

We can compile assets as part of instantiation process, but regarding
DB migration / setup - it is not currently possible to do that as part
of instantiation - for that operations we need PG & Redis to be already
running, but the first time slapos instantiates an SR it first prepares
all services, and only after instantiation is done, starts them all. There is
currently no way to hook into starting process, and run some scripts
after one service is started but before another service startup...

So the solution is: to perform such actions in delayed mode as part of
application - unicorn service - startup: it makes sure PG is running and
initializes it and does other actions which needs to be done to migrate
the DB. Only if/after they succeed the main application is started.

NOTE the comment about unicorn/gitlab startup slowness from the previous
    patch still holds true - so in order to get "all ok" after
    instantiation, it is required to perform the instantiation several
    times, because unicorn promise initially fails.

/cc @kazuhiko, @jerome
software/gitlab/gitlab-unicorn-startup.in [new file with mode: 0644]
software/gitlab/instance-gitlab.cfg.in
software/gitlab/instance.cfg.in
software/gitlab/software.cfg