fun_ci 2.1.1-aarch64-linux → 2.3.0-aarch64-linux
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +95 -0
- data/README.md +36 -6
- data/lib/fun_ci/agent/cancel_command.rb +52 -0
- data/lib/fun_ci/agent/command_support.rb +7 -0
- data/lib/fun_ci/agent/commands.rb +4 -1
- data/lib/fun_ci/agent/due_in.rb +21 -0
- data/lib/fun_ci/agent/events_command.rb +14 -7
- data/lib/fun_ci/agent/job_events.rb +56 -0
- data/lib/fun_ci/agent/job_json.rb +25 -0
- data/lib/fun_ci/agent/job_report.rb +89 -0
- data/lib/fun_ci/agent/job_why.rb +59 -0
- data/lib/fun_ci/agent/job_why_json.rb +31 -0
- data/lib/fun_ci/agent/job_why_text.rb +59 -0
- data/lib/fun_ci/agent/jobs_command.rb +43 -0
- data/lib/fun_ci/agent/jobs_text.rb +55 -0
- data/lib/fun_ci/agent/live_pipeline.rb +14 -6
- data/lib/fun_ci/agent/options.rb +3 -3
- data/lib/fun_ci/agent/output.rb +14 -2
- data/lib/fun_ci/agent/snapshots.rb +20 -1
- data/lib/fun_ci/agent/span.rb +24 -0
- data/lib/fun_ci/agent/stage_summary.rb +10 -6
- data/lib/fun_ci/agent/starts_in.rb +14 -0
- data/lib/fun_ci/agent/status_command.rb +3 -2
- data/lib/fun_ci/agent/status_json.rb +1 -1
- data/lib/fun_ci/agent/status_text.rb +32 -6
- data/lib/fun_ci/agent/trunk_reading.rb +2 -1
- data/lib/fun_ci/agent/wait_command.rb +2 -1
- data/lib/fun_ci/agent/why_command.rb +6 -2
- data/lib/fun_ci/cli.rb +1 -1
- data/lib/fun_ci/cli_help.rb +4 -1
- data/lib/fun_ci/console/board_data.rb +26 -13
- data/lib/fun_ci/console/console_state.rb +12 -6
- data/lib/fun_ci/console/job_message.rb +39 -0
- data/lib/fun_ci/console/job_order.rb +23 -0
- data/lib/fun_ci/console/job_rows.rb +21 -0
- data/lib/fun_ci/console/key_handler.rb +35 -14
- data/lib/fun_ci/console/paging.rb +26 -0
- data/lib/fun_ci/console/view.rb +18 -9
- data/lib/fun_ci/evidence/settings.rb +15 -8
- data/lib/fun_ci/evidence/settings_check.rb +14 -3
- data/lib/fun_ci/jobs/due.rb +34 -0
- data/lib/fun_ci/jobs/due_jobs.rb +50 -0
- data/lib/fun_ci/jobs/folders.rb +50 -0
- data/lib/fun_ci/jobs/job.rb +31 -0
- data/lib/fun_ci/jobs/job_fork.rb +52 -0
- data/lib/fun_ci/jobs/job_run.rb +104 -0
- data/lib/fun_ci/jobs/locks.rb +30 -0
- data/lib/fun_ci/jobs/schedule.rb +25 -0
- data/lib/fun_ci/jobs/site.rb +17 -0
- data/lib/fun_ci/jobs/standings.rb +50 -0
- data/lib/fun_ci/jobs/state.rb +27 -0
- data/lib/fun_ci/jobs/wall_clock_wait.rb +29 -0
- data/lib/fun_ci/persistence/active_jobs.rb +60 -0
- data/lib/fun_ci/persistence/database.rb +14 -4
- data/lib/fun_ci/persistence/job_recorder.rb +47 -0
- data/lib/fun_ci/persistence/job_runs.rb +80 -0
- data/lib/fun_ci/persistence/pipeline_run.rb +2 -1
- data/lib/fun_ci/persistence/raw_outputs.rb +3 -0
- data/lib/fun_ci/pipeline/budgets.rb +9 -0
- data/lib/fun_ci/pipeline/pipeline_forker.rb +42 -10
- data/lib/fun_ci/pipeline/priorities.rb +23 -0
- data/lib/fun_ci/pipeline/process_runner.rb +18 -6
- data/lib/fun_ci/pipeline/progress_reporter.rb +4 -0
- data/lib/fun_ci/pipeline/run_canceller.rb +24 -0
- data/lib/fun_ci/pipeline/slot.rb +12 -1
- data/lib/fun_ci/pipeline/slot_run.rb +19 -4
- data/lib/fun_ci/pipeline/stage_execution.rb +9 -4
- data/lib/fun_ci/pipeline/trigger.rb +17 -6
- data/lib/fun_ci/pipeline/trigger_command.rb +12 -2
- data/lib/fun_ci/pipeline/trigger_params.rb +20 -9
- data/lib/fun_ci/pipeline/worktree_pool.rb +2 -2
- data/lib/fun_ci/pipeline/worktree_prune.rb +8 -6
- data/lib/fun_ci/pipeline/worktrees.rb +11 -5
- data/lib/fun_ci/setup/agent_instructions.rb +24 -5
- data/lib/fun_ci/setup/commands.rb +3 -1
- data/lib/fun_ci/setup/hook_script.rb +9 -4
- data/lib/fun_ci/setup/hook_writer.rb +13 -5
- data/lib/fun_ci/setup/installed_hooks.rb +45 -0
- data/lib/fun_ci/setup/installer.rb +3 -2
- data/lib/fun_ci/setup/lfs_hook.rb +50 -0
- data/lib/fun_ci/setup/project_config.rb +13 -1
- data/lib/fun_ci/setup/settings.rb +40 -11
- data/lib/fun_ci/setup/setup_checker.rb +20 -3
- data/lib/fun_ci/trunk/shown.rb +7 -4
- data/lib/fun_ci/version.rb +1 -1
- data/libexec/fun-ci-renderer +0 -0
- metadata +36 -1
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative "hook_script"
|
|
4
|
+
|
|
5
|
+
module FunCi
|
|
6
|
+
module Setup
|
|
7
|
+
# git-lfs's own post-commit and pre-push hooks, as `git lfs install`
|
|
8
|
+
# writes them, and the hook fun-ci writes in their place, which runs
|
|
9
|
+
# fun-ci's, then git-lfs's. A push reads its ref list from git once, so
|
|
10
|
+
# the pre-push hook keeps it in a file and gives it to both.
|
|
11
|
+
module LfsHook
|
|
12
|
+
GUARD = %r{\Acommand -v git-lfs >/dev/null 2>&1 \|\| \{.*; exit 2; \}\z}
|
|
13
|
+
MISSING = %(command -v git-lfs >/dev/null 2>&1 || { echo "This repository is configured for Git LFS ) +
|
|
14
|
+
%(but 'git-lfs' was not found on your path." >&2; exit 2; })
|
|
15
|
+
|
|
16
|
+
RUN = {
|
|
17
|
+
"post-commit" => "if #{HookScript::INSTALLED}; then fun_ci; else #{HookScript::NOT_INSTALLED}; fi\n",
|
|
18
|
+
"pre-push" => %(if #{HookScript::INSTALLED}; then fun_ci < "$refs" || exit 1; ) +
|
|
19
|
+
"else #{HookScript::NOT_INSTALLED}; fi\n"
|
|
20
|
+
}.freeze
|
|
21
|
+
|
|
22
|
+
KEEP_REFS = { "post-commit" => "", "pre-push" => <<~SH }.freeze
|
|
23
|
+
refs=$(mktemp) || exit 1
|
|
24
|
+
trap 'rm -f "$refs"' EXIT
|
|
25
|
+
cat > "$refs"
|
|
26
|
+
SH
|
|
27
|
+
|
|
28
|
+
FUN_CI = { "post-commit" => HookScript::POST_COMMIT, "pre-push" => "#{HookScript::PRE_PUSH_WAITS}return $status\n" }
|
|
29
|
+
.freeze
|
|
30
|
+
LFS_INPUT = { "post-commit" => "", "pre-push" => %( < "$refs") }.freeze
|
|
31
|
+
|
|
32
|
+
# Whether `script` is the hook `git lfs install` writes for `hook_type`
|
|
33
|
+
# and nothing more.
|
|
34
|
+
def self.stock?(script, hook_type)
|
|
35
|
+
lines = script.lines(chomp: true).reject { |line| line.strip.empty? }
|
|
36
|
+
lines.size == 3 && lines.first == "#!/bin/sh" && GUARD.match?(lines[1]) && lines.last == call(hook_type)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def self.runs_lfs?(script, hook_type) = script.include?(call(hook_type))
|
|
40
|
+
|
|
41
|
+
def self.script(hook_type)
|
|
42
|
+
"#!/bin/sh\n#{HookScript::MARKER}\n# fun-ci's #{hook_type} hook, then git-lfs's, which it replaced.\n" \
|
|
43
|
+
"#{KEEP_REFS.fetch(hook_type)}fun_ci() {\n#{FUN_CI.fetch(hook_type)}}\n" \
|
|
44
|
+
"#{RUN.fetch(hook_type)}#{MISSING}\n#{call(hook_type)}#{LFS_INPUT.fetch(hook_type)}\n"
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def self.call(hook_type) = %(git lfs #{hook_type} "$@")
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
@@ -4,6 +4,7 @@ require "shellwords"
|
|
|
4
4
|
require_relative "settings"
|
|
5
5
|
require_relative "../evidence/settings"
|
|
6
6
|
require_relative "../evidence/start"
|
|
7
|
+
require_relative "../jobs/folders"
|
|
7
8
|
|
|
8
9
|
module FunCi
|
|
9
10
|
module Setup
|
|
@@ -19,12 +20,17 @@ module FunCi
|
|
|
19
20
|
Dir.exist?(@fun_ci_dir)
|
|
20
21
|
end
|
|
21
22
|
|
|
23
|
+
# What stops a pipeline: no .fun-ci/, or a stage script it can't run.
|
|
22
24
|
def validate
|
|
23
25
|
return ["No .fun-ci/ folder found in #{@project_root}"] unless folder_exists?
|
|
24
26
|
|
|
25
|
-
REQUIRED_SCRIPTS.flat_map { |script| script_errors(script) }
|
|
27
|
+
REQUIRED_SCRIPTS.flat_map { |script| script_errors(script) }
|
|
26
28
|
end
|
|
27
29
|
|
|
30
|
+
# Mistakes in .fun-ci/config, which never stop a pipeline: the setting
|
|
31
|
+
# takes its default instead.
|
|
32
|
+
def settings_errors = settings.errors
|
|
33
|
+
|
|
28
34
|
# Mistakes in the `evidence` key, which `fun-ci check` reports but which
|
|
29
35
|
# never stop a pipeline: the entry with the mistake is left out instead.
|
|
30
36
|
def evidence_errors = Evidence::Settings.load(File.join(@fun_ci_dir, "config")).errors(root: @project_root)
|
|
@@ -37,9 +43,15 @@ module FunCi
|
|
|
37
43
|
# may hold, such as JSON logs.
|
|
38
44
|
def any_project_presets = preset_candidates.reject(&:because).map { |found| found.preset.name }
|
|
39
45
|
|
|
46
|
+
# The daily and weekly jobs that can run, and why any other can't
|
|
47
|
+
# (design.md, Daily and weekly jobs); neither stops a pipeline.
|
|
48
|
+
def jobs = Jobs::Folders.new(@project_root).jobs
|
|
49
|
+
def job_errors = Jobs::Folders.new(@project_root).errors
|
|
50
|
+
|
|
40
51
|
def worktree_slots = settings.worktree_slots
|
|
41
52
|
def trunk = settings.trunk
|
|
42
53
|
def trunk_fetch = settings.trunk_fetch
|
|
54
|
+
def job_spacing = settings.job_spacing
|
|
43
55
|
|
|
44
56
|
def script_path(stage)
|
|
45
57
|
File.join(@fun_ci_dir, "#{stage}.sh")
|
|
@@ -6,7 +6,8 @@ module FunCi
|
|
|
6
6
|
module Setup
|
|
7
7
|
# .fun-ci/config: settings for this machine's runs, as YAML. Each one left
|
|
8
8
|
# out takes its default; one that is wrong is reported and the default used,
|
|
9
|
-
# as are all of them when the file
|
|
9
|
+
# as are all of them when the file can't be read as YAML. Anchors and
|
|
10
|
+
# aliases are YAML, so they are read.
|
|
10
11
|
class Settings
|
|
11
12
|
DEFAULTS = { "worktree_slots" => 2 }.freeze
|
|
12
13
|
FETCH_EVERY = 300
|
|
@@ -20,7 +21,7 @@ module FunCi
|
|
|
20
21
|
@text = text
|
|
21
22
|
end
|
|
22
23
|
|
|
23
|
-
def worktree_slots =
|
|
24
|
+
def worktree_slots = slots || DEFAULTS.fetch("worktree_slots")
|
|
24
25
|
|
|
25
26
|
# The trunk's name, or nil when none is given or it is no name. A mistake
|
|
26
27
|
# in the trunk settings never stops a pipeline, so none is among `errors`.
|
|
@@ -37,22 +38,51 @@ module FunCi
|
|
|
37
38
|
seconds(given) || FETCH_EVERY
|
|
38
39
|
end
|
|
39
40
|
|
|
40
|
-
|
|
41
|
-
|
|
41
|
+
# Seconds between the starts of the jobs a commit starts, 0 for all at
|
|
42
|
+
# once (Jobs::Schedule); nil when none is given, or none it can read,
|
|
43
|
+
# and the jobs share the day evenly (Jobs::DueJobs).
|
|
44
|
+
def job_spacing = seconds(setting("job_spacing"))
|
|
42
45
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
[".fun-ci/config: worktree_slots must be a whole number above 0, not #{slots.inspect}"]
|
|
46
|
+
def errors
|
|
47
|
+
setting_errors
|
|
47
48
|
rescue Psych::SyntaxError => e
|
|
48
49
|
[".fun-ci/config is not YAML: #{e.problem} (line #{e.line})"]
|
|
50
|
+
rescue Psych::DisallowedClass => e
|
|
51
|
+
[".fun-ci/config can't be read: #{e.message} (quote a value such as a date to read it as text)"]
|
|
52
|
+
rescue Psych::Exception => e
|
|
53
|
+
[".fun-ci/config can't be read: #{e.message}"]
|
|
49
54
|
end
|
|
50
55
|
|
|
51
56
|
private
|
|
52
57
|
|
|
58
|
+
def setting_errors
|
|
59
|
+
return [".fun-ci/config must be a mapping such as `worktree_slots: 2`"] unless raw.is_a?(Hash)
|
|
60
|
+
|
|
61
|
+
[slots_error, spacing_error].compact
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
# The slots the file asks for, when that is a whole number above 0.
|
|
65
|
+
def slots
|
|
66
|
+
given = setting("worktree_slots")
|
|
67
|
+
given if given.is_a?(Integer) && given.positive?
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def slots_error
|
|
71
|
+
given = setting("worktree_slots")
|
|
72
|
+
".fun-ci/config: worktree_slots must be a whole number above 0, not #{given.inspect}" unless given.nil? || slots
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
# Unlike the trunk's, since taking turns is the jobs' whole point (AT-13.28).
|
|
76
|
+
def spacing_error
|
|
77
|
+
given = setting("job_spacing")
|
|
78
|
+
return nil if given.nil? || seconds(given)
|
|
79
|
+
|
|
80
|
+
".fun-ci/config: job_spacing must be seconds, or a number with s, m or h, not #{given.inspect}"
|
|
81
|
+
end
|
|
82
|
+
|
|
53
83
|
def setting(key)
|
|
54
84
|
raw.is_a?(Hash) ? raw[key] : nil
|
|
55
|
-
rescue Psych::
|
|
85
|
+
rescue Psych::Exception
|
|
56
86
|
nil
|
|
57
87
|
end
|
|
58
88
|
|
|
@@ -61,8 +91,7 @@ module FunCi
|
|
|
61
91
|
match && (match[1].to_i * UNITS.fetch(match[2]))
|
|
62
92
|
end
|
|
63
93
|
|
|
64
|
-
def raw = (@text && YAML.safe_load(@text)) || {}
|
|
65
|
-
def values = DEFAULTS.merge(raw)
|
|
94
|
+
def raw = (@text && YAML.safe_load(@text, aliases: true)) || {}
|
|
66
95
|
end
|
|
67
96
|
end
|
|
68
97
|
end
|
|
@@ -2,13 +2,22 @@
|
|
|
2
2
|
|
|
3
3
|
require_relative "project_config"
|
|
4
4
|
require_relative "legacy_hooks"
|
|
5
|
+
require_relative "installed_hooks"
|
|
5
6
|
require_relative "trunk_report"
|
|
6
7
|
|
|
7
8
|
module FunCi
|
|
8
9
|
module Setup
|
|
9
10
|
class SetupChecker
|
|
10
|
-
|
|
11
|
-
|
|
11
|
+
# The hooks it warns of: fun-ci 1.x's, and any in `hooks_dir` that
|
|
12
|
+
# doesn't run fun-ci.
|
|
13
|
+
Hooks = Data.define(:sources) do
|
|
14
|
+
def warnings = sources.flat_map(&:warnings)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# hooks_dir: where git runs the project's hooks from; nil outside a git repository.
|
|
18
|
+
def self.run(project_root:, stdout: $stdout, hooks_dir: nil)
|
|
19
|
+
hooks = Hooks.new([LegacyHooks.new(project_root), InstalledHooks.new(hooks_dir)])
|
|
20
|
+
new(config: ProjectConfig.new(project_root), hooks: hooks, stdout: stdout,
|
|
12
21
|
trunk: TrunkReport.new(project_root)).run
|
|
13
22
|
end
|
|
14
23
|
|
|
@@ -22,20 +31,28 @@ module FunCi
|
|
|
22
31
|
|
|
23
32
|
# Warnings are printed but don't fail the check.
|
|
24
33
|
def run
|
|
25
|
-
errors =
|
|
34
|
+
errors = problems
|
|
26
35
|
@stdout.puts(errors.empty? ? "All OK. The project is configured." : errors)
|
|
27
36
|
@stdout.puts(@trunk.lines)
|
|
28
37
|
list_presets
|
|
38
|
+
list_jobs
|
|
29
39
|
@hooks.warnings.each { |warning| @stdout.puts "Warning: #{warning}" }
|
|
30
40
|
errors.empty? ? 0 : 1
|
|
31
41
|
end
|
|
32
42
|
|
|
33
43
|
private
|
|
34
44
|
|
|
45
|
+
def problems = @config.validate + @config.settings_errors + @config.evidence_errors + @config.job_errors
|
|
46
|
+
|
|
35
47
|
def list_presets
|
|
36
48
|
lists = { "this project" => @config.presets, "any project's output" => @config.any_project_presets }
|
|
37
49
|
lists.each { |what, names| @stdout.puts "Evidence presets for #{what}: #{names.join(", ")}" if names.any? }
|
|
38
50
|
end
|
|
51
|
+
|
|
52
|
+
def list_jobs
|
|
53
|
+
jobs = @config.jobs
|
|
54
|
+
@stdout.puts "Jobs: #{jobs.map { |job| "#{job.name} (#{job.cadence})" }.join(", ")}" if jobs.any?
|
|
55
|
+
end
|
|
39
56
|
end
|
|
40
57
|
end
|
|
41
58
|
end
|
data/lib/fun_ci/trunk/shown.rb
CHANGED
|
@@ -8,8 +8,9 @@ module FunCi
|
|
|
8
8
|
# rather than stored, how many seconds ago its trunk tip was seen (nil
|
|
9
9
|
# when it had none), the project's last fetch (a LastFetch, nil if none), and
|
|
10
10
|
# the SHA the trunk has moved to since, if it has.
|
|
11
|
-
# A run whose check hasn't been recorded is checking
|
|
12
|
-
# merge are past their time, and then
|
|
11
|
+
# A run whose check hasn't been recorded is checking while its foreground
|
|
12
|
+
# stages run and until its fetch and merge are past their time, and then
|
|
13
|
+
# unknown.
|
|
13
14
|
Shown = Data.define(:state, :check, :age, :fetch, :moved_to)
|
|
14
15
|
|
|
15
16
|
class Shown
|
|
@@ -21,8 +22,10 @@ module FunCi
|
|
|
21
22
|
fetch: fetch, moved_to: moved_to)
|
|
22
23
|
end
|
|
23
24
|
|
|
24
|
-
|
|
25
|
-
|
|
25
|
+
# stages_running: whether the run's foreground stages, which the check
|
|
26
|
+
# is recorded after, are still going.
|
|
27
|
+
def self.unchecked(started:, now:, stages_running: false)
|
|
28
|
+
if stages_running || now - started <= FETCH_DEADLINE + CHECK_BUDGET
|
|
26
29
|
return new(state: "checking", check: nil, age: nil, fetch: nil, moved_to: nil)
|
|
27
30
|
end
|
|
28
31
|
|
data/lib/fun_ci/version.rb
CHANGED
data/libexec/fun-ci-renderer
CHANGED
|
Binary file
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: fun_ci
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.
|
|
4
|
+
version: 2.3.0
|
|
5
5
|
platform: aarch64-linux
|
|
6
6
|
authors:
|
|
7
7
|
- Erik Thyge Madsen
|
|
@@ -63,15 +63,25 @@ files:
|
|
|
63
63
|
- exe/fun-ci
|
|
64
64
|
- lib/fun_ci.rb
|
|
65
65
|
- lib/fun_ci/agent/age.rb
|
|
66
|
+
- lib/fun_ci/agent/cancel_command.rb
|
|
66
67
|
- lib/fun_ci/agent/command_support.rb
|
|
67
68
|
- lib/fun_ci/agent/commands.rb
|
|
68
69
|
- lib/fun_ci/agent/context.rb
|
|
69
70
|
- lib/fun_ci/agent/digest.rb
|
|
71
|
+
- lib/fun_ci/agent/due_in.rb
|
|
70
72
|
- lib/fun_ci/agent/events.rb
|
|
71
73
|
- lib/fun_ci/agent/events_command.rb
|
|
72
74
|
- lib/fun_ci/agent/evidence_text.rb
|
|
73
75
|
- lib/fun_ci/agent/exit_code.rb
|
|
74
76
|
- lib/fun_ci/agent/git.rb
|
|
77
|
+
- lib/fun_ci/agent/job_events.rb
|
|
78
|
+
- lib/fun_ci/agent/job_json.rb
|
|
79
|
+
- lib/fun_ci/agent/job_report.rb
|
|
80
|
+
- lib/fun_ci/agent/job_why.rb
|
|
81
|
+
- lib/fun_ci/agent/job_why_json.rb
|
|
82
|
+
- lib/fun_ci/agent/job_why_text.rb
|
|
83
|
+
- lib/fun_ci/agent/jobs_command.rb
|
|
84
|
+
- lib/fun_ci/agent/jobs_text.rb
|
|
75
85
|
- lib/fun_ci/agent/live_pipeline.rb
|
|
76
86
|
- lib/fun_ci/agent/next_step.rb
|
|
77
87
|
- lib/fun_ci/agent/options.rb
|
|
@@ -83,7 +93,9 @@ files:
|
|
|
83
93
|
- lib/fun_ci/agent/runs_command.rb
|
|
84
94
|
- lib/fun_ci/agent/runs_text.rb
|
|
85
95
|
- lib/fun_ci/agent/snapshots.rb
|
|
96
|
+
- lib/fun_ci/agent/span.rb
|
|
86
97
|
- lib/fun_ci/agent/stage_summary.rb
|
|
98
|
+
- lib/fun_ci/agent/starts_in.rb
|
|
87
99
|
- lib/fun_ci/agent/status_command.rb
|
|
88
100
|
- lib/fun_ci/agent/status_json.rb
|
|
89
101
|
- lib/fun_ci/agent/status_text.rb
|
|
@@ -110,10 +122,14 @@ files:
|
|
|
110
122
|
- lib/fun_ci/console/console_loop.rb
|
|
111
123
|
- lib/fun_ci/console/console_session.rb
|
|
112
124
|
- lib/fun_ci/console/console_state.rb
|
|
125
|
+
- lib/fun_ci/console/job_message.rb
|
|
126
|
+
- lib/fun_ci/console/job_order.rb
|
|
127
|
+
- lib/fun_ci/console/job_rows.rb
|
|
113
128
|
- lib/fun_ci/console/key_handler.rb
|
|
114
129
|
- lib/fun_ci/console/launcher.rb
|
|
115
130
|
- lib/fun_ci/console/milestone_events.rb
|
|
116
131
|
- lib/fun_ci/console/milestones.rb
|
|
132
|
+
- lib/fun_ci/console/paging.rb
|
|
117
133
|
- lib/fun_ci/console/renderer_lookup.rb
|
|
118
134
|
- lib/fun_ci/console/renderer_process.rb
|
|
119
135
|
- lib/fun_ci/console/row_order.rb
|
|
@@ -205,8 +221,23 @@ files:
|
|
|
205
221
|
- lib/fun_ci/evidence/stamp.rb
|
|
206
222
|
- lib/fun_ci/evidence/start.rb
|
|
207
223
|
- lib/fun_ci/evidence/worktree.rb
|
|
224
|
+
- lib/fun_ci/jobs/due.rb
|
|
225
|
+
- lib/fun_ci/jobs/due_jobs.rb
|
|
226
|
+
- lib/fun_ci/jobs/folders.rb
|
|
227
|
+
- lib/fun_ci/jobs/job.rb
|
|
228
|
+
- lib/fun_ci/jobs/job_fork.rb
|
|
229
|
+
- lib/fun_ci/jobs/job_run.rb
|
|
230
|
+
- lib/fun_ci/jobs/locks.rb
|
|
231
|
+
- lib/fun_ci/jobs/schedule.rb
|
|
232
|
+
- lib/fun_ci/jobs/site.rb
|
|
233
|
+
- lib/fun_ci/jobs/standings.rb
|
|
234
|
+
- lib/fun_ci/jobs/state.rb
|
|
235
|
+
- lib/fun_ci/jobs/wall_clock_wait.rb
|
|
236
|
+
- lib/fun_ci/persistence/active_jobs.rb
|
|
208
237
|
- lib/fun_ci/persistence/active_runs.rb
|
|
209
238
|
- lib/fun_ci/persistence/database.rb
|
|
239
|
+
- lib/fun_ci/persistence/job_recorder.rb
|
|
240
|
+
- lib/fun_ci/persistence/job_runs.rb
|
|
210
241
|
- lib/fun_ci/persistence/null_recorder.rb
|
|
211
242
|
- lib/fun_ci/persistence/output_tail.rb
|
|
212
243
|
- lib/fun_ci/persistence/pipeline_recorder.rb
|
|
@@ -222,6 +253,7 @@ files:
|
|
|
222
253
|
- lib/fun_ci/persistence/trunk_recording.rb
|
|
223
254
|
- lib/fun_ci/persistence/write_trouble.rb
|
|
224
255
|
- lib/fun_ci/pipeline/background_fork.rb
|
|
256
|
+
- lib/fun_ci/pipeline/budgets.rb
|
|
225
257
|
- lib/fun_ci/pipeline/command_executor.rb
|
|
226
258
|
- lib/fun_ci/pipeline/gate.rb
|
|
227
259
|
- lib/fun_ci/pipeline/git_environment.rb
|
|
@@ -229,6 +261,7 @@ files:
|
|
|
229
261
|
- lib/fun_ci/pipeline/in_place.rb
|
|
230
262
|
- lib/fun_ci/pipeline/output_window.rb
|
|
231
263
|
- lib/fun_ci/pipeline/pipeline_forker.rb
|
|
264
|
+
- lib/fun_ci/pipeline/priorities.rb
|
|
232
265
|
- lib/fun_ci/pipeline/process_runner.rb
|
|
233
266
|
- lib/fun_ci/pipeline/progress_reporter.rb
|
|
234
267
|
- lib/fun_ci/pipeline/run_canceller.rb
|
|
@@ -256,8 +289,10 @@ files:
|
|
|
256
289
|
- lib/fun_ci/setup/gradle_linter_detector.rb
|
|
257
290
|
- lib/fun_ci/setup/hook_script.rb
|
|
258
291
|
- lib/fun_ci/setup/hook_writer.rb
|
|
292
|
+
- lib/fun_ci/setup/installed_hooks.rb
|
|
259
293
|
- lib/fun_ci/setup/installer.rb
|
|
260
294
|
- lib/fun_ci/setup/legacy_hooks.rb
|
|
295
|
+
- lib/fun_ci/setup/lfs_hook.rb
|
|
261
296
|
- lib/fun_ci/setup/lint_detection.rb
|
|
262
297
|
- lib/fun_ci/setup/maven_linter_detector.rb
|
|
263
298
|
- lib/fun_ci/setup/project_config.rb
|