gitlab-runner service: support graceful termination (#27222)
The current behavior was for gitlab-runner is to immediately terminate when there was a restart required. This can lead to aborted builds and is annoying to users. By enabling graceful mode gitlab-runner will wait for all builds to finish before terminating. The disadvantage is that a nixos-rebuild switch needs to wait till all jobs are done. Because of that it is not enabled by default.
This commit is contained in:
		
							parent
							
								
									469aeb9a7f
								
							
						
					
					
						commit
						c725924dfd
					
				@ -15,6 +15,23 @@ in
 | 
			
		||||
      description = "Verbatim config.toml to use";
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    gracefulTermination = mkOption {
 | 
			
		||||
      default = false;
 | 
			
		||||
      type = types.bool;
 | 
			
		||||
      description = ''
 | 
			
		||||
        Finish all remaining jobs before stopping, restarting or reconfiguring.
 | 
			
		||||
        If not set gitlab-runner will stop immediatly without waiting for jobs to finish,
 | 
			
		||||
        which will lead to failed builds.
 | 
			
		||||
      '';
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    gracefulTimeout = mkOption {
 | 
			
		||||
      default = "infinity";
 | 
			
		||||
      type = types.str;
 | 
			
		||||
      example = "5min 20s";
 | 
			
		||||
      description = ''Time to wait until a graceful shutdown is turned into a forceful one.'';
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    workDir = mkOption {
 | 
			
		||||
      default = "/var/lib/gitlab-runner";
 | 
			
		||||
      type = types.path;
 | 
			
		||||
@ -45,6 +62,11 @@ in
 | 
			
		||||
          --service gitlab-runner \
 | 
			
		||||
          --user gitlab-runner \
 | 
			
		||||
        '';
 | 
			
		||||
 | 
			
		||||
      } //  optionalAttrs (cfg.gracefulTermination) {
 | 
			
		||||
        TimeoutStopSec = "${cfg.gracefulTimeout}";
 | 
			
		||||
        KillSignal = "SIGQUIT";
 | 
			
		||||
        KillMode = "process";
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user