fixup! gitlab: 8.0.5 -> 8.5.0, service improvements
Make the gitlab packages and components overrideable.
This commit is contained in:
parent
c2412bd700
commit
e9393bd426
@ -7,10 +7,10 @@ with lib;
|
|||||||
let
|
let
|
||||||
cfg = config.services.gitlab;
|
cfg = config.services.gitlab;
|
||||||
|
|
||||||
ruby = pkgs.gitlab.ruby;
|
ruby = cfg.packages.gitlab.ruby;
|
||||||
bundler = pkgs.bundler;
|
bundler = pkgs.bundler;
|
||||||
|
|
||||||
gemHome = "${pkgs.gitlab.env}/${ruby.gemPath}";
|
gemHome = "${cfg.packages.gitlab.env}/${ruby.gemPath}";
|
||||||
|
|
||||||
gitlabSocket = "${cfg.statePath}/tmp/sockets/gitlab.socket";
|
gitlabSocket = "${cfg.statePath}/tmp/sockets/gitlab.socket";
|
||||||
pathUrlQuote = url: replaceStrings ["/"] ["%2F"] url;
|
pathUrlQuote = url: replaceStrings ["/"] ["%2F"] url;
|
||||||
@ -91,7 +91,7 @@ let
|
|||||||
path = "${cfg.backupPath}";
|
path = "${cfg.backupPath}";
|
||||||
};
|
};
|
||||||
gitlab_shell = {
|
gitlab_shell = {
|
||||||
path = "${pkgs.gitlab-shell}";
|
path = "${cfg.packages.gitlab-shell}";
|
||||||
repos_path = "${cfg.statePath}/repositories";
|
repos_path = "${cfg.statePath}/repositories";
|
||||||
hooks_path = "${cfg.statePath}/shell/hooks";
|
hooks_path = "${cfg.statePath}/shell/hooks";
|
||||||
secret_file = "${cfg.statePath}/config/gitlab_shell_secret";
|
secret_file = "${cfg.statePath}/config/gitlab_shell_secret";
|
||||||
@ -110,13 +110,13 @@ let
|
|||||||
gitlabEnv = {
|
gitlabEnv = {
|
||||||
HOME = "${cfg.statePath}/home";
|
HOME = "${cfg.statePath}/home";
|
||||||
GEM_HOME = gemHome;
|
GEM_HOME = gemHome;
|
||||||
BUNDLE_GEMFILE = "${pkgs.gitlab}/share/gitlab/Gemfile";
|
BUNDLE_GEMFILE = "${cfg.packages.gitlab}/share/gitlab/Gemfile";
|
||||||
UNICORN_PATH = "${cfg.statePath}/";
|
UNICORN_PATH = "${cfg.statePath}/";
|
||||||
GITLAB_PATH = "${pkgs.gitlab}/share/gitlab/";
|
GITLAB_PATH = "${cfg.packages.gitlab}/share/gitlab/";
|
||||||
GITLAB_STATE_PATH = "${cfg.statePath}";
|
GITLAB_STATE_PATH = "${cfg.statePath}";
|
||||||
GITLAB_UPLOADS_PATH = "${cfg.statePath}/uploads";
|
GITLAB_UPLOADS_PATH = "${cfg.statePath}/uploads";
|
||||||
GITLAB_LOG_PATH = "${cfg.statePath}/log";
|
GITLAB_LOG_PATH = "${cfg.statePath}/log";
|
||||||
GITLAB_SHELL_PATH = "${pkgs.gitlab-shell}";
|
GITLAB_SHELL_PATH = "${cfg.packages.gitlab-shell}";
|
||||||
GITLAB_SHELL_CONFIG_PATH = "${cfg.statePath}/shell/config.yml";
|
GITLAB_SHELL_CONFIG_PATH = "${cfg.statePath}/shell/config.yml";
|
||||||
GITLAB_SHELL_SECRET_PATH = "${cfg.statePath}/config/gitlab_shell_secret";
|
GITLAB_SHELL_SECRET_PATH = "${cfg.statePath}/config/gitlab_shell_secret";
|
||||||
GITLAB_SHELL_HOOKS_PATH = "${cfg.statePath}/shell/hooks";
|
GITLAB_SHELL_HOOKS_PATH = "${cfg.statePath}/shell/hooks";
|
||||||
@ -127,7 +127,7 @@ let
|
|||||||
|
|
||||||
gitlab-runner = pkgs.stdenv.mkDerivation rec {
|
gitlab-runner = pkgs.stdenv.mkDerivation rec {
|
||||||
name = "gitlab-runner";
|
name = "gitlab-runner";
|
||||||
buildInputs = with pkgs; [ gitlab bundler makeWrapper ];
|
buildInputs = [ cfg.packages.gitlab bundler pkgs.makeWrapper ];
|
||||||
phases = "installPhase fixupPhase";
|
phases = "installPhase fixupPhase";
|
||||||
buildPhase = "";
|
buildPhase = "";
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
@ -136,7 +136,7 @@ let
|
|||||||
${concatStrings (mapAttrsToList (name: value: "--set ${name} '\"${value}\"' ") gitlabEnv)} \
|
${concatStrings (mapAttrsToList (name: value: "--set ${name} '\"${value}\"' ") gitlabEnv)} \
|
||||||
--set GITLAB_CONFIG_PATH '"${cfg.statePath}/config"' \
|
--set GITLAB_CONFIG_PATH '"${cfg.statePath}/config"' \
|
||||||
--set PATH '"${pkgs.nodejs}/bin:${pkgs.gzip}/bin:${config.services.postgresql.package}/bin:$PATH"' \
|
--set PATH '"${pkgs.nodejs}/bin:${pkgs.gzip}/bin:${config.services.postgresql.package}/bin:$PATH"' \
|
||||||
--set RAKEOPT '"-f ${pkgs.gitlab}/share/gitlab/Rakefile"'
|
--set RAKEOPT '"-f ${cfg.packages.gitlab}/share/gitlab/Rakefile"'
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -152,6 +152,24 @@ in {
|
|||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
packages.gitlab = mkOption {
|
||||||
|
type = types.package;
|
||||||
|
default = pkgs.gitlab;
|
||||||
|
description = "Reference to the gitlab package";
|
||||||
|
};
|
||||||
|
|
||||||
|
packages.gitlab-shell = mkOption {
|
||||||
|
type = types.package;
|
||||||
|
default = pkgs.gitlab-shell;
|
||||||
|
description = "Reference to the gitlab-shell package";
|
||||||
|
};
|
||||||
|
|
||||||
|
packages.gitlab-workhorse = mkOption {
|
||||||
|
type = types.package;
|
||||||
|
default = pkgs.gitlab-workhorse;
|
||||||
|
description = "Reference to the gitlab-workhorse package";
|
||||||
|
};
|
||||||
|
|
||||||
statePath = mkOption {
|
statePath = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
default = "/var/gitlab/state";
|
default = "/var/gitlab/state";
|
||||||
@ -263,7 +281,7 @@ in {
|
|||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
|
||||||
environment.systemPackages = [ pkgs.git gitlab-runner pkgs.gitlab-shell ];
|
environment.systemPackages = [ pkgs.git gitlab-runner cfg.packages.gitlab-shell ];
|
||||||
|
|
||||||
assertions = [
|
assertions = [
|
||||||
{ assertion = cfg.databasePassword != "";
|
{ assertion = cfg.databasePassword != "";
|
||||||
@ -309,7 +327,7 @@ in {
|
|||||||
User = cfg.user;
|
User = cfg.user;
|
||||||
Group = cfg.group;
|
Group = cfg.group;
|
||||||
TimeoutSec = "300";
|
TimeoutSec = "300";
|
||||||
WorkingDirectory = "${pkgs.gitlab}/share/gitlab";
|
WorkingDirectory = "${cfg.packages.gitlab}/share/gitlab";
|
||||||
ExecStart="${bundler}/bin/bundle exec \"sidekiq -q post_receive -q mailer -q system_hook -q project_web_hook -q gitlab_shell -q common -q default -e production -P ${cfg.statePath}/tmp/sidekiq.pid\"";
|
ExecStart="${bundler}/bin/bundle exec \"sidekiq -q post_receive -q mailer -q system_hook -q project_web_hook -q gitlab_shell -q common -q default -e production -P ${cfg.statePath}/tmp/sidekiq.pid\"";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@ -334,12 +352,12 @@ in {
|
|||||||
Group = cfg.group;
|
Group = cfg.group;
|
||||||
TimeoutSec = "300";
|
TimeoutSec = "300";
|
||||||
ExecStart =
|
ExecStart =
|
||||||
"${pkgs.gitlab-workhorse}/bin/gitlab-workhorse "
|
"${cfg.packages.gitlab-workhorse}/bin/gitlab-workhorse "
|
||||||
+ "-listenUmask 0 "
|
+ "-listenUmask 0 "
|
||||||
+ "-listenNetwork unix "
|
+ "-listenNetwork unix "
|
||||||
+ "-listenAddr /run/gitlab/gitlab-workhorse.socket "
|
+ "-listenAddr /run/gitlab/gitlab-workhorse.socket "
|
||||||
+ "-authSocket ${gitlabSocket} "
|
+ "-authSocket ${gitlabSocket} "
|
||||||
+ "-documentRoot ${pkgs.gitlab}/share/gitlab/public";
|
+ "-documentRoot ${cfg.packages.gitlab}/share/gitlab/public";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -384,9 +402,9 @@ in {
|
|||||||
chown -R ${cfg.user}:${cfg.group} ${gitlabEnv.HOME}/
|
chown -R ${cfg.user}:${cfg.group} ${gitlabEnv.HOME}/
|
||||||
chmod -R u+rwX,go-rwx+X ${gitlabEnv.HOME}/
|
chmod -R u+rwX,go-rwx+X ${gitlabEnv.HOME}/
|
||||||
|
|
||||||
cp -rf ${pkgs.gitlab}/share/gitlab/config.dist/* ${cfg.statePath}/config
|
cp -rf ${cfg.packages.gitlab}/share/gitlab/config.dist/* ${cfg.statePath}/config
|
||||||
ln -sf ${cfg.statePath}/config /run/gitlab/config
|
ln -sf ${cfg.statePath}/config /run/gitlab/config
|
||||||
cp ${pkgs.gitlab}/share/gitlab/VERSION ${cfg.statePath}/VERSION
|
cp ${cfg.packages.gitlab}/share/gitlab/VERSION ${cfg.statePath}/VERSION
|
||||||
|
|
||||||
# JSON is a subset of YAML
|
# JSON is a subset of YAML
|
||||||
ln -fs ${pkgs.writeText "gitlab.yml" (builtins.toJSON gitlabConfig)} ${cfg.statePath}/config/gitlab.yml
|
ln -fs ${pkgs.writeText "gitlab.yml" (builtins.toJSON gitlabConfig)} ${cfg.statePath}/config/gitlab.yml
|
||||||
@ -398,8 +416,8 @@ in {
|
|||||||
|
|
||||||
# Install the shell required to push repositories
|
# Install the shell required to push repositories
|
||||||
ln -fs ${pkgs.writeText "config.yml" gitlabShellYml} "$GITLAB_SHELL_CONFIG_PATH"
|
ln -fs ${pkgs.writeText "config.yml" gitlabShellYml} "$GITLAB_SHELL_CONFIG_PATH"
|
||||||
ln -fs ${pkgs.gitlab-shell}/hooks "$GITLAB_SHELL_HOOKS_PATH"
|
ln -fs ${cfg.packages.gitlab-shell}/hooks "$GITLAB_SHELL_HOOKS_PATH"
|
||||||
${pkgs.gitlab-shell}/bin/install
|
${cfg.packages.gitlab-shell}/bin/install
|
||||||
|
|
||||||
if [ "${cfg.databaseHost}" = "127.0.0.1" ]; then
|
if [ "${cfg.databaseHost}" = "127.0.0.1" ]; then
|
||||||
if ! test -e "${cfg.statePath}/db-created"; then
|
if ! test -e "${cfg.statePath}/db-created"; then
|
||||||
@ -429,7 +447,7 @@ in {
|
|||||||
User = cfg.user;
|
User = cfg.user;
|
||||||
Group = cfg.group;
|
Group = cfg.group;
|
||||||
TimeoutSec = "300";
|
TimeoutSec = "300";
|
||||||
WorkingDirectory = "${pkgs.gitlab}/share/gitlab";
|
WorkingDirectory = "${cfg.packages.gitlab}/share/gitlab";
|
||||||
ExecStart="${bundler}/bin/bundle exec \"unicorn -c ${cfg.statePath}/config/unicorn.rb -E production\"";
|
ExecStart="${bundler}/bin/bundle exec \"unicorn -c ${cfg.statePath}/config/unicorn.rb -E production\"";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user