Cross posting this in ruby-sig since this concerns ruby packaging and in devel since I have some more generic questions. Excuse me if I created unecessary noise. For those not familiar with the project, you'll find some info here [http://axilleas.me/tag/gsoc.html].

Let me start with the directory structure of these packages.
We have two locations:
1) where the main gitlab and gtlab-shell rails apps reside,
2) where git repositories and their satellites[0] are.

I have asked in #fedora-infra what FHS they use with the git repos in fedorahosted and we concluded that the rails apps would go to /usr/share/ and git repos and satellites to /usr/lib/. Now, when specifing %{_libdir} in a spec, it gets /usr/lib64/ on a x86_64 machine. I wouldn't want to install gitlab in different dirs when different arches, so for now I used /var/lib/ for that purpose. I guess I could excplicitly say /usr/lib/gitlab/ but anyway.

So the current structure is:

|-- /usr/share/gitlab/
|     |-- gitlab/
|     |-- gitlab-shell/
|
|-- /var/lib/gitlab/
|     |-- satellites/
|     |-- repositories/
|     |-- .ssh/authorized_keys
|
|-- /etc/gitlab/
|       |-- gitlab.yml
|       |-- shell.yml
|       |-- database.yml
|       |-- unicorn.rb

In /etc there will be configuration files with symlinks in the rails app dirs. What are your thoughts on the directory locations? Do you agree?


And now my questions about the specs.
FYI I have seen the katello.spec and took some info from there[1].

gitlab-shell.spec
-----------------

This is kinda finished.

SPEC: https://github.com/axilleas/fedora/blob/master/packages/gitlab-shell/gitlab-shell.spec


I tested the package and the appropriate user and group are created when install/upgrade but when uninstalling, the homedir doesn't get removed. I suspect this has something to do with useradd and protecting the homedir of the user?


gitlab.spec
-----------

This is a draft, I didn't test to install yet.

SPEC: https://github.com/axilleas/fedora/blob/master/packages/gitlab/gitlab.spec

## Ruby specific

- rake tasks

Many jobs, like the backup, initial database seed, etc. are done with rake tasks. How do we invoke them without getting in the app root dir every time? Is there some sort of mechanism for that?

- Are Gemfile and Gemfile.lock really needed for the app to work? If yes how can we avoid this? Using bundler_ext? If yes, how?

This is an interesting question as katello uses bundler_ext but I haven't yet understood how that works. Any tip would be appreciated. For now, in the test instance I set up, unicorn checks the Gemfile and if not found it doesn't spawn. Here is an entry in its log when I removed the Gemfile:

  I, [2013-09-19T21:00:13.056391 #18224]  INFO -- : Refreshing Gem list

and then an error occured.

## Generic

- symlink logs to /var/log/gitlab/

Not all logs' directory is configurable. GitLab uses the logs found in app_dir/log/ and displays them via its ui to the admin users. Should I symlink these logs to /var/log/ for ease of access?

- pids: move to /var/run/gitlab/ (?)

GitLab is practically running using unicorn and sidekiq. These two create each its own pid file in app_dir/tmp/pids/ by default. Luckily this is configurable via their configs or systemd services. Also unicorn creates a gitlab.socket which uses to speak with the app. If we use apache this isn't needed, but with nginx we can use it. I was thinking it could go under /var/run/gitlab/ too.

- how to support both databases. Is it feasible?

GitLab supports mysql(mariadb for us) and postgres. How do we deal with these cases inside a spec file? For now, I have added a comment about the postgres config and made mariadb the default one.

- ownership of directories

In upstream installation guide, gitlab and gitlab-shell reside in the same location that's why I decided to have them both under /usr/share/gitlab/. And my question is, which package owns /usr/share/gitlab/? Both?

Thanks for reading, it took me quite a few hours to compose :)

[0] satellites is a directory where it is stored information about the merge requests, forks, etc of each git repository. [1] https://github.com/axilleas/fedora/blob/master/packages/SPECS/katello.spec

--
FAS : axilleas
GPG : 0xABF99BE5
Blog: http://axilleas.me
--
devel mailing list
devel@lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/devel
Fedora Code of Conduct: http://fedoraproject.org/code-of-conduct

Reply via email to