diff options
author | github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> | 2022-07-28 18:01:55 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-07-28 18:01:55 +0000 |
commit | 6a1cd17d72b7915cb5fcc8bdeb67b87e87accb2f (patch) | |
tree | abd095b0cdcc00caa3934c35e795b439ead13fc7 /nixos | |
parent | 437247fc43214bb3c33f2e8f612cdbc206236a97 (diff) | |
parent | 7b009ed85af01f70e41db18a54fa9402cde866ed (diff) | |
download | nixpkgs-6a1cd17d72b7915cb5fcc8bdeb67b87e87accb2f.tar nixpkgs-6a1cd17d72b7915cb5fcc8bdeb67b87e87accb2f.tar.gz nixpkgs-6a1cd17d72b7915cb5fcc8bdeb67b87e87accb2f.tar.bz2 nixpkgs-6a1cd17d72b7915cb5fcc8bdeb67b87e87accb2f.tar.lz nixpkgs-6a1cd17d72b7915cb5fcc8bdeb67b87e87accb2f.tar.xz nixpkgs-6a1cd17d72b7915cb5fcc8bdeb67b87e87accb2f.tar.zst nixpkgs-6a1cd17d72b7915cb5fcc8bdeb67b87e87accb2f.zip |
Merge staging-next into staging
Diffstat (limited to 'nixos')
-rw-r--r-- | nixos/modules/services/continuous-integration/gitlab-runner.nix | 117 |
1 files changed, 24 insertions, 93 deletions
diff --git a/nixos/modules/services/continuous-integration/gitlab-runner.nix b/nixos/modules/services/continuous-integration/gitlab-runner.nix index 85ac0fb2a89..03d3d2d16e3 100644 --- a/nixos/modules/services/continuous-integration/gitlab-runner.nix +++ b/nixos/modules/services/continuous-integration/gitlab-runner.nix @@ -22,6 +22,14 @@ let export CONFIG_FILE=${configPath} mkdir -p $(dirname ${configPath}) + touch ${configPath} + + # update global options + remarshal --if toml --of json ${configPath} \ + | jq -cM 'with_entries(select([.key] | inside(["runners"])))' \ + | jq -scM '.[0] + .[1]' - <(echo ${escapeShellArg (toJSON cfg.settings)}) \ + | remarshal --if json --of toml \ + | sponge ${configPath} # remove no longer existing services gitlab-runner verify --delete @@ -91,22 +99,6 @@ let --name "$NAME" && sleep 1 done - # update global options - remarshal --if toml --of json ${configPath} \ - | jq -cM ${escapeShellArg (concatStringsSep " | " [ - ".check_interval = ${toJSON cfg.checkInterval}" - ".concurrent = ${toJSON cfg.concurrent}" - ".sentry_dsn = ${toJSON cfg.sentryDSN}" - ".listen_address = ${toJSON cfg.prometheusListenAddress}" - ".session_server.listen_address = ${toJSON cfg.sessionServer.listenAddress}" - ".session_server.advertise_address = ${toJSON cfg.sessionServer.advertiseAddress}" - ".session_server.session_timeout = ${toJSON cfg.sessionServer.sessionTimeout}" - "del(.[] | nulls)" - "del(.session_server[] | nulls)" - ])} \ - | remarshal --if json --of toml \ - | sponge ${configPath} - # make config file readable by service chown -R --reference=$HOME $(dirname ${configPath}) ''); @@ -133,85 +125,15 @@ in for settings not covered by this module. ''; }; - checkInterval = mkOption { - type = types.int; - default = 0; - example = literalExpression "with lib; (length (attrNames config.services.gitlab-runner.services)) * 3"; - description = '' - Defines the interval length, in seconds, between new jobs check. - The default value is 3; - if set to 0 or lower, the default value will be used. - See <link xlink:href="https://docs.gitlab.com/runner/configuration/advanced-configuration.html#how-check_interval-works">runner documentation</link> for more information. - ''; - }; - concurrent = mkOption { - type = types.int; - default = 1; - example = literalExpression "config.nix.settings.max-jobs"; - description = '' - Limits how many jobs globally can be run concurrently. - The most upper limit of jobs using all defined runners. - 0 does not mean unlimited. - ''; - }; - sentryDSN = mkOption { - type = types.nullOr types.str; - default = null; - example = "https://public:private@host:port/1"; - description = '' - Data Source Name for tracking of all system level errors to Sentry. - ''; - }; - prometheusListenAddress = mkOption { - type = types.nullOr types.str; - default = null; - example = "localhost:8080"; - description = '' - Address (<host>:<port>) on which the Prometheus metrics HTTP server - should be listening. - ''; - }; - sessionServer = mkOption { + settings = mkOption { type = types.submodule { - options = { - listenAddress = mkOption { - type = types.nullOr types.str; - default = null; - example = "0.0.0.0:8093"; - description = '' - An internal URL to be used for the session server. - ''; - }; - advertiseAddress = mkOption { - type = types.nullOr types.str; - default = null; - example = "runner-host-name.tld:8093"; - description = '' - The URL that the Runner will expose to GitLab to be used - to access the session server. - Fallbacks to <option>listenAddress</option> if not defined. - ''; - }; - sessionTimeout = mkOption { - type = types.int; - default = 1800; - description = '' - How long in seconds the session can stay active after - the job completes (which will block the job from finishing). - ''; - }; - }; + freeformType = (pkgs.formats.json { }).type; }; default = { }; - example = literalExpression '' - { - listenAddress = "0.0.0.0:8093"; - } - ''; description = '' - The session server allows the user to interact with jobs - that the Runner is responsible for. A good example of this is the - <link xlink:href="https://docs.gitlab.com/ee/ci/interactive_web_terminal/index.html">interactive web terminal</link>. + Global gitlab-runner configuration. See + <link xlink:href="https://docs.gitlab.com/runner/configuration/advanced-configuration.html#the-global-section"/> + for supported values. ''; }; gracefulTermination = mkOption { @@ -535,8 +457,8 @@ in config = mkIf cfg.enable { warnings = (mapAttrsToList (n: v: "services.gitlab-runner.services.${n}.`registrationConfigFile` points to a file in Nix Store. You should use quoted absolute path to prevent this.") - (filterAttrs (n: v: isStorePath v.registrationConfigFile) cfg.services)) - ++ optional (cfg.configFile != null) "services.gitlab-runner.`configFile` is deprecated, please use services.gitlab-runner.`services`."; + (filterAttrs (n: v: isStorePath v.registrationConfigFile) cfg.services)); + environment.systemPackages = [ cfg.package ]; systemd.services.gitlab-runner = { description = "Gitlab Runner"; @@ -584,5 +506,14 @@ in (mkRenamedOptionModule [ "services" "gitlab-runner" "packages" ] [ "services" "gitlab-runner" "extraPackages" ] ) (mkRemovedOptionModule [ "services" "gitlab-runner" "configOptions" ] "Use services.gitlab-runner.services option instead" ) (mkRemovedOptionModule [ "services" "gitlab-runner" "workDir" ] "You should move contents of workDir (if any) to /var/lib/gitlab-runner" ) + + (mkRenamedOptionModule [ "services" "gitlab-runner" "checkInterval" ] [ "services" "gitlab-runner" "settings" "check_interval" ] ) + (mkRenamedOptionModule [ "services" "gitlab-runner" "concurrent" ] [ "services" "gitlab-runner" "settings" "concurrent" ] ) + (mkRenamedOptionModule [ "services" "gitlab-runner" "sentryDSN" ] [ "services" "gitlab-runner" "settings" "sentry_dsn" ] ) + (mkRenamedOptionModule [ "services" "gitlab-runner" "prometheusListenAddress" ] [ "services" "gitlab-runner" "settings" "listen_address" ] ) + + (mkRenamedOptionModule [ "services" "gitlab-runner" "sessionServer" "listenAddress" ] [ "services" "gitlab-runner" "settings" "session_server" "listen_address" ] ) + (mkRenamedOptionModule [ "services" "gitlab-runner" "sessionServer" "advertiseAddress" ] [ "services" "gitlab-runner" "settings" "session_server" "advertise_address" ] ) + (mkRenamedOptionModule [ "services" "gitlab-runner" "sessionServer" "sessionTimeout" ] [ "services" "gitlab-runner" "settings" "session_server" "session_timeout" ] ) ]; } |