v0.4.0 72f8f2e

run.pb.go RawHistoryFolder

1// SPDX-License-Identifier: MIT
2
3// Code generated by protoc-gen-go. DO NOT EDIT.
4// versions:
5// 	protoc-gen-go v1.36.12
6// 	protoc        (unknown)
7// source: ermite/run.proto
8
9package ermite
10
11import (
12	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
13	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
14	timestamppb "google.golang.org/protobuf/types/known/timestamppb"
15	reflect "reflect"
16	sync "sync"
17	unsafe "unsafe"
18)
19
20const (
21	// Verify that this generated code is sufficiently up-to-date.
22	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
23	// Verify that runtime/protoimpl is sufficiently up-to-date.
24	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
25)
26
27// Run is one execution of one workflow file for one event, like a GitHub
28// workflow run. A re-run keeps the run and adds an attempt.
29type Run struct {
30	state protoimpl.MessageState `protogen:"open.v1"`
31	// Repo is the name of the repository.
32	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
33	// Id identifies the run on the whole server: it is the "github.run_id".
34	// Increasing, never reused.
35	Id int64 `protobuf:"varint,2,opt,name=id,proto3" json:"id,omitempty"`
36	// Number counts the runs of the same workflow file in the repository,
37	// starting at 1, never reused: it is the "github.run_number". It does not
38	// change on a re-run.
39	Number int64 `protobuf:"varint,3,opt,name=number,proto3" json:"number,omitempty"`
40	// Attempt is the attempt this message describes: 1 for the first, one more
41	// after each RerunRun. ListRuns and events describe the latest attempt;
42	// GetRun can ask for another one.
43	Attempt int32 `protobuf:"varint,4,opt,name=attempt,proto3" json:"attempt,omitempty"`
44	// WorkflowPath is the path of the workflow file at sha, for example
45	// ".github/workflows/ci.yml".
46	WorkflowPath string `protobuf:"bytes,5,opt,name=workflow_path,json=workflowPath,proto3" json:"workflow_path,omitempty"`
47	// WorkflowName is the "name" of the workflow, or workflow_path when it has
48	// none (as GitHub does). It is the "github.workflow" of the run and the
49	// workflow name of its checks. See name for the name of the run itself.
50	WorkflowName string `protobuf:"bytes,6,opt,name=workflow_name,json=workflowName,proto3" json:"workflow_name,omitempty"`
51	// Title is GitHub's display title, at most 256 characters: the evaluated
52	// "run-name" of the workflow when it has one, else for a push to a branch
53	// the first line of the message of the commit sha, and for a push of a tag
54	// the name of the workflow registered for workflow_path (the "name" of that
55	// file on the default branch, else workflow_name).
56	Title string `protobuf:"bytes,7,opt,name=title,proto3" json:"title,omitempty"`
57	// Event is the event that triggered the run, in GitHub's name: "push" (push
58	// to a branch or a tag, and merge of a merge request), and from servers with
59	// the matching trigger "pull_request", "workflow_dispatch", "schedule" and
60	// "workflow_run". New values may be added; clients show the ones they do not
61	// know as they are.
62	Event string `protobuf:"bytes,8,opt,name=event,proto3" json:"event,omitempty"`
63	// Ref is the full ref name that was pushed, for example "refs/heads/main"
64	// or "refs/tags/v1.0.0".
65	Ref string `protobuf:"bytes,9,opt,name=ref,proto3" json:"ref,omitempty"`
66	// Sha is the full id of the commit the run is for.
67	Sha string `protobuf:"bytes,10,opt,name=sha,proto3" json:"sha,omitempty"`
68	// Actor names who triggered the run: the label of the token that pushed, or
69	// "root", or "owner" (a web session, a merge of the web UI), as
70	// MergeRequest.author. It is informational.
71	Actor string `protobuf:"bytes,11,opt,name=actor,proto3" json:"actor,omitempty"`
72	// Status is where this attempt is: QUEUED until a job starts, IN_PROGRESS
73	// while jobs run or wait, COMPLETED when every job is over.
74	Status CiStatus `protobuf:"varint,12,opt,name=status,proto3,enum=ermite.CiStatus" json:"status,omitempty"`
75	// Conclusion is how this attempt ended, from its jobs' conclusions like
76	// GitHub: CANCELLED if it was cancelled, else FAILURE if a job failed or
77	// timed out, else SUCCESS (also when jobs were skipped). Unset until
78	// status is COMPLETED.
79	Conclusion CiConclusion `protobuf:"varint,13,opt,name=conclusion,proto3,enum=ermite.CiConclusion" json:"conclusion,omitempty"`
80	// Error is set when the run failed without running a job because the
81	// workflow could not be used: an invalid workflow file (the run then has
82	// no jobs and conclusion FAILURE), as GitHub's "Invalid workflow file".
83	// It holds the errors with their positions, one per line, at most 8 KiB.
84	// Empty otherwise.
85	Error string `protobuf:"bytes,14,opt,name=error,proto3" json:"error,omitempty"`
86	// CreatedAt is when this attempt was created: for attempt 1 when the
87	// trigger was planned, for later ones when RerunRun was called.
88	CreatedAt *timestamppb.Timestamp `protobuf:"bytes,15,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
89	// StartedAt is when the first job of this attempt was given to a runner.
90	// Unset until then.
91	StartedAt *timestamppb.Timestamp `protobuf:"bytes,16,opt,name=started_at,json=startedAt,proto3" json:"started_at,omitempty"`
92	// CompletedAt is when this attempt completed. Unset until then.
93	CompletedAt *timestamppb.Timestamp `protobuf:"bytes,17,opt,name=completed_at,json=completedAt,proto3" json:"completed_at,omitempty"`
94	// Version counts the changes of this run on the server: it grows by at least
95	// one at every change and never goes back, also across attempts. Events are
96	// not delivered in order, and a client that holds two copies of a run keeps
97	// the one with the higher version and drops the other.
98	Version int64 `protobuf:"varint,18,opt,name=version,proto3" json:"version,omitempty"`
99	// Name is the name of the run, GitHub's "name" of a workflow run: the
100	// evaluated "run-name" of the workflow when it has one, else the same value
101	// as workflow_name. It is what GitHub lists as the run's name, whereas
102	// workflow_name stays the name of the workflow ("github.workflow") even when
103	// the workflow has a "run-name". A run stored before this field existed
104	// reads as workflow_name.
105	Name string `protobuf:"bytes,19,opt,name=name,proto3" json:"name,omitempty"`
106	// Trusted is true when the run may use secrets and a job token with write
107	// permissions: its actor is the owner, a "workflow_run" inherits it from the
108	// run that triggered it, and a re-run keeps it only if the original run had
109	// it and the caller of the re-run is the owner. It is false when the actor
110	// is a token limited to branches (see Job.trusted). It never goes from false
111	// to true. False for a run stored before this field existed and from servers
112	// without the feature "ci.secrets".
113	Trusted       bool `protobuf:"varint,20,opt,name=trusted,proto3" json:"trusted,omitempty"`
114	unknownFields protoimpl.UnknownFields
115	sizeCache     protoimpl.SizeCache
116}
117
118func (x *Run) Reset() {
119	*x = Run{}
120	mi := &file_ermite_run_proto_msgTypes[0]
121	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
122	ms.StoreMessageInfo(mi)
123}
124
125func (x *Run) String() string {
126	return protoimpl.X.MessageStringOf(x)
127}
128
129func (*Run) ProtoMessage() {}
130
131func (x *Run) ProtoReflect() protoreflect.Message {
132	mi := &file_ermite_run_proto_msgTypes[0]
133	if x != nil {
134		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
135		if ms.LoadMessageInfo() == nil {
136			ms.StoreMessageInfo(mi)
137		}
138		return ms
139	}
140	return mi.MessageOf(x)
141}
142
143// Deprecated: Use Run.ProtoReflect.Descriptor instead.
144func (*Run) Descriptor() ([]byte, []int) {
145	return file_ermite_run_proto_rawDescGZIP(), []int{0}
146}
147
148func (x *Run) GetRepo() string {
149	if x != nil {
150		return x.Repo
151	}
152	return ""
153}
154
155func (x *Run) GetId() int64 {
156	if x != nil {
157		return x.Id
158	}
159	return 0
160}
161
162func (x *Run) GetNumber() int64 {
163	if x != nil {
164		return x.Number
165	}
166	return 0
167}
168
169func (x *Run) GetAttempt() int32 {
170	if x != nil {
171		return x.Attempt
172	}
173	return 0
174}
175
176func (x *Run) GetWorkflowPath() string {
177	if x != nil {
178		return x.WorkflowPath
179	}
180	return ""
181}
182
183func (x *Run) GetWorkflowName() string {
184	if x != nil {
185		return x.WorkflowName
186	}
187	return ""
188}
189
190func (x *Run) GetTitle() string {
191	if x != nil {
192		return x.Title
193	}
194	return ""
195}
196
197func (x *Run) GetEvent() string {
198	if x != nil {
199		return x.Event
200	}
201	return ""
202}
203
204func (x *Run) GetRef() string {
205	if x != nil {
206		return x.Ref
207	}
208	return ""
209}
210
211func (x *Run) GetSha() string {
212	if x != nil {
213		return x.Sha
214	}
215	return ""
216}
217
218func (x *Run) GetActor() string {
219	if x != nil {
220		return x.Actor
221	}
222	return ""
223}
224
225func (x *Run) GetStatus() CiStatus {
226	if x != nil {
227		return x.Status
228	}
229	return CiStatus_CI_STATUS_UNSPECIFIED
230}
231
232func (x *Run) GetConclusion() CiConclusion {
233	if x != nil {
234		return x.Conclusion
235	}
236	return CiConclusion_CI_CONCLUSION_UNSPECIFIED
237}
238
239func (x *Run) GetError() string {
240	if x != nil {
241		return x.Error
242	}
243	return ""
244}
245
246func (x *Run) GetCreatedAt() *timestamppb.Timestamp {
247	if x != nil {
248		return x.CreatedAt
249	}
250	return nil
251}
252
253func (x *Run) GetStartedAt() *timestamppb.Timestamp {
254	if x != nil {
255		return x.StartedAt
256	}
257	return nil
258}
259
260func (x *Run) GetCompletedAt() *timestamppb.Timestamp {
261	if x != nil {
262		return x.CompletedAt
263	}
264	return nil
265}
266
267func (x *Run) GetVersion() int64 {
268	if x != nil {
269		return x.Version
270	}
271	return 0
272}
273
274func (x *Run) GetName() string {
275	if x != nil {
276		return x.Name
277	}
278	return ""
279}
280
281func (x *Run) GetTrusted() bool {
282	if x != nil {
283		return x.Trusted
284	}
285	return false
286}
287
288// RunJob is a job of a run as people see it: the state of one job instance
289// (one matrix combination is one job) in one attempt. It is not Job, which is
290// what a runner receives.
291type RunJob struct {
292	state protoimpl.MessageState `protogen:"open.v1"`
293	// Id is the Job.job_id. It is the same in every attempt.
294	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
295	// RunId is the run the job belongs to.
296	RunId int64 `protobuf:"varint,2,opt,name=run_id,json=runId,proto3" json:"run_id,omitempty"`
297	// Attempt is the attempt of the run in which this job executed. It is lower
298	// than the attempt of the run when the job was kept from an earlier attempt
299	// by a re-run of the failed jobs only; the log and steps are then those of
300	// that earlier attempt. Pass it to GetJob and GetJobLog.
301	Attempt int32 `protobuf:"varint,3,opt,name=attempt,proto3" json:"attempt,omitempty"`
302	// Repo is the name of the repository.
303	Repo string `protobuf:"bytes,4,opt,name=repo,proto3" json:"repo,omitempty"`
304	// Key is the key of the job under "jobs:" in the workflow (the
305	// "github.job"). Matrix instances of one job share it.
306	Key string `protobuf:"bytes,5,opt,name=key,proto3" json:"key,omitempty"`
307	// Name is the display name of the job, evaluated, with the matrix suffix as
308	// GitHub names them, for example "build (linux, 1.27)". It is also the
309	// name of the job's check.
310	Name string `protobuf:"bytes,6,opt,name=name,proto3" json:"name,omitempty"`
311	// Status is where the job is. A job waits QUEUED for a runner and for the
312	// jobs it needs, and PENDING for its concurrency group.
313	Status CiStatus `protobuf:"varint,7,opt,name=status,proto3,enum=ermite.CiStatus" json:"status,omitempty"`
314	// Conclusion is how the job ended. Unset until status is COMPLETED.
315	Conclusion CiConclusion `protobuf:"varint,8,opt,name=conclusion,proto3,enum=ermite.CiConclusion" json:"conclusion,omitempty"`
316	// Error explains a FAILURE, CANCELLED or TIMED_OUT that no step explains, in
317	// GitHub's words where it has them: the runner was lost ("The self-hosted
318	// runner: <name> lost communication with the server..."), it received a
319	// shutdown signal, no runner took the job within 24 hours, the log limit
320	// was reached, the workflow uses a feature that is not supported yet
321	// ("not supported yet: <feature>"). At most 4 KiB. Empty otherwise.
322	Error string `protobuf:"bytes,9,opt,name=error,proto3" json:"error,omitempty"`
323	// Labels are the runs-on labels of the job, evaluated. Empty while the job
324	// is not planned yet.
325	Labels []string `protobuf:"bytes,10,rep,name=labels,proto3" json:"labels,omitempty"`
326	// Needs are the keys of the jobs this job needs, for drawing the graph.
327	Needs []string `protobuf:"bytes,11,rep,name=needs,proto3" json:"needs,omitempty"`
328	// RunnerId is the id of the runner that executed or is executing the job.
329	// Empty while queued, and when the runner has since been removed (runner_name
330	// and isolation are kept).
331	RunnerId string `protobuf:"bytes,12,opt,name=runner_id,json=runnerId,proto3" json:"runner_id,omitempty"`
332	// RunnerName is the name of that runner. Empty while queued.
333	RunnerName string `protobuf:"bytes,13,opt,name=runner_name,json=runnerName,proto3" json:"runner_name,omitempty"`
334	// Isolation is how that runner isolated the job. UNSPECIFIED while queued.
335	Isolation RunnerIsolation `protobuf:"varint,14,opt,name=isolation,proto3,enum=ermite.RunnerIsolation" json:"isolation,omitempty"`
336	// Steps are the steps reported so far, ordered by number, including the
337	// implicit "Set up job" and "Complete job". Empty while queued. Always
338	// set, including in JobUpdated events.
339	Steps []*Step `protobuf:"bytes,15,rep,name=steps,proto3" json:"steps,omitempty"`
340	// CreatedAt is when the job was created (planned).
341	CreatedAt *timestamppb.Timestamp `protobuf:"bytes,16,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
342	// StartedAt is when the job was given to a runner. Unset until then.
343	StartedAt *timestamppb.Timestamp `protobuf:"bytes,17,opt,name=started_at,json=startedAt,proto3" json:"started_at,omitempty"`
344	// CompletedAt is when the job completed. Unset until then.
345	CompletedAt *timestamppb.Timestamp `protobuf:"bytes,18,opt,name=completed_at,json=completedAt,proto3" json:"completed_at,omitempty"`
346	// Version counts the changes of this job on the server (status, conclusion,
347	// runner, steps, with any attempt): it grows by at least one at every change
348	// and never goes back. A client that holds two copies of a job keeps the
349	// one with the higher version and drops the other, as for Run.version.
350	Version int64 `protobuf:"varint,19,opt,name=version,proto3" json:"version,omitempty"`
351	// ConcurrencyGroup is the evaluated concurrency group of the job (its
352	// "concurrency:", or the one of its workflow), compared without regard to
353	// case within the repository. Empty when the job has none and from servers
354	// without the feature "ci.concurrency". The job is PENDING while another job
355	// of the group runs or a newer one is waiting.
356	ConcurrencyGroup string `protobuf:"bytes,20,opt,name=concurrency_group,json=concurrencyGroup,proto3" json:"concurrency_group,omitempty"`
357	unknownFields    protoimpl.UnknownFields
358	sizeCache        protoimpl.SizeCache
359}
360
361func (x *RunJob) Reset() {
362	*x = RunJob{}
363	mi := &file_ermite_run_proto_msgTypes[1]
364	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
365	ms.StoreMessageInfo(mi)
366}
367
368func (x *RunJob) String() string {
369	return protoimpl.X.MessageStringOf(x)
370}
371
372func (*RunJob) ProtoMessage() {}
373
374func (x *RunJob) ProtoReflect() protoreflect.Message {
375	mi := &file_ermite_run_proto_msgTypes[1]
376	if x != nil {
377		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
378		if ms.LoadMessageInfo() == nil {
379			ms.StoreMessageInfo(mi)
380		}
381		return ms
382	}
383	return mi.MessageOf(x)
384}
385
386// Deprecated: Use RunJob.ProtoReflect.Descriptor instead.
387func (*RunJob) Descriptor() ([]byte, []int) {
388	return file_ermite_run_proto_rawDescGZIP(), []int{1}
389}
390
391func (x *RunJob) GetId() string {
392	if x != nil {
393		return x.Id
394	}
395	return ""
396}
397
398func (x *RunJob) GetRunId() int64 {
399	if x != nil {
400		return x.RunId
401	}
402	return 0
403}
404
405func (x *RunJob) GetAttempt() int32 {
406	if x != nil {
407		return x.Attempt
408	}
409	return 0
410}
411
412func (x *RunJob) GetRepo() string {
413	if x != nil {
414		return x.Repo
415	}
416	return ""
417}
418
419func (x *RunJob) GetKey() string {
420	if x != nil {
421		return x.Key
422	}
423	return ""
424}
425
426func (x *RunJob) GetName() string {
427	if x != nil {
428		return x.Name
429	}
430	return ""
431}
432
433func (x *RunJob) GetStatus() CiStatus {
434	if x != nil {
435		return x.Status
436	}
437	return CiStatus_CI_STATUS_UNSPECIFIED
438}
439
440func (x *RunJob) GetConclusion() CiConclusion {
441	if x != nil {
442		return x.Conclusion
443	}
444	return CiConclusion_CI_CONCLUSION_UNSPECIFIED
445}
446
447func (x *RunJob) GetError() string {
448	if x != nil {
449		return x.Error
450	}
451	return ""
452}
453
454func (x *RunJob) GetLabels() []string {
455	if x != nil {
456		return x.Labels
457	}
458	return nil
459}
460
461func (x *RunJob) GetNeeds() []string {
462	if x != nil {
463		return x.Needs
464	}
465	return nil
466}
467
468func (x *RunJob) GetRunnerId() string {
469	if x != nil {
470		return x.RunnerId
471	}
472	return ""
473}
474
475func (x *RunJob) GetRunnerName() string {
476	if x != nil {
477		return x.RunnerName
478	}
479	return ""
480}
481
482func (x *RunJob) GetIsolation() RunnerIsolation {
483	if x != nil {
484		return x.Isolation
485	}
486	return RunnerIsolation_RUNNER_ISOLATION_UNSPECIFIED
487}
488
489func (x *RunJob) GetSteps() []*Step {
490	if x != nil {
491		return x.Steps
492	}
493	return nil
494}
495
496func (x *RunJob) GetCreatedAt() *timestamppb.Timestamp {
497	if x != nil {
498		return x.CreatedAt
499	}
500	return nil
501}
502
503func (x *RunJob) GetStartedAt() *timestamppb.Timestamp {
504	if x != nil {
505		return x.StartedAt
506	}
507	return nil
508}
509
510func (x *RunJob) GetCompletedAt() *timestamppb.Timestamp {
511	if x != nil {
512		return x.CompletedAt
513	}
514	return nil
515}
516
517func (x *RunJob) GetVersion() int64 {
518	if x != nil {
519		return x.Version
520	}
521	return 0
522}
523
524func (x *RunJob) GetConcurrencyGroup() string {
525	if x != nil {
526		return x.ConcurrencyGroup
527	}
528	return ""
529}
530
531// Step is one step of a job, with where its lines are in the job log.
532type Step struct {
533	state protoimpl.MessageState `protogen:"open.v1"`
534	// Number is the 1-based number of the step in the job, the one the runner
535	// uses in UpdateJob and AppendLog.
536	Number int32 `protobuf:"varint,1,opt,name=number,proto3" json:"number,omitempty"`
537	// Name is the display name of the step.
538	Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
539	// State is where the step is.
540	State StepState `protobuf:"varint,3,opt,name=state,proto3,enum=ermite.StepState" json:"state,omitempty"`
541	// Conclusion is how the step ended. Unset until state is COMPLETED.
542	Conclusion CiConclusion `protobuf:"varint,4,opt,name=conclusion,proto3,enum=ermite.CiConclusion" json:"conclusion,omitempty"`
543	// StartedAt is when the step started. Unset while PENDING.
544	StartedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=started_at,json=startedAt,proto3" json:"started_at,omitempty"`
545	// CompletedAt is when the step ended. Unset until COMPLETED.
546	CompletedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=completed_at,json=completedAt,proto3" json:"completed_at,omitempty"`
547	// LogStart is the number of the first line of the step in the job log (the
548	// offset of GetJobLogRequest and AppendLogRequest), counted from 0.
549	LogStart int64 `protobuf:"varint,7,opt,name=log_start,json=logStart,proto3" json:"log_start,omitempty"`
550	// LogEnd is the number of the line after the last one of the step. For an
551	// IN_PROGRESS step it is the number of lines held at the time of the
552	// call and grows; for a step without a line it equals log_start.
553	LogEnd int64 `protobuf:"varint,8,opt,name=log_end,json=logEnd,proto3" json:"log_end,omitempty"`
554	// Outcome is how the step ended before continue-on-error was applied, as
555	// StepUpdate.outcome: it differs from conclusion only for a failed step with
556	// continue-on-error. Unset until state is COMPLETED, and for a step stored
557	// by a server or runner before this field existed (read it as conclusion).
558	Outcome       CiConclusion `protobuf:"varint,9,opt,name=outcome,proto3,enum=ermite.CiConclusion" json:"outcome,omitempty"`
559	unknownFields protoimpl.UnknownFields
560	sizeCache     protoimpl.SizeCache
561}
562
563func (x *Step) Reset() {
564	*x = Step{}
565	mi := &file_ermite_run_proto_msgTypes[2]
566	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
567	ms.StoreMessageInfo(mi)
568}
569
570func (x *Step) String() string {
571	return protoimpl.X.MessageStringOf(x)
572}
573
574func (*Step) ProtoMessage() {}
575
576func (x *Step) ProtoReflect() protoreflect.Message {
577	mi := &file_ermite_run_proto_msgTypes[2]
578	if x != nil {
579		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
580		if ms.LoadMessageInfo() == nil {
581			ms.StoreMessageInfo(mi)
582		}
583		return ms
584	}
585	return mi.MessageOf(x)
586}
587
588// Deprecated: Use Step.ProtoReflect.Descriptor instead.
589func (*Step) Descriptor() ([]byte, []int) {
590	return file_ermite_run_proto_rawDescGZIP(), []int{2}
591}
592
593func (x *Step) GetNumber() int32 {
594	if x != nil {
595		return x.Number
596	}
597	return 0
598}
599
600func (x *Step) GetName() string {
601	if x != nil {
602		return x.Name
603	}
604	return ""
605}
606
607func (x *Step) GetState() StepState {
608	if x != nil {
609		return x.State
610	}
611	return StepState_STEP_STATE_UNSPECIFIED
612}
613
614func (x *Step) GetConclusion() CiConclusion {
615	if x != nil {
616		return x.Conclusion
617	}
618	return CiConclusion_CI_CONCLUSION_UNSPECIFIED
619}
620
621func (x *Step) GetStartedAt() *timestamppb.Timestamp {
622	if x != nil {
623		return x.StartedAt
624	}
625	return nil
626}
627
628func (x *Step) GetCompletedAt() *timestamppb.Timestamp {
629	if x != nil {
630		return x.CompletedAt
631	}
632	return nil
633}
634
635func (x *Step) GetLogStart() int64 {
636	if x != nil {
637		return x.LogStart
638	}
639	return 0
640}
641
642func (x *Step) GetLogEnd() int64 {
643	if x != nil {
644		return x.LogEnd
645	}
646	return 0
647}
648
649func (x *Step) GetOutcome() CiConclusion {
650	if x != nil {
651		return x.Outcome
652	}
653	return CiConclusion_CI_CONCLUSION_UNSPECIFIED
654}
655
656// Check is the result of one job on one commit, the unit shown next to a
657// commit or a merge request and counted by the merge rules. There is one per
658// job instance, named like GitHub's checks.
659type Check struct {
660	state protoimpl.MessageState `protogen:"open.v1"`
661	// Id identifies the check. It is opaque and stable across attempts.
662	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
663	// Repo is the name of the repository.
664	Repo string `protobuf:"bytes,2,opt,name=repo,proto3" json:"repo,omitempty"`
665	// Sha is the full id of the commit.
666	Sha string `protobuf:"bytes,3,opt,name=sha,proto3" json:"sha,omitempty"`
667	// Name is the name of the check: the RunJob.name of the job.
668	Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"`
669	// Status is where the check is.
670	Status CiStatus `protobuf:"varint,5,opt,name=status,proto3,enum=ermite.CiStatus" json:"status,omitempty"`
671	// Conclusion is how the check ended. Unset until status is COMPLETED. The
672	// value "stale" of GitHub is never used.
673	Conclusion CiConclusion `protobuf:"varint,6,opt,name=conclusion,proto3,enum=ermite.CiConclusion" json:"conclusion,omitempty"`
674	// RunId is the run of the job.
675	RunId int64 `protobuf:"varint,7,opt,name=run_id,json=runId,proto3" json:"run_id,omitempty"`
676	// JobId is the RunJob.id of the job, to open its page and log.
677	JobId string `protobuf:"bytes,8,opt,name=job_id,json=jobId,proto3" json:"job_id,omitempty"`
678	// Attempt is the attempt the check describes: the latest attempt of the run.
679	Attempt int32 `protobuf:"varint,9,opt,name=attempt,proto3" json:"attempt,omitempty"`
680	// WorkflowName is the Run.workflow_name of the run.
681	WorkflowName string `protobuf:"bytes,10,opt,name=workflow_name,json=workflowName,proto3" json:"workflow_name,omitempty"`
682	// StartedAt is when the job was given to a runner. Unset while queued.
683	StartedAt *timestamppb.Timestamp `protobuf:"bytes,11,opt,name=started_at,json=startedAt,proto3" json:"started_at,omitempty"`
684	// CompletedAt is when the job completed. Unset until then.
685	CompletedAt   *timestamppb.Timestamp `protobuf:"bytes,12,opt,name=completed_at,json=completedAt,proto3" json:"completed_at,omitempty"`
686	unknownFields protoimpl.UnknownFields
687	sizeCache     protoimpl.SizeCache
688}
689
690func (x *Check) Reset() {
691	*x = Check{}
692	mi := &file_ermite_run_proto_msgTypes[3]
693	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
694	ms.StoreMessageInfo(mi)
695}
696
697func (x *Check) String() string {
698	return protoimpl.X.MessageStringOf(x)
699}
700
701func (*Check) ProtoMessage() {}
702
703func (x *Check) ProtoReflect() protoreflect.Message {
704	mi := &file_ermite_run_proto_msgTypes[3]
705	if x != nil {
706		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
707		if ms.LoadMessageInfo() == nil {
708			ms.StoreMessageInfo(mi)
709		}
710		return ms
711	}
712	return mi.MessageOf(x)
713}
714
715// Deprecated: Use Check.ProtoReflect.Descriptor instead.
716func (*Check) Descriptor() ([]byte, []int) {
717	return file_ermite_run_proto_rawDescGZIP(), []int{3}
718}
719
720func (x *Check) GetId() string {
721	if x != nil {
722		return x.Id
723	}
724	return ""
725}
726
727func (x *Check) GetRepo() string {
728	if x != nil {
729		return x.Repo
730	}
731	return ""
732}
733
734func (x *Check) GetSha() string {
735	if x != nil {
736		return x.Sha
737	}
738	return ""
739}
740
741func (x *Check) GetName() string {
742	if x != nil {
743		return x.Name
744	}
745	return ""
746}
747
748func (x *Check) GetStatus() CiStatus {
749	if x != nil {
750		return x.Status
751	}
752	return CiStatus_CI_STATUS_UNSPECIFIED
753}
754
755func (x *Check) GetConclusion() CiConclusion {
756	if x != nil {
757		return x.Conclusion
758	}
759	return CiConclusion_CI_CONCLUSION_UNSPECIFIED
760}
761
762func (x *Check) GetRunId() int64 {
763	if x != nil {
764		return x.RunId
765	}
766	return 0
767}
768
769func (x *Check) GetJobId() string {
770	if x != nil {
771		return x.JobId
772	}
773	return ""
774}
775
776func (x *Check) GetAttempt() int32 {
777	if x != nil {
778		return x.Attempt
779	}
780	return 0
781}
782
783func (x *Check) GetWorkflowName() string {
784	if x != nil {
785		return x.WorkflowName
786	}
787	return ""
788}
789
790func (x *Check) GetStartedAt() *timestamppb.Timestamp {
791	if x != nil {
792		return x.StartedAt
793	}
794	return nil
795}
796
797func (x *Check) GetCompletedAt() *timestamppb.Timestamp {
798	if x != nil {
799		return x.CompletedAt
800	}
801	return nil
802}
803
804// Runner is a registered CI runner. It never contains the runner token nor its
805// hash.
806type Runner struct {
807	state protoimpl.MessageState `protogen:"open.v1"`
808	// Id identifies the runner in RemoveRunner. It is not a secret.
809	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
810	// Name is the unique name chosen at registration.
811	Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
812	// Labels are all the labels the runner can match: the ones chosen at
813	// registration plus the implicit ones ("self-hosted", the os and the arch),
814	// lowercase, sorted.
815	Labels []string `protobuf:"bytes,3,rep,name=labels,proto3" json:"labels,omitempty"`
816	// Isolation is how the runner isolates jobs.
817	Isolation RunnerIsolation `protobuf:"varint,4,opt,name=isolation,proto3,enum=ermite.RunnerIsolation" json:"isolation,omitempty"`
818	// Version is the version of the runner software.
819	Version string `protobuf:"bytes,5,opt,name=version,proto3" json:"version,omitempty"`
820	// Arch is "x64" or "arm64".
821	Arch string `protobuf:"bytes,6,opt,name=arch,proto3" json:"arch,omitempty"`
822	// Os is "linux".
823	Os string `protobuf:"bytes,7,opt,name=os,proto3" json:"os,omitempty"`
824	// RegisteredAt is when the runner was registered.
825	RegisteredAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=registered_at,json=registeredAt,proto3" json:"registered_at,omitempty"`
826	// LastSeen is when the server last heard from the runner: a FetchJob poll or
827	// a heartbeat of one of its jobs. Unset if never. It may lag behind the real
828	// time by a short delay. A runner not seen for more than about 2 minutes is
829	// offline.
830	LastSeen *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=last_seen,json=lastSeen,proto3" json:"last_seen,omitempty"`
831	// Busy is true while the runner has a job in progress.
832	Busy bool `protobuf:"varint,10,opt,name=busy,proto3" json:"busy,omitempty"`
833	// Online is true when the server heard from the runner (see last_seen) less
834	// than 2 minutes ago, by the server's own clock at the time of the answer.
835	// Clients show this instead of comparing last_seen with their clock, which
836	// may be minutes off. A server that predates the field leaves it false:
837	// clients that need to tell can fall back to last_seen.
838	Online        bool `protobuf:"varint,11,opt,name=online,proto3" json:"online,omitempty"`
839	unknownFields protoimpl.UnknownFields
840	sizeCache     protoimpl.SizeCache
841}
842
843func (x *Runner) Reset() {
844	*x = Runner{}
845	mi := &file_ermite_run_proto_msgTypes[4]
846	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
847	ms.StoreMessageInfo(mi)
848}
849
850func (x *Runner) String() string {
851	return protoimpl.X.MessageStringOf(x)
852}
853
854func (*Runner) ProtoMessage() {}
855
856func (x *Runner) ProtoReflect() protoreflect.Message {
857	mi := &file_ermite_run_proto_msgTypes[4]
858	if x != nil {
859		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
860		if ms.LoadMessageInfo() == nil {
861			ms.StoreMessageInfo(mi)
862		}
863		return ms
864	}
865	return mi.MessageOf(x)
866}
867
868// Deprecated: Use Runner.ProtoReflect.Descriptor instead.
869func (*Runner) Descriptor() ([]byte, []int) {
870	return file_ermite_run_proto_rawDescGZIP(), []int{4}
871}
872
873func (x *Runner) GetId() string {
874	if x != nil {
875		return x.Id
876	}
877	return ""
878}
879
880func (x *Runner) GetName() string {
881	if x != nil {
882		return x.Name
883	}
884	return ""
885}
886
887func (x *Runner) GetLabels() []string {
888	if x != nil {
889		return x.Labels
890	}
891	return nil
892}
893
894func (x *Runner) GetIsolation() RunnerIsolation {
895	if x != nil {
896		return x.Isolation
897	}
898	return RunnerIsolation_RUNNER_ISOLATION_UNSPECIFIED
899}
900
901func (x *Runner) GetVersion() string {
902	if x != nil {
903		return x.Version
904	}
905	return ""
906}
907
908func (x *Runner) GetArch() string {
909	if x != nil {
910		return x.Arch
911	}
912	return ""
913}
914
915func (x *Runner) GetOs() string {
916	if x != nil {
917		return x.Os
918	}
919	return ""
920}
921
922func (x *Runner) GetRegisteredAt() *timestamppb.Timestamp {
923	if x != nil {
924		return x.RegisteredAt
925	}
926	return nil
927}
928
929func (x *Runner) GetLastSeen() *timestamppb.Timestamp {
930	if x != nil {
931		return x.LastSeen
932	}
933	return nil
934}
935
936func (x *Runner) GetBusy() bool {
937	if x != nil {
938		return x.Busy
939	}
940	return false
941}
942
943func (x *Runner) GetOnline() bool {
944	if x != nil {
945		return x.Online
946	}
947	return false
948}
949
950// ListRunsRequest selects a page of runs.
951type ListRunsRequest struct {
952	state protoimpl.MessageState `protogen:"open.v1"`
953	// Repo is the repository name.
954	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
955	// PageSize is the maximum number of runs to return.
956	PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
957	// PageToken is the next_page_token of a previous response. Empty for the
958	// first page.
959	PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
960	// Workflow restricts the result to one workflow file: its path
961	// (".github/workflows/ci.yml") or its file name ("ci.yml"). Empty means
962	// every workflow. Ignored by servers without "ci.runs.filters".
963	Workflow string `protobuf:"bytes,4,opt,name=workflow,proto3" json:"workflow,omitempty"`
964	// Branch restricts the result to the runs whose ref is this branch, by
965	// short name ("main"). Empty means every ref. Ignored by servers without
966	// "ci.runs.filters".
967	Branch string `protobuf:"bytes,5,opt,name=branch,proto3" json:"branch,omitempty"`
968	// Status restricts the result to the runs whose latest attempt has this
969	// status. CI_STATUS_UNSPECIFIED means every status. Ignored by servers
970	// without "ci.runs.filters".
971	Status        CiStatus `protobuf:"varint,6,opt,name=status,proto3,enum=ermite.CiStatus" json:"status,omitempty"`
972	unknownFields protoimpl.UnknownFields
973	sizeCache     protoimpl.SizeCache
974}
975
976func (x *ListRunsRequest) Reset() {
977	*x = ListRunsRequest{}
978	mi := &file_ermite_run_proto_msgTypes[5]
979	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
980	ms.StoreMessageInfo(mi)
981}
982
983func (x *ListRunsRequest) String() string {
984	return protoimpl.X.MessageStringOf(x)
985}
986
987func (*ListRunsRequest) ProtoMessage() {}
988
989func (x *ListRunsRequest) ProtoReflect() protoreflect.Message {
990	mi := &file_ermite_run_proto_msgTypes[5]
991	if x != nil {
992		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
993		if ms.LoadMessageInfo() == nil {
994			ms.StoreMessageInfo(mi)
995		}
996		return ms
997	}
998	return mi.MessageOf(x)
999}
1000
1001// Deprecated: Use ListRunsRequest.ProtoReflect.Descriptor instead.
1002func (*ListRunsRequest) Descriptor() ([]byte, []int) {
1003	return file_ermite_run_proto_rawDescGZIP(), []int{5}
1004}
1005
1006func (x *ListRunsRequest) GetRepo() string {
1007	if x != nil {
1008		return x.Repo
1009	}
1010	return ""
1011}
1012
1013func (x *ListRunsRequest) GetPageSize() int32 {
1014	if x != nil {
1015		return x.PageSize
1016	}
1017	return 0
1018}
1019
1020func (x *ListRunsRequest) GetPageToken() string {
1021	if x != nil {
1022		return x.PageToken
1023	}
1024	return ""
1025}
1026
1027func (x *ListRunsRequest) GetWorkflow() string {
1028	if x != nil {
1029		return x.Workflow
1030	}
1031	return ""
1032}
1033
1034func (x *ListRunsRequest) GetBranch() string {
1035	if x != nil {
1036		return x.Branch
1037	}
1038	return ""
1039}
1040
1041func (x *ListRunsRequest) GetStatus() CiStatus {
1042	if x != nil {
1043		return x.Status
1044	}
1045	return CiStatus_CI_STATUS_UNSPECIFIED
1046}
1047
1048// ListRunsResponse is one page of runs.
1049type ListRunsResponse struct {
1050	state protoimpl.MessageState `protogen:"open.v1"`
1051	// Runs are the runs of this page, highest id first, without jobs.
1052	Runs []*Run `protobuf:"bytes,1,rep,name=runs,proto3" json:"runs,omitempty"`
1053	// NextPageToken is passed as page_token to get the next page. Empty when
1054	// there is no next page.
1055	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
1056	unknownFields protoimpl.UnknownFields
1057	sizeCache     protoimpl.SizeCache
1058}
1059
1060func (x *ListRunsResponse) Reset() {
1061	*x = ListRunsResponse{}
1062	mi := &file_ermite_run_proto_msgTypes[6]
1063	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1064	ms.StoreMessageInfo(mi)
1065}
1066
1067func (x *ListRunsResponse) String() string {
1068	return protoimpl.X.MessageStringOf(x)
1069}
1070
1071func (*ListRunsResponse) ProtoMessage() {}
1072
1073func (x *ListRunsResponse) ProtoReflect() protoreflect.Message {
1074	mi := &file_ermite_run_proto_msgTypes[6]
1075	if x != nil {
1076		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1077		if ms.LoadMessageInfo() == nil {
1078			ms.StoreMessageInfo(mi)
1079		}
1080		return ms
1081	}
1082	return mi.MessageOf(x)
1083}
1084
1085// Deprecated: Use ListRunsResponse.ProtoReflect.Descriptor instead.
1086func (*ListRunsResponse) Descriptor() ([]byte, []int) {
1087	return file_ermite_run_proto_rawDescGZIP(), []int{6}
1088}
1089
1090func (x *ListRunsResponse) GetRuns() []*Run {
1091	if x != nil {
1092		return x.Runs
1093	}
1094	return nil
1095}
1096
1097func (x *ListRunsResponse) GetNextPageToken() string {
1098	if x != nil {
1099		return x.NextPageToken
1100	}
1101	return ""
1102}
1103
1104// GetRunRequest selects a run.
1105type GetRunRequest struct {
1106	state protoimpl.MessageState `protogen:"open.v1"`
1107	// Repo is the repository name.
1108	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
1109	// RunId is the Run.id.
1110	RunId int64 `protobuf:"varint,2,opt,name=run_id,json=runId,proto3" json:"run_id,omitempty"`
1111	// Attempt is the attempt to read. 0 means the latest.
1112	Attempt       int32 `protobuf:"varint,3,opt,name=attempt,proto3" json:"attempt,omitempty"`
1113	unknownFields protoimpl.UnknownFields
1114	sizeCache     protoimpl.SizeCache
1115}
1116
1117func (x *GetRunRequest) Reset() {
1118	*x = GetRunRequest{}
1119	mi := &file_ermite_run_proto_msgTypes[7]
1120	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1121	ms.StoreMessageInfo(mi)
1122}
1123
1124func (x *GetRunRequest) String() string {
1125	return protoimpl.X.MessageStringOf(x)
1126}
1127
1128func (*GetRunRequest) ProtoMessage() {}
1129
1130func (x *GetRunRequest) ProtoReflect() protoreflect.Message {
1131	mi := &file_ermite_run_proto_msgTypes[7]
1132	if x != nil {
1133		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1134		if ms.LoadMessageInfo() == nil {
1135			ms.StoreMessageInfo(mi)
1136		}
1137		return ms
1138	}
1139	return mi.MessageOf(x)
1140}
1141
1142// Deprecated: Use GetRunRequest.ProtoReflect.Descriptor instead.
1143func (*GetRunRequest) Descriptor() ([]byte, []int) {
1144	return file_ermite_run_proto_rawDescGZIP(), []int{7}
1145}
1146
1147func (x *GetRunRequest) GetRepo() string {
1148	if x != nil {
1149		return x.Repo
1150	}
1151	return ""
1152}
1153
1154func (x *GetRunRequest) GetRunId() int64 {
1155	if x != nil {
1156		return x.RunId
1157	}
1158	return 0
1159}
1160
1161func (x *GetRunRequest) GetAttempt() int32 {
1162	if x != nil {
1163		return x.Attempt
1164	}
1165	return 0
1166}
1167
1168// GetRunResponse holds a run with its jobs.
1169type GetRunResponse struct {
1170	state protoimpl.MessageState `protogen:"open.v1"`
1171	// Run is the run, as of the attempt asked.
1172	Run *Run `protobuf:"bytes,1,opt,name=run,proto3" json:"run,omitempty"`
1173	// Jobs are the jobs of that attempt, with their steps, in the order of the
1174	// workflow file (matrix instances in the order of the matrix). Jobs kept from
1175	// an earlier attempt by a re-run of failed jobs are included, with their own
1176	// RunJob.attempt. Empty for a run that failed on an invalid workflow file.
1177	Jobs []*RunJob `protobuf:"bytes,2,rep,name=jobs,proto3" json:"jobs,omitempty"`
1178	// LatestAttempt is the latest attempt of the run, to offer the other ones.
1179	LatestAttempt int32 `protobuf:"varint,3,opt,name=latest_attempt,json=latestAttempt,proto3" json:"latest_attempt,omitempty"`
1180	unknownFields protoimpl.UnknownFields
1181	sizeCache     protoimpl.SizeCache
1182}
1183
1184func (x *GetRunResponse) Reset() {
1185	*x = GetRunResponse{}
1186	mi := &file_ermite_run_proto_msgTypes[8]
1187	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1188	ms.StoreMessageInfo(mi)
1189}
1190
1191func (x *GetRunResponse) String() string {
1192	return protoimpl.X.MessageStringOf(x)
1193}
1194
1195func (*GetRunResponse) ProtoMessage() {}
1196
1197func (x *GetRunResponse) ProtoReflect() protoreflect.Message {
1198	mi := &file_ermite_run_proto_msgTypes[8]
1199	if x != nil {
1200		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1201		if ms.LoadMessageInfo() == nil {
1202			ms.StoreMessageInfo(mi)
1203		}
1204		return ms
1205	}
1206	return mi.MessageOf(x)
1207}
1208
1209// Deprecated: Use GetRunResponse.ProtoReflect.Descriptor instead.
1210func (*GetRunResponse) Descriptor() ([]byte, []int) {
1211	return file_ermite_run_proto_rawDescGZIP(), []int{8}
1212}
1213
1214func (x *GetRunResponse) GetRun() *Run {
1215	if x != nil {
1216		return x.Run
1217	}
1218	return nil
1219}
1220
1221func (x *GetRunResponse) GetJobs() []*RunJob {
1222	if x != nil {
1223		return x.Jobs
1224	}
1225	return nil
1226}
1227
1228func (x *GetRunResponse) GetLatestAttempt() int32 {
1229	if x != nil {
1230		return x.LatestAttempt
1231	}
1232	return 0
1233}
1234
1235// GetJobRequest selects a job.
1236type GetJobRequest struct {
1237	state protoimpl.MessageState `protogen:"open.v1"`
1238	// Repo is the repository name.
1239	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
1240	// JobId is the RunJob.id.
1241	JobId string `protobuf:"bytes,2,opt,name=job_id,json=jobId,proto3" json:"job_id,omitempty"`
1242	// Attempt is the RunJob.attempt to read. 0 means the latest.
1243	Attempt       int32 `protobuf:"varint,3,opt,name=attempt,proto3" json:"attempt,omitempty"`
1244	unknownFields protoimpl.UnknownFields
1245	sizeCache     protoimpl.SizeCache
1246}
1247
1248func (x *GetJobRequest) Reset() {
1249	*x = GetJobRequest{}
1250	mi := &file_ermite_run_proto_msgTypes[9]
1251	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1252	ms.StoreMessageInfo(mi)
1253}
1254
1255func (x *GetJobRequest) String() string {
1256	return protoimpl.X.MessageStringOf(x)
1257}
1258
1259func (*GetJobRequest) ProtoMessage() {}
1260
1261func (x *GetJobRequest) ProtoReflect() protoreflect.Message {
1262	mi := &file_ermite_run_proto_msgTypes[9]
1263	if x != nil {
1264		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1265		if ms.LoadMessageInfo() == nil {
1266			ms.StoreMessageInfo(mi)
1267		}
1268		return ms
1269	}
1270	return mi.MessageOf(x)
1271}
1272
1273// Deprecated: Use GetJobRequest.ProtoReflect.Descriptor instead.
1274func (*GetJobRequest) Descriptor() ([]byte, []int) {
1275	return file_ermite_run_proto_rawDescGZIP(), []int{9}
1276}
1277
1278func (x *GetJobRequest) GetRepo() string {
1279	if x != nil {
1280		return x.Repo
1281	}
1282	return ""
1283}
1284
1285func (x *GetJobRequest) GetJobId() string {
1286	if x != nil {
1287		return x.JobId
1288	}
1289	return ""
1290}
1291
1292func (x *GetJobRequest) GetAttempt() int32 {
1293	if x != nil {
1294		return x.Attempt
1295	}
1296	return 0
1297}
1298
1299// GetJobResponse holds a job.
1300type GetJobResponse struct {
1301	state protoimpl.MessageState `protogen:"open.v1"`
1302	// Job is the job with its steps.
1303	Job           *RunJob `protobuf:"bytes,1,opt,name=job,proto3" json:"job,omitempty"`
1304	unknownFields protoimpl.UnknownFields
1305	sizeCache     protoimpl.SizeCache
1306}
1307
1308func (x *GetJobResponse) Reset() {
1309	*x = GetJobResponse{}
1310	mi := &file_ermite_run_proto_msgTypes[10]
1311	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1312	ms.StoreMessageInfo(mi)
1313}
1314
1315func (x *GetJobResponse) String() string {
1316	return protoimpl.X.MessageStringOf(x)
1317}
1318
1319func (*GetJobResponse) ProtoMessage() {}
1320
1321func (x *GetJobResponse) ProtoReflect() protoreflect.Message {
1322	mi := &file_ermite_run_proto_msgTypes[10]
1323	if x != nil {
1324		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1325		if ms.LoadMessageInfo() == nil {
1326			ms.StoreMessageInfo(mi)
1327		}
1328		return ms
1329	}
1330	return mi.MessageOf(x)
1331}
1332
1333// Deprecated: Use GetJobResponse.ProtoReflect.Descriptor instead.
1334func (*GetJobResponse) Descriptor() ([]byte, []int) {
1335	return file_ermite_run_proto_rawDescGZIP(), []int{10}
1336}
1337
1338func (x *GetJobResponse) GetJob() *RunJob {
1339	if x != nil {
1340		return x.Job
1341	}
1342	return nil
1343}
1344
1345// ListAnnotationsRequest selects the annotations of a run.
1346type ListAnnotationsRequest struct {
1347	state protoimpl.MessageState `protogen:"open.v1"`
1348	// Repo is the repository name.
1349	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
1350	// RunId is the Run.id.
1351	RunId int64 `protobuf:"varint,2,opt,name=run_id,json=runId,proto3" json:"run_id,omitempty"`
1352	// Attempt is the attempt to read. 0 means the latest, and then each job
1353	// contributes the annotations of its own RunJob.attempt (not necessarily the
1354	// latest attempt of the run, see ListAnnotations).
1355	Attempt int32 `protobuf:"varint,3,opt,name=attempt,proto3" json:"attempt,omitempty"`
1356	// JobId restricts the result to one job (RunJob.id). Empty means every job
1357	// of the run.
1358	JobId         string `protobuf:"bytes,4,opt,name=job_id,json=jobId,proto3" json:"job_id,omitempty"`
1359	unknownFields protoimpl.UnknownFields
1360	sizeCache     protoimpl.SizeCache
1361}
1362
1363func (x *ListAnnotationsRequest) Reset() {
1364	*x = ListAnnotationsRequest{}
1365	mi := &file_ermite_run_proto_msgTypes[11]
1366	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1367	ms.StoreMessageInfo(mi)
1368}
1369
1370func (x *ListAnnotationsRequest) String() string {
1371	return protoimpl.X.MessageStringOf(x)
1372}
1373
1374func (*ListAnnotationsRequest) ProtoMessage() {}
1375
1376func (x *ListAnnotationsRequest) ProtoReflect() protoreflect.Message {
1377	mi := &file_ermite_run_proto_msgTypes[11]
1378	if x != nil {
1379		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1380		if ms.LoadMessageInfo() == nil {
1381			ms.StoreMessageInfo(mi)
1382		}
1383		return ms
1384	}
1385	return mi.MessageOf(x)
1386}
1387
1388// Deprecated: Use ListAnnotationsRequest.ProtoReflect.Descriptor instead.
1389func (*ListAnnotationsRequest) Descriptor() ([]byte, []int) {
1390	return file_ermite_run_proto_rawDescGZIP(), []int{11}
1391}
1392
1393func (x *ListAnnotationsRequest) GetRepo() string {
1394	if x != nil {
1395		return x.Repo
1396	}
1397	return ""
1398}
1399
1400func (x *ListAnnotationsRequest) GetRunId() int64 {
1401	if x != nil {
1402		return x.RunId
1403	}
1404	return 0
1405}
1406
1407func (x *ListAnnotationsRequest) GetAttempt() int32 {
1408	if x != nil {
1409		return x.Attempt
1410	}
1411	return 0
1412}
1413
1414func (x *ListAnnotationsRequest) GetJobId() string {
1415	if x != nil {
1416		return x.JobId
1417	}
1418	return ""
1419}
1420
1421// ListAnnotationsResponse holds the annotations of a run.
1422type ListAnnotationsResponse struct {
1423	state protoimpl.MessageState `protogen:"open.v1"`
1424	// Annotations are the annotations, at most 1,000.
1425	Annotations []*JobAnnotation `protobuf:"bytes,1,rep,name=annotations,proto3" json:"annotations,omitempty"`
1426	// Truncated is true when there are more annotations than annotations holds.
1427	Truncated     bool `protobuf:"varint,2,opt,name=truncated,proto3" json:"truncated,omitempty"`
1428	unknownFields protoimpl.UnknownFields
1429	sizeCache     protoimpl.SizeCache
1430}
1431
1432func (x *ListAnnotationsResponse) Reset() {
1433	*x = ListAnnotationsResponse{}
1434	mi := &file_ermite_run_proto_msgTypes[12]
1435	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1436	ms.StoreMessageInfo(mi)
1437}
1438
1439func (x *ListAnnotationsResponse) String() string {
1440	return protoimpl.X.MessageStringOf(x)
1441}
1442
1443func (*ListAnnotationsResponse) ProtoMessage() {}
1444
1445func (x *ListAnnotationsResponse) ProtoReflect() protoreflect.Message {
1446	mi := &file_ermite_run_proto_msgTypes[12]
1447	if x != nil {
1448		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1449		if ms.LoadMessageInfo() == nil {
1450			ms.StoreMessageInfo(mi)
1451		}
1452		return ms
1453	}
1454	return mi.MessageOf(x)
1455}
1456
1457// Deprecated: Use ListAnnotationsResponse.ProtoReflect.Descriptor instead.
1458func (*ListAnnotationsResponse) Descriptor() ([]byte, []int) {
1459	return file_ermite_run_proto_rawDescGZIP(), []int{12}
1460}
1461
1462func (x *ListAnnotationsResponse) GetAnnotations() []*JobAnnotation {
1463	if x != nil {
1464		return x.Annotations
1465	}
1466	return nil
1467}
1468
1469func (x *ListAnnotationsResponse) GetTruncated() bool {
1470	if x != nil {
1471		return x.Truncated
1472	}
1473	return false
1474}
1475
1476// JobAnnotation is an annotation with the job it belongs to.
1477type JobAnnotation struct {
1478	state protoimpl.MessageState `protogen:"open.v1"`
1479	// JobId is the RunJob.id of the job.
1480	JobId string `protobuf:"bytes,1,opt,name=job_id,json=jobId,proto3" json:"job_id,omitempty"`
1481	// Annotation is the annotation as the runner sent it, after the server
1482	// checked it. Its step_number is the step of the job.
1483	Annotation    *Annotation `protobuf:"bytes,2,opt,name=annotation,proto3" json:"annotation,omitempty"`
1484	unknownFields protoimpl.UnknownFields
1485	sizeCache     protoimpl.SizeCache
1486}
1487
1488func (x *JobAnnotation) Reset() {
1489	*x = JobAnnotation{}
1490	mi := &file_ermite_run_proto_msgTypes[13]
1491	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1492	ms.StoreMessageInfo(mi)
1493}
1494
1495func (x *JobAnnotation) String() string {
1496	return protoimpl.X.MessageStringOf(x)
1497}
1498
1499func (*JobAnnotation) ProtoMessage() {}
1500
1501func (x *JobAnnotation) ProtoReflect() protoreflect.Message {
1502	mi := &file_ermite_run_proto_msgTypes[13]
1503	if x != nil {
1504		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1505		if ms.LoadMessageInfo() == nil {
1506			ms.StoreMessageInfo(mi)
1507		}
1508		return ms
1509	}
1510	return mi.MessageOf(x)
1511}
1512
1513// Deprecated: Use JobAnnotation.ProtoReflect.Descriptor instead.
1514func (*JobAnnotation) Descriptor() ([]byte, []int) {
1515	return file_ermite_run_proto_rawDescGZIP(), []int{13}
1516}
1517
1518func (x *JobAnnotation) GetJobId() string {
1519	if x != nil {
1520		return x.JobId
1521	}
1522	return ""
1523}
1524
1525func (x *JobAnnotation) GetAnnotation() *Annotation {
1526	if x != nil {
1527		return x.Annotation
1528	}
1529	return nil
1530}
1531
1532// GetStepSummariesRequest selects a job.
1533type GetStepSummariesRequest struct {
1534	state protoimpl.MessageState `protogen:"open.v1"`
1535	// Repo is the repository name.
1536	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
1537	// JobId is the RunJob.id.
1538	JobId string `protobuf:"bytes,2,opt,name=job_id,json=jobId,proto3" json:"job_id,omitempty"`
1539	// Attempt is the RunJob.attempt to read. 0 means the latest.
1540	Attempt       int32 `protobuf:"varint,3,opt,name=attempt,proto3" json:"attempt,omitempty"`
1541	unknownFields protoimpl.UnknownFields
1542	sizeCache     protoimpl.SizeCache
1543}
1544
1545func (x *GetStepSummariesRequest) Reset() {
1546	*x = GetStepSummariesRequest{}
1547	mi := &file_ermite_run_proto_msgTypes[14]
1548	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1549	ms.StoreMessageInfo(mi)
1550}
1551
1552func (x *GetStepSummariesRequest) String() string {
1553	return protoimpl.X.MessageStringOf(x)
1554}
1555
1556func (*GetStepSummariesRequest) ProtoMessage() {}
1557
1558func (x *GetStepSummariesRequest) ProtoReflect() protoreflect.Message {
1559	mi := &file_ermite_run_proto_msgTypes[14]
1560	if x != nil {
1561		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1562		if ms.LoadMessageInfo() == nil {
1563			ms.StoreMessageInfo(mi)
1564		}
1565		return ms
1566	}
1567	return mi.MessageOf(x)
1568}
1569
1570// Deprecated: Use GetStepSummariesRequest.ProtoReflect.Descriptor instead.
1571func (*GetStepSummariesRequest) Descriptor() ([]byte, []int) {
1572	return file_ermite_run_proto_rawDescGZIP(), []int{14}
1573}
1574
1575func (x *GetStepSummariesRequest) GetRepo() string {
1576	if x != nil {
1577		return x.Repo
1578	}
1579	return ""
1580}
1581
1582func (x *GetStepSummariesRequest) GetJobId() string {
1583	if x != nil {
1584		return x.JobId
1585	}
1586	return ""
1587}
1588
1589func (x *GetStepSummariesRequest) GetAttempt() int32 {
1590	if x != nil {
1591		return x.Attempt
1592	}
1593	return 0
1594}
1595
1596// GetStepSummariesResponse holds the summaries of a job.
1597type GetStepSummariesResponse struct {
1598	state protoimpl.MessageState `protogen:"open.v1"`
1599	// Summaries are the summaries of the steps that have one, ordered by step
1600	// number: at most 20, the first 20 steps having one.
1601	Summaries []*StepSummary `protobuf:"bytes,1,rep,name=summaries,proto3" json:"summaries,omitempty"`
1602	// Truncated is true when the job has more than 20 steps with a summary and
1603	// summaries holds only the first 20.
1604	Truncated     bool `protobuf:"varint,2,opt,name=truncated,proto3" json:"truncated,omitempty"`
1605	unknownFields protoimpl.UnknownFields
1606	sizeCache     protoimpl.SizeCache
1607}
1608
1609func (x *GetStepSummariesResponse) Reset() {
1610	*x = GetStepSummariesResponse{}
1611	mi := &file_ermite_run_proto_msgTypes[15]
1612	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1613	ms.StoreMessageInfo(mi)
1614}
1615
1616func (x *GetStepSummariesResponse) String() string {
1617	return protoimpl.X.MessageStringOf(x)
1618}
1619
1620func (*GetStepSummariesResponse) ProtoMessage() {}
1621
1622func (x *GetStepSummariesResponse) ProtoReflect() protoreflect.Message {
1623	mi := &file_ermite_run_proto_msgTypes[15]
1624	if x != nil {
1625		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1626		if ms.LoadMessageInfo() == nil {
1627			ms.StoreMessageInfo(mi)
1628		}
1629		return ms
1630	}
1631	return mi.MessageOf(x)
1632}
1633
1634// Deprecated: Use GetStepSummariesResponse.ProtoReflect.Descriptor instead.
1635func (*GetStepSummariesResponse) Descriptor() ([]byte, []int) {
1636	return file_ermite_run_proto_rawDescGZIP(), []int{15}
1637}
1638
1639func (x *GetStepSummariesResponse) GetSummaries() []*StepSummary {
1640	if x != nil {
1641		return x.Summaries
1642	}
1643	return nil
1644}
1645
1646func (x *GetStepSummariesResponse) GetTruncated() bool {
1647	if x != nil {
1648		return x.Truncated
1649	}
1650	return false
1651}
1652
1653// StepSummary is the job summary of one step.
1654type StepSummary struct {
1655	state protoimpl.MessageState `protogen:"open.v1"`
1656	// StepNumber is the number of the step (see Step.number).
1657	StepNumber int32 `protobuf:"varint,1,opt,name=step_number,json=stepNumber,proto3" json:"step_number,omitempty"`
1658	// Markdown is the summary as uploaded, at most 1 MiB. Clients render it
1659	// safely: it is untrusted content (raw HTML and script URLs must not run).
1660	Markdown      string `protobuf:"bytes,2,opt,name=markdown,proto3" json:"markdown,omitempty"`
1661	unknownFields protoimpl.UnknownFields
1662	sizeCache     protoimpl.SizeCache
1663}
1664
1665func (x *StepSummary) Reset() {
1666	*x = StepSummary{}
1667	mi := &file_ermite_run_proto_msgTypes[16]
1668	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1669	ms.StoreMessageInfo(mi)
1670}
1671
1672func (x *StepSummary) String() string {
1673	return protoimpl.X.MessageStringOf(x)
1674}
1675
1676func (*StepSummary) ProtoMessage() {}
1677
1678func (x *StepSummary) ProtoReflect() protoreflect.Message {
1679	mi := &file_ermite_run_proto_msgTypes[16]
1680	if x != nil {
1681		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1682		if ms.LoadMessageInfo() == nil {
1683			ms.StoreMessageInfo(mi)
1684		}
1685		return ms
1686	}
1687	return mi.MessageOf(x)
1688}
1689
1690// Deprecated: Use StepSummary.ProtoReflect.Descriptor instead.
1691func (*StepSummary) Descriptor() ([]byte, []int) {
1692	return file_ermite_run_proto_rawDescGZIP(), []int{16}
1693}
1694
1695func (x *StepSummary) GetStepNumber() int32 {
1696	if x != nil {
1697		return x.StepNumber
1698	}
1699	return 0
1700}
1701
1702func (x *StepSummary) GetMarkdown() string {
1703	if x != nil {
1704		return x.Markdown
1705	}
1706	return ""
1707}
1708
1709// GetJobLogRequest selects the lines to stream.
1710type GetJobLogRequest struct {
1711	state protoimpl.MessageState `protogen:"open.v1"`
1712	// Repo is the repository name.
1713	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
1714	// JobId is the RunJob.id.
1715	JobId string `protobuf:"bytes,2,opt,name=job_id,json=jobId,proto3" json:"job_id,omitempty"`
1716	// Attempt is the RunJob.attempt whose log to read. 0 means the latest.
1717	Attempt int32 `protobuf:"varint,3,opt,name=attempt,proto3" json:"attempt,omitempty"`
1718	// Offset is the number of the first line to send, counted from 0 across all
1719	// steps (see Step.log_start). Negative is invalid_argument.
1720	Offset int64 `protobuf:"varint,4,opt,name=offset,proto3" json:"offset,omitempty"`
1721	// Follow keeps the stream open while the job runs. See GetJobLog.
1722	Follow        bool `protobuf:"varint,5,opt,name=follow,proto3" json:"follow,omitempty"`
1723	unknownFields protoimpl.UnknownFields
1724	sizeCache     protoimpl.SizeCache
1725}
1726
1727func (x *GetJobLogRequest) Reset() {
1728	*x = GetJobLogRequest{}
1729	mi := &file_ermite_run_proto_msgTypes[17]
1730	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1731	ms.StoreMessageInfo(mi)
1732}
1733
1734func (x *GetJobLogRequest) String() string {
1735	return protoimpl.X.MessageStringOf(x)
1736}
1737
1738func (*GetJobLogRequest) ProtoMessage() {}
1739
1740func (x *GetJobLogRequest) ProtoReflect() protoreflect.Message {
1741	mi := &file_ermite_run_proto_msgTypes[17]
1742	if x != nil {
1743		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1744		if ms.LoadMessageInfo() == nil {
1745			ms.StoreMessageInfo(mi)
1746		}
1747		return ms
1748	}
1749	return mi.MessageOf(x)
1750}
1751
1752// Deprecated: Use GetJobLogRequest.ProtoReflect.Descriptor instead.
1753func (*GetJobLogRequest) Descriptor() ([]byte, []int) {
1754	return file_ermite_run_proto_rawDescGZIP(), []int{17}
1755}
1756
1757func (x *GetJobLogRequest) GetRepo() string {
1758	if x != nil {
1759		return x.Repo
1760	}
1761	return ""
1762}
1763
1764func (x *GetJobLogRequest) GetJobId() string {
1765	if x != nil {
1766		return x.JobId
1767	}
1768	return ""
1769}
1770
1771func (x *GetJobLogRequest) GetAttempt() int32 {
1772	if x != nil {
1773		return x.Attempt
1774	}
1775	return 0
1776}
1777
1778func (x *GetJobLogRequest) GetOffset() int64 {
1779	if x != nil {
1780		return x.Offset
1781	}
1782	return 0
1783}
1784
1785func (x *GetJobLogRequest) GetFollow() bool {
1786	if x != nil {
1787		return x.Follow
1788	}
1789	return false
1790}
1791
1792// GetJobLogResponse is one message of the log stream.
1793type GetJobLogResponse struct {
1794	state protoimpl.MessageState `protogen:"open.v1"`
1795	// Offset is the number of the first line of lines.
1796	Offset int64 `protobuf:"varint,1,opt,name=offset,proto3" json:"offset,omitempty"`
1797	// Lines are consecutive lines of the log, at most 1,000, at most 64 KiB of
1798	// text in total. Never empty.
1799	Lines         []*JobLogLine `protobuf:"bytes,2,rep,name=lines,proto3" json:"lines,omitempty"`
1800	unknownFields protoimpl.UnknownFields
1801	sizeCache     protoimpl.SizeCache
1802}
1803
1804func (x *GetJobLogResponse) Reset() {
1805	*x = GetJobLogResponse{}
1806	mi := &file_ermite_run_proto_msgTypes[18]
1807	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1808	ms.StoreMessageInfo(mi)
1809}
1810
1811func (x *GetJobLogResponse) String() string {
1812	return protoimpl.X.MessageStringOf(x)
1813}
1814
1815func (*GetJobLogResponse) ProtoMessage() {}
1816
1817func (x *GetJobLogResponse) ProtoReflect() protoreflect.Message {
1818	mi := &file_ermite_run_proto_msgTypes[18]
1819	if x != nil {
1820		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1821		if ms.LoadMessageInfo() == nil {
1822			ms.StoreMessageInfo(mi)
1823		}
1824		return ms
1825	}
1826	return mi.MessageOf(x)
1827}
1828
1829// Deprecated: Use GetJobLogResponse.ProtoReflect.Descriptor instead.
1830func (*GetJobLogResponse) Descriptor() ([]byte, []int) {
1831	return file_ermite_run_proto_rawDescGZIP(), []int{18}
1832}
1833
1834func (x *GetJobLogResponse) GetOffset() int64 {
1835	if x != nil {
1836		return x.Offset
1837	}
1838	return 0
1839}
1840
1841func (x *GetJobLogResponse) GetLines() []*JobLogLine {
1842	if x != nil {
1843		return x.Lines
1844	}
1845	return nil
1846}
1847
1848// JobLogLine is one line of a job log, as the runner sent it.
1849type JobLogLine struct {
1850	state protoimpl.MessageState `protogen:"open.v1"`
1851	// Step is the number of the step the line belongs to.
1852	Step int32 `protobuf:"varint,1,opt,name=step,proto3" json:"step,omitempty"`
1853	// Time is when the runner produced the line, with nanosecond precision.
1854	Time *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=time,proto3" json:"time,omitempty"`
1855	// Text is the line without its terminator, as in LogLine.text, including the
1856	// "##[group]" and "##[endgroup]" markers. Clients show it escaped.
1857	Text string `protobuf:"bytes,3,opt,name=text,proto3" json:"text,omitempty"`
1858	// Continued is true when the line continues the line before it, which was
1859	// too long for the runner to send whole (see LogLine.continued). Pieces keep
1860	// their own line numbers, so offsets are the same as the runner's; a client
1861	// that shows lines joins a continued line to the previous one. The raw log
1862	// file already has them joined.
1863	Continued     bool `protobuf:"varint,4,opt,name=continued,proto3" json:"continued,omitempty"`
1864	unknownFields protoimpl.UnknownFields
1865	sizeCache     protoimpl.SizeCache
1866}
1867
1868func (x *JobLogLine) Reset() {
1869	*x = JobLogLine{}
1870	mi := &file_ermite_run_proto_msgTypes[19]
1871	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1872	ms.StoreMessageInfo(mi)
1873}
1874
1875func (x *JobLogLine) String() string {
1876	return protoimpl.X.MessageStringOf(x)
1877}
1878
1879func (*JobLogLine) ProtoMessage() {}
1880
1881func (x *JobLogLine) ProtoReflect() protoreflect.Message {
1882	mi := &file_ermite_run_proto_msgTypes[19]
1883	if x != nil {
1884		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1885		if ms.LoadMessageInfo() == nil {
1886			ms.StoreMessageInfo(mi)
1887		}
1888		return ms
1889	}
1890	return mi.MessageOf(x)
1891}
1892
1893// Deprecated: Use JobLogLine.ProtoReflect.Descriptor instead.
1894func (*JobLogLine) Descriptor() ([]byte, []int) {
1895	return file_ermite_run_proto_rawDescGZIP(), []int{19}
1896}
1897
1898func (x *JobLogLine) GetStep() int32 {
1899	if x != nil {
1900		return x.Step
1901	}
1902	return 0
1903}
1904
1905func (x *JobLogLine) GetTime() *timestamppb.Timestamp {
1906	if x != nil {
1907		return x.Time
1908	}
1909	return nil
1910}
1911
1912func (x *JobLogLine) GetText() string {
1913	if x != nil {
1914		return x.Text
1915	}
1916	return ""
1917}
1918
1919func (x *JobLogLine) GetContinued() bool {
1920	if x != nil {
1921		return x.Continued
1922	}
1923	return false
1924}
1925
1926// CancelRunRequest names the run to cancel.
1927type CancelRunRequest struct {
1928	state protoimpl.MessageState `protogen:"open.v1"`
1929	// Repo is the repository name.
1930	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
1931	// RunId is the Run.id.
1932	RunId         int64 `protobuf:"varint,2,opt,name=run_id,json=runId,proto3" json:"run_id,omitempty"`
1933	unknownFields protoimpl.UnknownFields
1934	sizeCache     protoimpl.SizeCache
1935}
1936
1937func (x *CancelRunRequest) Reset() {
1938	*x = CancelRunRequest{}
1939	mi := &file_ermite_run_proto_msgTypes[20]
1940	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1941	ms.StoreMessageInfo(mi)
1942}
1943
1944func (x *CancelRunRequest) String() string {
1945	return protoimpl.X.MessageStringOf(x)
1946}
1947
1948func (*CancelRunRequest) ProtoMessage() {}
1949
1950func (x *CancelRunRequest) ProtoReflect() protoreflect.Message {
1951	mi := &file_ermite_run_proto_msgTypes[20]
1952	if x != nil {
1953		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1954		if ms.LoadMessageInfo() == nil {
1955			ms.StoreMessageInfo(mi)
1956		}
1957		return ms
1958	}
1959	return mi.MessageOf(x)
1960}
1961
1962// Deprecated: Use CancelRunRequest.ProtoReflect.Descriptor instead.
1963func (*CancelRunRequest) Descriptor() ([]byte, []int) {
1964	return file_ermite_run_proto_rawDescGZIP(), []int{20}
1965}
1966
1967func (x *CancelRunRequest) GetRepo() string {
1968	if x != nil {
1969		return x.Repo
1970	}
1971	return ""
1972}
1973
1974func (x *CancelRunRequest) GetRunId() int64 {
1975	if x != nil {
1976		return x.RunId
1977	}
1978	return 0
1979}
1980
1981// CancelRunResponse holds the run after the request.
1982type CancelRunResponse struct {
1983	state protoimpl.MessageState `protogen:"open.v1"`
1984	// Run is the latest attempt of the run.
1985	Run           *Run `protobuf:"bytes,1,opt,name=run,proto3" json:"run,omitempty"`
1986	unknownFields protoimpl.UnknownFields
1987	sizeCache     protoimpl.SizeCache
1988}
1989
1990func (x *CancelRunResponse) Reset() {
1991	*x = CancelRunResponse{}
1992	mi := &file_ermite_run_proto_msgTypes[21]
1993	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1994	ms.StoreMessageInfo(mi)
1995}
1996
1997func (x *CancelRunResponse) String() string {
1998	return protoimpl.X.MessageStringOf(x)
1999}
2000
2001func (*CancelRunResponse) ProtoMessage() {}
2002
2003func (x *CancelRunResponse) ProtoReflect() protoreflect.Message {
2004	mi := &file_ermite_run_proto_msgTypes[21]
2005	if x != nil {
2006		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2007		if ms.LoadMessageInfo() == nil {
2008			ms.StoreMessageInfo(mi)
2009		}
2010		return ms
2011	}
2012	return mi.MessageOf(x)
2013}
2014
2015// Deprecated: Use CancelRunResponse.ProtoReflect.Descriptor instead.
2016func (*CancelRunResponse) Descriptor() ([]byte, []int) {
2017	return file_ermite_run_proto_rawDescGZIP(), []int{21}
2018}
2019
2020func (x *CancelRunResponse) GetRun() *Run {
2021	if x != nil {
2022		return x.Run
2023	}
2024	return nil
2025}
2026
2027// RerunRunRequest names the run to run again.
2028type RerunRunRequest struct {
2029	state protoimpl.MessageState `protogen:"open.v1"`
2030	// Repo is the repository name.
2031	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
2032	// RunId is the Run.id.
2033	RunId int64 `protobuf:"varint,2,opt,name=run_id,json=runId,proto3" json:"run_id,omitempty"`
2034	// FailedOnly runs again only the jobs of the latest attempt that did not
2035	// succeed (conclusion FAILURE, CANCELLED, TIMED_OUT or ACTION_REQUIRED) and
2036	// the jobs that need them, directly or not, even if they were skipped. The
2037	// other jobs keep their result, steps and log from the earlier attempt. When
2038	// false, every job runs again.
2039	FailedOnly    bool `protobuf:"varint,3,opt,name=failed_only,json=failedOnly,proto3" json:"failed_only,omitempty"`
2040	unknownFields protoimpl.UnknownFields
2041	sizeCache     protoimpl.SizeCache
2042}
2043
2044func (x *RerunRunRequest) Reset() {
2045	*x = RerunRunRequest{}
2046	mi := &file_ermite_run_proto_msgTypes[22]
2047	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2048	ms.StoreMessageInfo(mi)
2049}
2050
2051func (x *RerunRunRequest) String() string {
2052	return protoimpl.X.MessageStringOf(x)
2053}
2054
2055func (*RerunRunRequest) ProtoMessage() {}
2056
2057func (x *RerunRunRequest) ProtoReflect() protoreflect.Message {
2058	mi := &file_ermite_run_proto_msgTypes[22]
2059	if x != nil {
2060		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2061		if ms.LoadMessageInfo() == nil {
2062			ms.StoreMessageInfo(mi)
2063		}
2064		return ms
2065	}
2066	return mi.MessageOf(x)
2067}
2068
2069// Deprecated: Use RerunRunRequest.ProtoReflect.Descriptor instead.
2070func (*RerunRunRequest) Descriptor() ([]byte, []int) {
2071	return file_ermite_run_proto_rawDescGZIP(), []int{22}
2072}
2073
2074func (x *RerunRunRequest) GetRepo() string {
2075	if x != nil {
2076		return x.Repo
2077	}
2078	return ""
2079}
2080
2081func (x *RerunRunRequest) GetRunId() int64 {
2082	if x != nil {
2083		return x.RunId
2084	}
2085	return 0
2086}
2087
2088func (x *RerunRunRequest) GetFailedOnly() bool {
2089	if x != nil {
2090		return x.FailedOnly
2091	}
2092	return false
2093}
2094
2095// RerunRunResponse holds the new attempt.
2096type RerunRunResponse struct {
2097	state protoimpl.MessageState `protogen:"open.v1"`
2098	// Run is the run as of the new attempt, QUEUED.
2099	Run           *Run `protobuf:"bytes,1,opt,name=run,proto3" json:"run,omitempty"`
2100	unknownFields protoimpl.UnknownFields
2101	sizeCache     protoimpl.SizeCache
2102}
2103
2104func (x *RerunRunResponse) Reset() {
2105	*x = RerunRunResponse{}
2106	mi := &file_ermite_run_proto_msgTypes[23]
2107	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2108	ms.StoreMessageInfo(mi)
2109}
2110
2111func (x *RerunRunResponse) String() string {
2112	return protoimpl.X.MessageStringOf(x)
2113}
2114
2115func (*RerunRunResponse) ProtoMessage() {}
2116
2117func (x *RerunRunResponse) ProtoReflect() protoreflect.Message {
2118	mi := &file_ermite_run_proto_msgTypes[23]
2119	if x != nil {
2120		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2121		if ms.LoadMessageInfo() == nil {
2122			ms.StoreMessageInfo(mi)
2123		}
2124		return ms
2125	}
2126	return mi.MessageOf(x)
2127}
2128
2129// Deprecated: Use RerunRunResponse.ProtoReflect.Descriptor instead.
2130func (*RerunRunResponse) Descriptor() ([]byte, []int) {
2131	return file_ermite_run_proto_rawDescGZIP(), []int{23}
2132}
2133
2134func (x *RerunRunResponse) GetRun() *Run {
2135	if x != nil {
2136		return x.Run
2137	}
2138	return nil
2139}
2140
2141// DispatchWorkflowRequest names the workflow to run and its inputs.
2142type DispatchWorkflowRequest struct {
2143	state protoimpl.MessageState `protogen:"open.v1"`
2144	// Repo is the repository name.
2145	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
2146	// WorkflowPath is the path of the workflow file at ref, for example
2147	// ".github/workflows/ci.yml", or its file name ("ci.yml").
2148	WorkflowPath string `protobuf:"bytes,2,opt,name=workflow_path,json=workflowPath,proto3" json:"workflow_path,omitempty"`
2149	// Ref is the branch or tag to run on, by short name ("main") or full name
2150	// ("refs/heads/main"). Empty means the default branch of the repository.
2151	Ref string `protobuf:"bytes,3,opt,name=ref,proto3" json:"ref,omitempty"`
2152	// Inputs are the values of the "inputs" of the workflow's
2153	// "workflow_dispatch" by name, as strings: a boolean is "true" or "false", a
2154	// number its decimal text. An input left out takes its default.
2155	Inputs        map[string]string `protobuf:"bytes,4,rep,name=inputs,proto3" json:"inputs,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
2156	unknownFields protoimpl.UnknownFields
2157	sizeCache     protoimpl.SizeCache
2158}
2159
2160func (x *DispatchWorkflowRequest) Reset() {
2161	*x = DispatchWorkflowRequest{}
2162	mi := &file_ermite_run_proto_msgTypes[24]
2163	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2164	ms.StoreMessageInfo(mi)
2165}
2166
2167func (x *DispatchWorkflowRequest) String() string {
2168	return protoimpl.X.MessageStringOf(x)
2169}
2170
2171func (*DispatchWorkflowRequest) ProtoMessage() {}
2172
2173func (x *DispatchWorkflowRequest) ProtoReflect() protoreflect.Message {
2174	mi := &file_ermite_run_proto_msgTypes[24]
2175	if x != nil {
2176		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2177		if ms.LoadMessageInfo() == nil {
2178			ms.StoreMessageInfo(mi)
2179		}
2180		return ms
2181	}
2182	return mi.MessageOf(x)
2183}
2184
2185// Deprecated: Use DispatchWorkflowRequest.ProtoReflect.Descriptor instead.
2186func (*DispatchWorkflowRequest) Descriptor() ([]byte, []int) {
2187	return file_ermite_run_proto_rawDescGZIP(), []int{24}
2188}
2189
2190func (x *DispatchWorkflowRequest) GetRepo() string {
2191	if x != nil {
2192		return x.Repo
2193	}
2194	return ""
2195}
2196
2197func (x *DispatchWorkflowRequest) GetWorkflowPath() string {
2198	if x != nil {
2199		return x.WorkflowPath
2200	}
2201	return ""
2202}
2203
2204func (x *DispatchWorkflowRequest) GetRef() string {
2205	if x != nil {
2206		return x.Ref
2207	}
2208	return ""
2209}
2210
2211func (x *DispatchWorkflowRequest) GetInputs() map[string]string {
2212	if x != nil {
2213		return x.Inputs
2214	}
2215	return nil
2216}
2217
2218// DispatchWorkflowResponse holds the new run.
2219type DispatchWorkflowResponse struct {
2220	state protoimpl.MessageState `protogen:"open.v1"`
2221	// Run is the new run, QUEUED, attempt 1.
2222	Run           *Run `protobuf:"bytes,1,opt,name=run,proto3" json:"run,omitempty"`
2223	unknownFields protoimpl.UnknownFields
2224	sizeCache     protoimpl.SizeCache
2225}
2226
2227func (x *DispatchWorkflowResponse) Reset() {
2228	*x = DispatchWorkflowResponse{}
2229	mi := &file_ermite_run_proto_msgTypes[25]
2230	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2231	ms.StoreMessageInfo(mi)
2232}
2233
2234func (x *DispatchWorkflowResponse) String() string {
2235	return protoimpl.X.MessageStringOf(x)
2236}
2237
2238func (*DispatchWorkflowResponse) ProtoMessage() {}
2239
2240func (x *DispatchWorkflowResponse) ProtoReflect() protoreflect.Message {
2241	mi := &file_ermite_run_proto_msgTypes[25]
2242	if x != nil {
2243		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2244		if ms.LoadMessageInfo() == nil {
2245			ms.StoreMessageInfo(mi)
2246		}
2247		return ms
2248	}
2249	return mi.MessageOf(x)
2250}
2251
2252// Deprecated: Use DispatchWorkflowResponse.ProtoReflect.Descriptor instead.
2253func (*DispatchWorkflowResponse) Descriptor() ([]byte, []int) {
2254	return file_ermite_run_proto_rawDescGZIP(), []int{25}
2255}
2256
2257func (x *DispatchWorkflowResponse) GetRun() *Run {
2258	if x != nil {
2259		return x.Run
2260	}
2261	return nil
2262}
2263
2264// ListChecksRequest names the commit.
2265type ListChecksRequest struct {
2266	state protoimpl.MessageState `protogen:"open.v1"`
2267	// Repo is the repository name.
2268	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
2269	// Sha is the full commit id (40 lowercase hexadecimal characters for SHA-1).
2270	// Abbreviations and names are invalid_argument.
2271	Sha           string `protobuf:"bytes,2,opt,name=sha,proto3" json:"sha,omitempty"`
2272	unknownFields protoimpl.UnknownFields
2273	sizeCache     protoimpl.SizeCache
2274}
2275
2276func (x *ListChecksRequest) Reset() {
2277	*x = ListChecksRequest{}
2278	mi := &file_ermite_run_proto_msgTypes[26]
2279	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2280	ms.StoreMessageInfo(mi)
2281}
2282
2283func (x *ListChecksRequest) String() string {
2284	return protoimpl.X.MessageStringOf(x)
2285}
2286
2287func (*ListChecksRequest) ProtoMessage() {}
2288
2289func (x *ListChecksRequest) ProtoReflect() protoreflect.Message {
2290	mi := &file_ermite_run_proto_msgTypes[26]
2291	if x != nil {
2292		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2293		if ms.LoadMessageInfo() == nil {
2294			ms.StoreMessageInfo(mi)
2295		}
2296		return ms
2297	}
2298	return mi.MessageOf(x)
2299}
2300
2301// Deprecated: Use ListChecksRequest.ProtoReflect.Descriptor instead.
2302func (*ListChecksRequest) Descriptor() ([]byte, []int) {
2303	return file_ermite_run_proto_rawDescGZIP(), []int{26}
2304}
2305
2306func (x *ListChecksRequest) GetRepo() string {
2307	if x != nil {
2308		return x.Repo
2309	}
2310	return ""
2311}
2312
2313func (x *ListChecksRequest) GetSha() string {
2314	if x != nil {
2315		return x.Sha
2316	}
2317	return ""
2318}
2319
2320// ListChecksResponse holds the checks of a commit.
2321type ListChecksResponse struct {
2322	state protoimpl.MessageState `protogen:"open.v1"`
2323	// Checks are the checks of the commit, one per job of the latest attempt of
2324	// each run, ordered by creation time then name.
2325	Checks []*Check `protobuf:"bytes,1,rep,name=checks,proto3" json:"checks,omitempty"`
2326	// Truncated is true when the commit has more checks than checks holds.
2327	Truncated     bool `protobuf:"varint,2,opt,name=truncated,proto3" json:"truncated,omitempty"`
2328	unknownFields protoimpl.UnknownFields
2329	sizeCache     protoimpl.SizeCache
2330}
2331
2332func (x *ListChecksResponse) Reset() {
2333	*x = ListChecksResponse{}
2334	mi := &file_ermite_run_proto_msgTypes[27]
2335	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2336	ms.StoreMessageInfo(mi)
2337}
2338
2339func (x *ListChecksResponse) String() string {
2340	return protoimpl.X.MessageStringOf(x)
2341}
2342
2343func (*ListChecksResponse) ProtoMessage() {}
2344
2345func (x *ListChecksResponse) ProtoReflect() protoreflect.Message {
2346	mi := &file_ermite_run_proto_msgTypes[27]
2347	if x != nil {
2348		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2349		if ms.LoadMessageInfo() == nil {
2350			ms.StoreMessageInfo(mi)
2351		}
2352		return ms
2353	}
2354	return mi.MessageOf(x)
2355}
2356
2357// Deprecated: Use ListChecksResponse.ProtoReflect.Descriptor instead.
2358func (*ListChecksResponse) Descriptor() ([]byte, []int) {
2359	return file_ermite_run_proto_rawDescGZIP(), []int{27}
2360}
2361
2362func (x *ListChecksResponse) GetChecks() []*Check {
2363	if x != nil {
2364		return x.Checks
2365	}
2366	return nil
2367}
2368
2369func (x *ListChecksResponse) GetTruncated() bool {
2370	if x != nil {
2371		return x.Truncated
2372	}
2373	return false
2374}
2375
2376// ListRunnersRequest selects a page of runners.
2377type ListRunnersRequest struct {
2378	state protoimpl.MessageState `protogen:"open.v1"`
2379	// PageSize is the maximum number of runners to return.
2380	PageSize int32 `protobuf:"varint,1,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
2381	// PageToken is the next_page_token of a previous response. Empty for the
2382	// first page.
2383	PageToken     string `protobuf:"bytes,2,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
2384	unknownFields protoimpl.UnknownFields
2385	sizeCache     protoimpl.SizeCache
2386}
2387
2388func (x *ListRunnersRequest) Reset() {
2389	*x = ListRunnersRequest{}
2390	mi := &file_ermite_run_proto_msgTypes[28]
2391	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2392	ms.StoreMessageInfo(mi)
2393}
2394
2395func (x *ListRunnersRequest) String() string {
2396	return protoimpl.X.MessageStringOf(x)
2397}
2398
2399func (*ListRunnersRequest) ProtoMessage() {}
2400
2401func (x *ListRunnersRequest) ProtoReflect() protoreflect.Message {
2402	mi := &file_ermite_run_proto_msgTypes[28]
2403	if x != nil {
2404		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2405		if ms.LoadMessageInfo() == nil {
2406			ms.StoreMessageInfo(mi)
2407		}
2408		return ms
2409	}
2410	return mi.MessageOf(x)
2411}
2412
2413// Deprecated: Use ListRunnersRequest.ProtoReflect.Descriptor instead.
2414func (*ListRunnersRequest) Descriptor() ([]byte, []int) {
2415	return file_ermite_run_proto_rawDescGZIP(), []int{28}
2416}
2417
2418func (x *ListRunnersRequest) GetPageSize() int32 {
2419	if x != nil {
2420		return x.PageSize
2421	}
2422	return 0
2423}
2424
2425func (x *ListRunnersRequest) GetPageToken() string {
2426	if x != nil {
2427		return x.PageToken
2428	}
2429	return ""
2430}
2431
2432// ListRunnersResponse is one page of runners.
2433type ListRunnersResponse struct {
2434	state protoimpl.MessageState `protogen:"open.v1"`
2435	// Runners are the runners of this page, ordered by name.
2436	Runners []*Runner `protobuf:"bytes,1,rep,name=runners,proto3" json:"runners,omitempty"`
2437	// NextPageToken is passed as page_token to get the next page. Empty when
2438	// there is no next page.
2439	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
2440	unknownFields protoimpl.UnknownFields
2441	sizeCache     protoimpl.SizeCache
2442}
2443
2444func (x *ListRunnersResponse) Reset() {
2445	*x = ListRunnersResponse{}
2446	mi := &file_ermite_run_proto_msgTypes[29]
2447	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2448	ms.StoreMessageInfo(mi)
2449}
2450
2451func (x *ListRunnersResponse) String() string {
2452	return protoimpl.X.MessageStringOf(x)
2453}
2454
2455func (*ListRunnersResponse) ProtoMessage() {}
2456
2457func (x *ListRunnersResponse) ProtoReflect() protoreflect.Message {
2458	mi := &file_ermite_run_proto_msgTypes[29]
2459	if x != nil {
2460		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2461		if ms.LoadMessageInfo() == nil {
2462			ms.StoreMessageInfo(mi)
2463		}
2464		return ms
2465	}
2466	return mi.MessageOf(x)
2467}
2468
2469// Deprecated: Use ListRunnersResponse.ProtoReflect.Descriptor instead.
2470func (*ListRunnersResponse) Descriptor() ([]byte, []int) {
2471	return file_ermite_run_proto_rawDescGZIP(), []int{29}
2472}
2473
2474func (x *ListRunnersResponse) GetRunners() []*Runner {
2475	if x != nil {
2476		return x.Runners
2477	}
2478	return nil
2479}
2480
2481func (x *ListRunnersResponse) GetNextPageToken() string {
2482	if x != nil {
2483		return x.NextPageToken
2484	}
2485	return ""
2486}
2487
2488// RemoveRunnerRequest names the runner to remove.
2489type RemoveRunnerRequest struct {
2490	state protoimpl.MessageState `protogen:"open.v1"`
2491	// RunnerId is the Runner.id.
2492	RunnerId      string `protobuf:"bytes,1,opt,name=runner_id,json=runnerId,proto3" json:"runner_id,omitempty"`
2493	unknownFields protoimpl.UnknownFields
2494	sizeCache     protoimpl.SizeCache
2495}
2496
2497func (x *RemoveRunnerRequest) Reset() {
2498	*x = RemoveRunnerRequest{}
2499	mi := &file_ermite_run_proto_msgTypes[30]
2500	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2501	ms.StoreMessageInfo(mi)
2502}
2503
2504func (x *RemoveRunnerRequest) String() string {
2505	return protoimpl.X.MessageStringOf(x)
2506}
2507
2508func (*RemoveRunnerRequest) ProtoMessage() {}
2509
2510func (x *RemoveRunnerRequest) ProtoReflect() protoreflect.Message {
2511	mi := &file_ermite_run_proto_msgTypes[30]
2512	if x != nil {
2513		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2514		if ms.LoadMessageInfo() == nil {
2515			ms.StoreMessageInfo(mi)
2516		}
2517		return ms
2518	}
2519	return mi.MessageOf(x)
2520}
2521
2522// Deprecated: Use RemoveRunnerRequest.ProtoReflect.Descriptor instead.
2523func (*RemoveRunnerRequest) Descriptor() ([]byte, []int) {
2524	return file_ermite_run_proto_rawDescGZIP(), []int{30}
2525}
2526
2527func (x *RemoveRunnerRequest) GetRunnerId() string {
2528	if x != nil {
2529		return x.RunnerId
2530	}
2531	return ""
2532}
2533
2534// RemoveRunnerResponse is empty.
2535type RemoveRunnerResponse struct {
2536	state         protoimpl.MessageState `protogen:"open.v1"`
2537	unknownFields protoimpl.UnknownFields
2538	sizeCache     protoimpl.SizeCache
2539}
2540
2541func (x *RemoveRunnerResponse) Reset() {
2542	*x = RemoveRunnerResponse{}
2543	mi := &file_ermite_run_proto_msgTypes[31]
2544	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2545	ms.StoreMessageInfo(mi)
2546}
2547
2548func (x *RemoveRunnerResponse) String() string {
2549	return protoimpl.X.MessageStringOf(x)
2550}
2551
2552func (*RemoveRunnerResponse) ProtoMessage() {}
2553
2554func (x *RemoveRunnerResponse) ProtoReflect() protoreflect.Message {
2555	mi := &file_ermite_run_proto_msgTypes[31]
2556	if x != nil {
2557		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2558		if ms.LoadMessageInfo() == nil {
2559			ms.StoreMessageInfo(mi)
2560		}
2561		return ms
2562	}
2563	return mi.MessageOf(x)
2564}
2565
2566// Deprecated: Use RemoveRunnerResponse.ProtoReflect.Descriptor instead.
2567func (*RemoveRunnerResponse) Descriptor() ([]byte, []int) {
2568	return file_ermite_run_proto_rawDescGZIP(), []int{31}
2569}
2570
2571var File_ermite_run_proto protoreflect.FileDescriptor
2572
2573const file_ermite_run_proto_rawDesc = "" +
2574	"\n" +
2575	"\x10ermite/run.proto\x12\x06ermite\x1a\x13ermite/runner.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xfe\x04\n" +
2576	"\x03Run\x12\x12\n" +
2577	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x0e\n" +
2578	"\x02id\x18\x02 \x01(\x03R\x02id\x12\x16\n" +
2579	"\x06number\x18\x03 \x01(\x03R\x06number\x12\x18\n" +
2580	"\aattempt\x18\x04 \x01(\x05R\aattempt\x12#\n" +
2581	"\rworkflow_path\x18\x05 \x01(\tR\fworkflowPath\x12#\n" +
2582	"\rworkflow_name\x18\x06 \x01(\tR\fworkflowName\x12\x14\n" +
2583	"\x05title\x18\a \x01(\tR\x05title\x12\x14\n" +
2584	"\x05event\x18\b \x01(\tR\x05event\x12\x10\n" +
2585	"\x03ref\x18\t \x01(\tR\x03ref\x12\x10\n" +
2586	"\x03sha\x18\n" +
2587	" \x01(\tR\x03sha\x12\x14\n" +
2588	"\x05actor\x18\v \x01(\tR\x05actor\x12(\n" +
2589	"\x06status\x18\f \x01(\x0e2\x10.ermite.CiStatusR\x06status\x124\n" +
2590	"\n" +
2591	"conclusion\x18\r \x01(\x0e2\x14.ermite.CiConclusionR\n" +
2592	"conclusion\x12\x14\n" +
2593	"\x05error\x18\x0e \x01(\tR\x05error\x129\n" +
2594	"\n" +
2595	"created_at\x18\x0f \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x129\n" +
2596	"\n" +
2597	"started_at\x18\x10 \x01(\v2\x1a.google.protobuf.TimestampR\tstartedAt\x12=\n" +
2598	"\fcompleted_at\x18\x11 \x01(\v2\x1a.google.protobuf.TimestampR\vcompletedAt\x12\x18\n" +
2599	"\aversion\x18\x12 \x01(\x03R\aversion\x12\x12\n" +
2600	"\x04name\x18\x13 \x01(\tR\x04name\x12\x18\n" +
2601	"\atrusted\x18\x14 \x01(\bR\atrusted\"\xbc\x05\n" +
2602	"\x06RunJob\x12\x0e\n" +
2603	"\x02id\x18\x01 \x01(\tR\x02id\x12\x15\n" +
2604	"\x06run_id\x18\x02 \x01(\x03R\x05runId\x12\x18\n" +
2605	"\aattempt\x18\x03 \x01(\x05R\aattempt\x12\x12\n" +
2606	"\x04repo\x18\x04 \x01(\tR\x04repo\x12\x10\n" +
2607	"\x03key\x18\x05 \x01(\tR\x03key\x12\x12\n" +
2608	"\x04name\x18\x06 \x01(\tR\x04name\x12(\n" +
2609	"\x06status\x18\a \x01(\x0e2\x10.ermite.CiStatusR\x06status\x124\n" +
2610	"\n" +
2611	"conclusion\x18\b \x01(\x0e2\x14.ermite.CiConclusionR\n" +
2612	"conclusion\x12\x14\n" +
2613	"\x05error\x18\t \x01(\tR\x05error\x12\x16\n" +
2614	"\x06labels\x18\n" +
2615	" \x03(\tR\x06labels\x12\x14\n" +
2616	"\x05needs\x18\v \x03(\tR\x05needs\x12\x1b\n" +
2617	"\trunner_id\x18\f \x01(\tR\brunnerId\x12\x1f\n" +
2618	"\vrunner_name\x18\r \x01(\tR\n" +
2619	"runnerName\x125\n" +
2620	"\tisolation\x18\x0e \x01(\x0e2\x17.ermite.RunnerIsolationR\tisolation\x12\"\n" +
2621	"\x05steps\x18\x0f \x03(\v2\f.ermite.StepR\x05steps\x129\n" +
2622	"\n" +
2623	"created_at\x18\x10 \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x129\n" +
2624	"\n" +
2625	"started_at\x18\x11 \x01(\v2\x1a.google.protobuf.TimestampR\tstartedAt\x12=\n" +
2626	"\fcompleted_at\x18\x12 \x01(\v2\x1a.google.protobuf.TimestampR\vcompletedAt\x12\x18\n" +
2627	"\aversion\x18\x13 \x01(\x03R\aversion\x12+\n" +
2628	"\x11concurrency_group\x18\x14 \x01(\tR\x10concurrencyGroup\"\xf1\x02\n" +
2629	"\x04Step\x12\x16\n" +
2630	"\x06number\x18\x01 \x01(\x05R\x06number\x12\x12\n" +
2631	"\x04name\x18\x02 \x01(\tR\x04name\x12'\n" +
2632	"\x05state\x18\x03 \x01(\x0e2\x11.ermite.StepStateR\x05state\x124\n" +
2633	"\n" +
2634	"conclusion\x18\x04 \x01(\x0e2\x14.ermite.CiConclusionR\n" +
2635	"conclusion\x129\n" +
2636	"\n" +
2637	"started_at\x18\x05 \x01(\v2\x1a.google.protobuf.TimestampR\tstartedAt\x12=\n" +
2638	"\fcompleted_at\x18\x06 \x01(\v2\x1a.google.protobuf.TimestampR\vcompletedAt\x12\x1b\n" +
2639	"\tlog_start\x18\a \x01(\x03R\blogStart\x12\x17\n" +
2640	"\alog_end\x18\b \x01(\x03R\x06logEnd\x12.\n" +
2641	"\aoutcome\x18\t \x01(\x0e2\x14.ermite.CiConclusionR\aoutcome\"\x98\x03\n" +
2642	"\x05Check\x12\x0e\n" +
2643	"\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" +
2644	"\x04repo\x18\x02 \x01(\tR\x04repo\x12\x10\n" +
2645	"\x03sha\x18\x03 \x01(\tR\x03sha\x12\x12\n" +
2646	"\x04name\x18\x04 \x01(\tR\x04name\x12(\n" +
2647	"\x06status\x18\x05 \x01(\x0e2\x10.ermite.CiStatusR\x06status\x124\n" +
2648	"\n" +
2649	"conclusion\x18\x06 \x01(\x0e2\x14.ermite.CiConclusionR\n" +
2650	"conclusion\x12\x15\n" +
2651	"\x06run_id\x18\a \x01(\x03R\x05runId\x12\x15\n" +
2652	"\x06job_id\x18\b \x01(\tR\x05jobId\x12\x18\n" +
2653	"\aattempt\x18\t \x01(\x05R\aattempt\x12#\n" +
2654	"\rworkflow_name\x18\n" +
2655	" \x01(\tR\fworkflowName\x129\n" +
2656	"\n" +
2657	"started_at\x18\v \x01(\v2\x1a.google.protobuf.TimestampR\tstartedAt\x12=\n" +
2658	"\fcompleted_at\x18\f \x01(\v2\x1a.google.protobuf.TimestampR\vcompletedAt\"\xdf\x02\n" +
2659	"\x06Runner\x12\x0e\n" +
2660	"\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" +
2661	"\x04name\x18\x02 \x01(\tR\x04name\x12\x16\n" +
2662	"\x06labels\x18\x03 \x03(\tR\x06labels\x125\n" +
2663	"\tisolation\x18\x04 \x01(\x0e2\x17.ermite.RunnerIsolationR\tisolation\x12\x18\n" +
2664	"\aversion\x18\x05 \x01(\tR\aversion\x12\x12\n" +
2665	"\x04arch\x18\x06 \x01(\tR\x04arch\x12\x0e\n" +
2666	"\x02os\x18\a \x01(\tR\x02os\x12?\n" +
2667	"\rregistered_at\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\fregisteredAt\x127\n" +
2668	"\tlast_seen\x18\t \x01(\v2\x1a.google.protobuf.TimestampR\blastSeen\x12\x12\n" +
2669	"\x04busy\x18\n" +
2670	" \x01(\bR\x04busy\x12\x16\n" +
2671	"\x06online\x18\v \x01(\bR\x06online\"\xbf\x01\n" +
2672	"\x0fListRunsRequest\x12\x12\n" +
2673	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x1b\n" +
2674	"\tpage_size\x18\x02 \x01(\x05R\bpageSize\x12\x1d\n" +
2675	"\n" +
2676	"page_token\x18\x03 \x01(\tR\tpageToken\x12\x1a\n" +
2677	"\bworkflow\x18\x04 \x01(\tR\bworkflow\x12\x16\n" +
2678	"\x06branch\x18\x05 \x01(\tR\x06branch\x12(\n" +
2679	"\x06status\x18\x06 \x01(\x0e2\x10.ermite.CiStatusR\x06status\"[\n" +
2680	"\x10ListRunsResponse\x12\x1f\n" +
2681	"\x04runs\x18\x01 \x03(\v2\v.ermite.RunR\x04runs\x12&\n" +
2682	"\x0fnext_page_token\x18\x02 \x01(\tR\rnextPageToken\"T\n" +
2683	"\rGetRunRequest\x12\x12\n" +
2684	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x15\n" +
2685	"\x06run_id\x18\x02 \x01(\x03R\x05runId\x12\x18\n" +
2686	"\aattempt\x18\x03 \x01(\x05R\aattempt\"z\n" +
2687	"\x0eGetRunResponse\x12\x1d\n" +
2688	"\x03run\x18\x01 \x01(\v2\v.ermite.RunR\x03run\x12\"\n" +
2689	"\x04jobs\x18\x02 \x03(\v2\x0e.ermite.RunJobR\x04jobs\x12%\n" +
2690	"\x0elatest_attempt\x18\x03 \x01(\x05R\rlatestAttempt\"T\n" +
2691	"\rGetJobRequest\x12\x12\n" +
2692	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x15\n" +
2693	"\x06job_id\x18\x02 \x01(\tR\x05jobId\x12\x18\n" +
2694	"\aattempt\x18\x03 \x01(\x05R\aattempt\"2\n" +
2695	"\x0eGetJobResponse\x12 \n" +
2696	"\x03job\x18\x01 \x01(\v2\x0e.ermite.RunJobR\x03job\"t\n" +
2697	"\x16ListAnnotationsRequest\x12\x12\n" +
2698	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x15\n" +
2699	"\x06run_id\x18\x02 \x01(\x03R\x05runId\x12\x18\n" +
2700	"\aattempt\x18\x03 \x01(\x05R\aattempt\x12\x15\n" +
2701	"\x06job_id\x18\x04 \x01(\tR\x05jobId\"p\n" +
2702	"\x17ListAnnotationsResponse\x127\n" +
2703	"\vannotations\x18\x01 \x03(\v2\x15.ermite.JobAnnotationR\vannotations\x12\x1c\n" +
2704	"\ttruncated\x18\x02 \x01(\bR\ttruncated\"Z\n" +
2705	"\rJobAnnotation\x12\x15\n" +
2706	"\x06job_id\x18\x01 \x01(\tR\x05jobId\x122\n" +
2707	"\n" +
2708	"annotation\x18\x02 \x01(\v2\x12.ermite.AnnotationR\n" +
2709	"annotation\"^\n" +
2710	"\x17GetStepSummariesRequest\x12\x12\n" +
2711	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x15\n" +
2712	"\x06job_id\x18\x02 \x01(\tR\x05jobId\x12\x18\n" +
2713	"\aattempt\x18\x03 \x01(\x05R\aattempt\"k\n" +
2714	"\x18GetStepSummariesResponse\x121\n" +
2715	"\tsummaries\x18\x01 \x03(\v2\x13.ermite.StepSummaryR\tsummaries\x12\x1c\n" +
2716	"\ttruncated\x18\x02 \x01(\bR\ttruncated\"J\n" +
2717	"\vStepSummary\x12\x1f\n" +
2718	"\vstep_number\x18\x01 \x01(\x05R\n" +
2719	"stepNumber\x12\x1a\n" +
2720	"\bmarkdown\x18\x02 \x01(\tR\bmarkdown\"\x87\x01\n" +
2721	"\x10GetJobLogRequest\x12\x12\n" +
2722	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x15\n" +
2723	"\x06job_id\x18\x02 \x01(\tR\x05jobId\x12\x18\n" +
2724	"\aattempt\x18\x03 \x01(\x05R\aattempt\x12\x16\n" +
2725	"\x06offset\x18\x04 \x01(\x03R\x06offset\x12\x16\n" +
2726	"\x06follow\x18\x05 \x01(\bR\x06follow\"U\n" +
2727	"\x11GetJobLogResponse\x12\x16\n" +
2728	"\x06offset\x18\x01 \x01(\x03R\x06offset\x12(\n" +
2729	"\x05lines\x18\x02 \x03(\v2\x12.ermite.JobLogLineR\x05lines\"\x82\x01\n" +
2730	"\n" +
2731	"JobLogLine\x12\x12\n" +
2732	"\x04step\x18\x01 \x01(\x05R\x04step\x12.\n" +
2733	"\x04time\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampR\x04time\x12\x12\n" +
2734	"\x04text\x18\x03 \x01(\tR\x04text\x12\x1c\n" +
2735	"\tcontinued\x18\x04 \x01(\bR\tcontinued\"=\n" +
2736	"\x10CancelRunRequest\x12\x12\n" +
2737	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x15\n" +
2738	"\x06run_id\x18\x02 \x01(\x03R\x05runId\"2\n" +
2739	"\x11CancelRunResponse\x12\x1d\n" +
2740	"\x03run\x18\x01 \x01(\v2\v.ermite.RunR\x03run\"]\n" +
2741	"\x0fRerunRunRequest\x12\x12\n" +
2742	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x15\n" +
2743	"\x06run_id\x18\x02 \x01(\x03R\x05runId\x12\x1f\n" +
2744	"\vfailed_only\x18\x03 \x01(\bR\n" +
2745	"failedOnly\"1\n" +
2746	"\x10RerunRunResponse\x12\x1d\n" +
2747	"\x03run\x18\x01 \x01(\v2\v.ermite.RunR\x03run\"\xe4\x01\n" +
2748	"\x17DispatchWorkflowRequest\x12\x12\n" +
2749	"\x04repo\x18\x01 \x01(\tR\x04repo\x12#\n" +
2750	"\rworkflow_path\x18\x02 \x01(\tR\fworkflowPath\x12\x10\n" +
2751	"\x03ref\x18\x03 \x01(\tR\x03ref\x12C\n" +
2752	"\x06inputs\x18\x04 \x03(\v2+.ermite.DispatchWorkflowRequest.InputsEntryR\x06inputs\x1a9\n" +
2753	"\vInputsEntry\x12\x10\n" +
2754	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
2755	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"9\n" +
2756	"\x18DispatchWorkflowResponse\x12\x1d\n" +
2757	"\x03run\x18\x01 \x01(\v2\v.ermite.RunR\x03run\"9\n" +
2758	"\x11ListChecksRequest\x12\x12\n" +
2759	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x10\n" +
2760	"\x03sha\x18\x02 \x01(\tR\x03sha\"Y\n" +
2761	"\x12ListChecksResponse\x12%\n" +
2762	"\x06checks\x18\x01 \x03(\v2\r.ermite.CheckR\x06checks\x12\x1c\n" +
2763	"\ttruncated\x18\x02 \x01(\bR\ttruncated\"P\n" +
2764	"\x12ListRunnersRequest\x12\x1b\n" +
2765	"\tpage_size\x18\x01 \x01(\x05R\bpageSize\x12\x1d\n" +
2766	"\n" +
2767	"page_token\x18\x02 \x01(\tR\tpageToken\"g\n" +
2768	"\x13ListRunnersResponse\x12(\n" +
2769	"\arunners\x18\x01 \x03(\v2\x0e.ermite.RunnerR\arunners\x12&\n" +
2770	"\x0fnext_page_token\x18\x02 \x01(\tR\rnextPageToken\"2\n" +
2771	"\x13RemoveRunnerRequest\x12\x1b\n" +
2772	"\trunner_id\x18\x01 \x01(\tR\brunnerId\"\x16\n" +
2773	"\x14RemoveRunnerResponse2\xdc\x06\n" +
2774	"\n" +
2775	"RunService\x12=\n" +
2776	"\bListRuns\x12\x17.ermite.ListRunsRequest\x1a\x18.ermite.ListRunsResponse\x127\n" +
2777	"\x06GetRun\x12\x15.ermite.GetRunRequest\x1a\x16.ermite.GetRunResponse\x127\n" +
2778	"\x06GetJob\x12\x15.ermite.GetJobRequest\x1a\x16.ermite.GetJobResponse\x12R\n" +
2779	"\x0fListAnnotations\x12\x1e.ermite.ListAnnotationsRequest\x1a\x1f.ermite.ListAnnotationsResponse\x12U\n" +
2780	"\x10GetStepSummaries\x12\x1f.ermite.GetStepSummariesRequest\x1a .ermite.GetStepSummariesResponse\x12B\n" +
2781	"\tGetJobLog\x12\x18.ermite.GetJobLogRequest\x1a\x19.ermite.GetJobLogResponse0\x01\x12@\n" +
2782	"\tCancelRun\x12\x18.ermite.CancelRunRequest\x1a\x19.ermite.CancelRunResponse\x12=\n" +
2783	"\bRerunRun\x12\x17.ermite.RerunRunRequest\x1a\x18.ermite.RerunRunResponse\x12U\n" +
2784	"\x10DispatchWorkflow\x12\x1f.ermite.DispatchWorkflowRequest\x1a .ermite.DispatchWorkflowResponse\x12C\n" +
2785	"\n" +
2786	"ListChecks\x12\x19.ermite.ListChecksRequest\x1a\x1a.ermite.ListChecksResponse\x12F\n" +
2787	"\vListRunners\x12\x1a.ermite.ListRunnersRequest\x1a\x1b.ermite.ListRunnersResponse\x12I\n" +
2788	"\fRemoveRunner\x12\x1b.ermite.RemoveRunnerRequest\x1a\x1c.ermite.RemoveRunnerResponseBo\n" +
2789	"\n" +
2790	"com.ermiteB\bRunProtoP\x01Z\x1fbnema.dev/ermite-api/gen/ermite\xa2\x02\x03EXX\xaa\x02\x06Ermite\xca\x02\x06Ermite\xe2\x02\x12Ermite\\GPBMetadata\xea\x02\x06Ermiteb\x06proto3"
2791
2792var (
2793	file_ermite_run_proto_rawDescOnce sync.Once
2794	file_ermite_run_proto_rawDescData []byte
2795)
2796
2797func file_ermite_run_proto_rawDescGZIP() []byte {
2798	file_ermite_run_proto_rawDescOnce.Do(func() {
2799		file_ermite_run_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_ermite_run_proto_rawDesc), len(file_ermite_run_proto_rawDesc)))
2800	})
2801	return file_ermite_run_proto_rawDescData
2802}
2803
2804var file_ermite_run_proto_msgTypes = make([]protoimpl.MessageInfo, 33)
2805var file_ermite_run_proto_goTypes = []any{
2806	(*Run)(nil),                      // 0: ermite.Run
2807	(*RunJob)(nil),                   // 1: ermite.RunJob
2808	(*Step)(nil),                     // 2: ermite.Step
2809	(*Check)(nil),                    // 3: ermite.Check
2810	(*Runner)(nil),                   // 4: ermite.Runner
2811	(*ListRunsRequest)(nil),          // 5: ermite.ListRunsRequest
2812	(*ListRunsResponse)(nil),         // 6: ermite.ListRunsResponse
2813	(*GetRunRequest)(nil),            // 7: ermite.GetRunRequest
2814	(*GetRunResponse)(nil),           // 8: ermite.GetRunResponse
2815	(*GetJobRequest)(nil),            // 9: ermite.GetJobRequest
2816	(*GetJobResponse)(nil),           // 10: ermite.GetJobResponse
2817	(*ListAnnotationsRequest)(nil),   // 11: ermite.ListAnnotationsRequest
2818	(*ListAnnotationsResponse)(nil),  // 12: ermite.ListAnnotationsResponse
2819	(*JobAnnotation)(nil),            // 13: ermite.JobAnnotation
2820	(*GetStepSummariesRequest)(nil),  // 14: ermite.GetStepSummariesRequest
2821	(*GetStepSummariesResponse)(nil), // 15: ermite.GetStepSummariesResponse
2822	(*StepSummary)(nil),              // 16: ermite.StepSummary
2823	(*GetJobLogRequest)(nil),         // 17: ermite.GetJobLogRequest
2824	(*GetJobLogResponse)(nil),        // 18: ermite.GetJobLogResponse
2825	(*JobLogLine)(nil),               // 19: ermite.JobLogLine
2826	(*CancelRunRequest)(nil),         // 20: ermite.CancelRunRequest
2827	(*CancelRunResponse)(nil),        // 21: ermite.CancelRunResponse
2828	(*RerunRunRequest)(nil),          // 22: ermite.RerunRunRequest
2829	(*RerunRunResponse)(nil),         // 23: ermite.RerunRunResponse
2830	(*DispatchWorkflowRequest)(nil),  // 24: ermite.DispatchWorkflowRequest
2831	(*DispatchWorkflowResponse)(nil), // 25: ermite.DispatchWorkflowResponse
2832	(*ListChecksRequest)(nil),        // 26: ermite.ListChecksRequest
2833	(*ListChecksResponse)(nil),       // 27: ermite.ListChecksResponse
2834	(*ListRunnersRequest)(nil),       // 28: ermite.ListRunnersRequest
2835	(*ListRunnersResponse)(nil),      // 29: ermite.ListRunnersResponse
2836	(*RemoveRunnerRequest)(nil),      // 30: ermite.RemoveRunnerRequest
2837	(*RemoveRunnerResponse)(nil),     // 31: ermite.RemoveRunnerResponse
2838	nil,                              // 32: ermite.DispatchWorkflowRequest.InputsEntry
2839	(CiStatus)(0),                    // 33: ermite.CiStatus
2840	(CiConclusion)(0),                // 34: ermite.CiConclusion
2841	(*timestamppb.Timestamp)(nil),    // 35: google.protobuf.Timestamp
2842	(RunnerIsolation)(0),             // 36: ermite.RunnerIsolation
2843	(StepState)(0),                   // 37: ermite.StepState
2844	(*Annotation)(nil),               // 38: ermite.Annotation
2845}
2846var file_ermite_run_proto_depIdxs = []int32{
2847	33, // 0: ermite.Run.status:type_name -> ermite.CiStatus
2848	34, // 1: ermite.Run.conclusion:type_name -> ermite.CiConclusion
2849	35, // 2: ermite.Run.created_at:type_name -> google.protobuf.Timestamp
2850	35, // 3: ermite.Run.started_at:type_name -> google.protobuf.Timestamp
2851	35, // 4: ermite.Run.completed_at:type_name -> google.protobuf.Timestamp
2852	33, // 5: ermite.RunJob.status:type_name -> ermite.CiStatus
2853	34, // 6: ermite.RunJob.conclusion:type_name -> ermite.CiConclusion
2854	36, // 7: ermite.RunJob.isolation:type_name -> ermite.RunnerIsolation
2855	2,  // 8: ermite.RunJob.steps:type_name -> ermite.Step
2856	35, // 9: ermite.RunJob.created_at:type_name -> google.protobuf.Timestamp
2857	35, // 10: ermite.RunJob.started_at:type_name -> google.protobuf.Timestamp
2858	35, // 11: ermite.RunJob.completed_at:type_name -> google.protobuf.Timestamp
2859	37, // 12: ermite.Step.state:type_name -> ermite.StepState
2860	34, // 13: ermite.Step.conclusion:type_name -> ermite.CiConclusion
2861	35, // 14: ermite.Step.started_at:type_name -> google.protobuf.Timestamp
2862	35, // 15: ermite.Step.completed_at:type_name -> google.protobuf.Timestamp
2863	34, // 16: ermite.Step.outcome:type_name -> ermite.CiConclusion
2864	33, // 17: ermite.Check.status:type_name -> ermite.CiStatus
2865	34, // 18: ermite.Check.conclusion:type_name -> ermite.CiConclusion
2866	35, // 19: ermite.Check.started_at:type_name -> google.protobuf.Timestamp
2867	35, // 20: ermite.Check.completed_at:type_name -> google.protobuf.Timestamp
2868	36, // 21: ermite.Runner.isolation:type_name -> ermite.RunnerIsolation
2869	35, // 22: ermite.Runner.registered_at:type_name -> google.protobuf.Timestamp
2870	35, // 23: ermite.Runner.last_seen:type_name -> google.protobuf.Timestamp
2871	33, // 24: ermite.ListRunsRequest.status:type_name -> ermite.CiStatus
2872	0,  // 25: ermite.ListRunsResponse.runs:type_name -> ermite.Run
2873	0,  // 26: ermite.GetRunResponse.run:type_name -> ermite.Run
2874	1,  // 27: ermite.GetRunResponse.jobs:type_name -> ermite.RunJob
2875	1,  // 28: ermite.GetJobResponse.job:type_name -> ermite.RunJob
2876	13, // 29: ermite.ListAnnotationsResponse.annotations:type_name -> ermite.JobAnnotation
2877	38, // 30: ermite.JobAnnotation.annotation:type_name -> ermite.Annotation
2878	16, // 31: ermite.GetStepSummariesResponse.summaries:type_name -> ermite.StepSummary
2879	19, // 32: ermite.GetJobLogResponse.lines:type_name -> ermite.JobLogLine
2880	35, // 33: ermite.JobLogLine.time:type_name -> google.protobuf.Timestamp
2881	0,  // 34: ermite.CancelRunResponse.run:type_name -> ermite.Run
2882	0,  // 35: ermite.RerunRunResponse.run:type_name -> ermite.Run
2883	32, // 36: ermite.DispatchWorkflowRequest.inputs:type_name -> ermite.DispatchWorkflowRequest.InputsEntry
2884	0,  // 37: ermite.DispatchWorkflowResponse.run:type_name -> ermite.Run
2885	3,  // 38: ermite.ListChecksResponse.checks:type_name -> ermite.Check
2886	4,  // 39: ermite.ListRunnersResponse.runners:type_name -> ermite.Runner
2887	5,  // 40: ermite.RunService.ListRuns:input_type -> ermite.ListRunsRequest
2888	7,  // 41: ermite.RunService.GetRun:input_type -> ermite.GetRunRequest
2889	9,  // 42: ermite.RunService.GetJob:input_type -> ermite.GetJobRequest
2890	11, // 43: ermite.RunService.ListAnnotations:input_type -> ermite.ListAnnotationsRequest
2891	14, // 44: ermite.RunService.GetStepSummaries:input_type -> ermite.GetStepSummariesRequest
2892	17, // 45: ermite.RunService.GetJobLog:input_type -> ermite.GetJobLogRequest
2893	20, // 46: ermite.RunService.CancelRun:input_type -> ermite.CancelRunRequest
2894	22, // 47: ermite.RunService.RerunRun:input_type -> ermite.RerunRunRequest
2895	24, // 48: ermite.RunService.DispatchWorkflow:input_type -> ermite.DispatchWorkflowRequest
2896	26, // 49: ermite.RunService.ListChecks:input_type -> ermite.ListChecksRequest
2897	28, // 50: ermite.RunService.ListRunners:input_type -> ermite.ListRunnersRequest
2898	30, // 51: ermite.RunService.RemoveRunner:input_type -> ermite.RemoveRunnerRequest
2899	6,  // 52: ermite.RunService.ListRuns:output_type -> ermite.ListRunsResponse
2900	8,  // 53: ermite.RunService.GetRun:output_type -> ermite.GetRunResponse
2901	10, // 54: ermite.RunService.GetJob:output_type -> ermite.GetJobResponse
2902	12, // 55: ermite.RunService.ListAnnotations:output_type -> ermite.ListAnnotationsResponse
2903	15, // 56: ermite.RunService.GetStepSummaries:output_type -> ermite.GetStepSummariesResponse
2904	18, // 57: ermite.RunService.GetJobLog:output_type -> ermite.GetJobLogResponse
2905	21, // 58: ermite.RunService.CancelRun:output_type -> ermite.CancelRunResponse
2906	23, // 59: ermite.RunService.RerunRun:output_type -> ermite.RerunRunResponse
2907	25, // 60: ermite.RunService.DispatchWorkflow:output_type -> ermite.DispatchWorkflowResponse
2908	27, // 61: ermite.RunService.ListChecks:output_type -> ermite.ListChecksResponse
2909	29, // 62: ermite.RunService.ListRunners:output_type -> ermite.ListRunnersResponse
2910	31, // 63: ermite.RunService.RemoveRunner:output_type -> ermite.RemoveRunnerResponse
2911	52, // [52:64] is the sub-list for method output_type
2912	40, // [40:52] is the sub-list for method input_type
2913	40, // [40:40] is the sub-list for extension type_name
2914	40, // [40:40] is the sub-list for extension extendee
2915	0,  // [0:40] is the sub-list for field type_name
2916}
2917
2918func init() { file_ermite_run_proto_init() }
2919func file_ermite_run_proto_init() {
2920	if File_ermite_run_proto != nil {
2921		return
2922	}
2923	file_ermite_runner_proto_init()
2924	type x struct{}
2925	out := protoimpl.TypeBuilder{
2926		File: protoimpl.DescBuilder{
2927			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
2928			RawDescriptor: unsafe.Slice(unsafe.StringData(file_ermite_run_proto_rawDesc), len(file_ermite_run_proto_rawDesc)),
2929			NumEnums:      0,
2930			NumMessages:   33,
2931			NumExtensions: 0,
2932			NumServices:   1,
2933		},
2934		GoTypes:           file_ermite_run_proto_goTypes,
2935		DependencyIndexes: file_ermite_run_proto_depIdxs,
2936		MessageInfos:      file_ermite_run_proto_msgTypes,
2937	}.Build()
2938	File_ermite_run_proto = out.File
2939	file_ermite_run_proto_goTypes = nil
2940	file_ermite_run_proto_depIdxs = nil
2941}

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 2

Tags 18

↑↓ moveenter openesc close