v0.1.0 4db3b8b

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" (the
58	// only one for now; push to a branch or a tag, and merge of a merge
59	// request). New values may be added; clients show the ones they do not
60	// know as they are.
61	Event string `protobuf:"bytes,8,opt,name=event,proto3" json:"event,omitempty"`
62	// Ref is the full ref name that was pushed, for example "refs/heads/main"
63	// or "refs/tags/v1.0.0".
64	Ref string `protobuf:"bytes,9,opt,name=ref,proto3" json:"ref,omitempty"`
65	// Sha is the full id of the commit the run is for.
66	Sha string `protobuf:"bytes,10,opt,name=sha,proto3" json:"sha,omitempty"`
67	// Actor names who triggered the run: the label of the token that pushed, or
68	// "root", or "owner" (a web session, a merge of the web UI), as
69	// MergeRequest.author. It is informational.
70	Actor string `protobuf:"bytes,11,opt,name=actor,proto3" json:"actor,omitempty"`
71	// Status is where this attempt is: QUEUED until a job starts, IN_PROGRESS
72	// while jobs run or wait, COMPLETED when every job is over.
73	Status CiStatus `protobuf:"varint,12,opt,name=status,proto3,enum=ermite.CiStatus" json:"status,omitempty"`
74	// Conclusion is how this attempt ended, from its jobs' conclusions like
75	// GitHub: CANCELLED if it was cancelled, else FAILURE if a job failed or
76	// timed out, else SUCCESS (also when jobs were skipped). Unset until
77	// status is COMPLETED.
78	Conclusion CiConclusion `protobuf:"varint,13,opt,name=conclusion,proto3,enum=ermite.CiConclusion" json:"conclusion,omitempty"`
79	// Error is set when the run failed without running a job because the
80	// workflow could not be used: an invalid workflow file (the run then has
81	// no jobs and conclusion FAILURE), as GitHub's "Invalid workflow file".
82	// It holds the errors with their positions, one per line, at most 8 KiB.
83	// Empty otherwise.
84	Error string `protobuf:"bytes,14,opt,name=error,proto3" json:"error,omitempty"`
85	// CreatedAt is when this attempt was created: for attempt 1 when the
86	// trigger was planned, for later ones when RerunRun was called.
87	CreatedAt *timestamppb.Timestamp `protobuf:"bytes,15,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
88	// StartedAt is when the first job of this attempt was given to a runner.
89	// Unset until then.
90	StartedAt *timestamppb.Timestamp `protobuf:"bytes,16,opt,name=started_at,json=startedAt,proto3" json:"started_at,omitempty"`
91	// CompletedAt is when this attempt completed. Unset until then.
92	CompletedAt *timestamppb.Timestamp `protobuf:"bytes,17,opt,name=completed_at,json=completedAt,proto3" json:"completed_at,omitempty"`
93	// Version counts the changes of this run on the server: it grows by at least
94	// one at every change and never goes back, also across attempts. Events are
95	// not delivered in order, and a client that holds two copies of a run keeps
96	// the one with the higher version and drops the other.
97	Version int64 `protobuf:"varint,18,opt,name=version,proto3" json:"version,omitempty"`
98	// Name is the name of the run, GitHub's "name" of a workflow run: the
99	// evaluated "run-name" of the workflow when it has one, else the same value
100	// as workflow_name. It is what GitHub lists as the run's name, whereas
101	// workflow_name stays the name of the workflow ("github.workflow") even when
102	// the workflow has a "run-name". A run stored before this field existed
103	// reads as workflow_name.
104	Name          string `protobuf:"bytes,19,opt,name=name,proto3" json:"name,omitempty"`
105	unknownFields protoimpl.UnknownFields
106	sizeCache     protoimpl.SizeCache
107}
108
109func (x *Run) Reset() {
110	*x = Run{}
111	mi := &file_ermite_run_proto_msgTypes[0]
112	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
113	ms.StoreMessageInfo(mi)
114}
115
116func (x *Run) String() string {
117	return protoimpl.X.MessageStringOf(x)
118}
119
120func (*Run) ProtoMessage() {}
121
122func (x *Run) ProtoReflect() protoreflect.Message {
123	mi := &file_ermite_run_proto_msgTypes[0]
124	if x != nil {
125		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
126		if ms.LoadMessageInfo() == nil {
127			ms.StoreMessageInfo(mi)
128		}
129		return ms
130	}
131	return mi.MessageOf(x)
132}
133
134// Deprecated: Use Run.ProtoReflect.Descriptor instead.
135func (*Run) Descriptor() ([]byte, []int) {
136	return file_ermite_run_proto_rawDescGZIP(), []int{0}
137}
138
139func (x *Run) GetRepo() string {
140	if x != nil {
141		return x.Repo
142	}
143	return ""
144}
145
146func (x *Run) GetId() int64 {
147	if x != nil {
148		return x.Id
149	}
150	return 0
151}
152
153func (x *Run) GetNumber() int64 {
154	if x != nil {
155		return x.Number
156	}
157	return 0
158}
159
160func (x *Run) GetAttempt() int32 {
161	if x != nil {
162		return x.Attempt
163	}
164	return 0
165}
166
167func (x *Run) GetWorkflowPath() string {
168	if x != nil {
169		return x.WorkflowPath
170	}
171	return ""
172}
173
174func (x *Run) GetWorkflowName() string {
175	if x != nil {
176		return x.WorkflowName
177	}
178	return ""
179}
180
181func (x *Run) GetTitle() string {
182	if x != nil {
183		return x.Title
184	}
185	return ""
186}
187
188func (x *Run) GetEvent() string {
189	if x != nil {
190		return x.Event
191	}
192	return ""
193}
194
195func (x *Run) GetRef() string {
196	if x != nil {
197		return x.Ref
198	}
199	return ""
200}
201
202func (x *Run) GetSha() string {
203	if x != nil {
204		return x.Sha
205	}
206	return ""
207}
208
209func (x *Run) GetActor() string {
210	if x != nil {
211		return x.Actor
212	}
213	return ""
214}
215
216func (x *Run) GetStatus() CiStatus {
217	if x != nil {
218		return x.Status
219	}
220	return CiStatus_CI_STATUS_UNSPECIFIED
221}
222
223func (x *Run) GetConclusion() CiConclusion {
224	if x != nil {
225		return x.Conclusion
226	}
227	return CiConclusion_CI_CONCLUSION_UNSPECIFIED
228}
229
230func (x *Run) GetError() string {
231	if x != nil {
232		return x.Error
233	}
234	return ""
235}
236
237func (x *Run) GetCreatedAt() *timestamppb.Timestamp {
238	if x != nil {
239		return x.CreatedAt
240	}
241	return nil
242}
243
244func (x *Run) GetStartedAt() *timestamppb.Timestamp {
245	if x != nil {
246		return x.StartedAt
247	}
248	return nil
249}
250
251func (x *Run) GetCompletedAt() *timestamppb.Timestamp {
252	if x != nil {
253		return x.CompletedAt
254	}
255	return nil
256}
257
258func (x *Run) GetVersion() int64 {
259	if x != nil {
260		return x.Version
261	}
262	return 0
263}
264
265func (x *Run) GetName() string {
266	if x != nil {
267		return x.Name
268	}
269	return ""
270}
271
272// RunJob is a job of a run as people see it: the state of one job instance
273// (one matrix combination is one job) in one attempt. It is not Job, which is
274// what a runner receives.
275type RunJob struct {
276	state protoimpl.MessageState `protogen:"open.v1"`
277	// Id is the Job.job_id. It is the same in every attempt.
278	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
279	// RunId is the run the job belongs to.
280	RunId int64 `protobuf:"varint,2,opt,name=run_id,json=runId,proto3" json:"run_id,omitempty"`
281	// Attempt is the attempt of the run in which this job executed. It is lower
282	// than the attempt of the run when the job was kept from an earlier attempt
283	// by a re-run of the failed jobs only; the log and steps are then those of
284	// that earlier attempt. Pass it to GetJob and GetJobLog.
285	Attempt int32 `protobuf:"varint,3,opt,name=attempt,proto3" json:"attempt,omitempty"`
286	// Repo is the name of the repository.
287	Repo string `protobuf:"bytes,4,opt,name=repo,proto3" json:"repo,omitempty"`
288	// Key is the key of the job under "jobs:" in the workflow (the
289	// "github.job"). Matrix instances of one job share it.
290	Key string `protobuf:"bytes,5,opt,name=key,proto3" json:"key,omitempty"`
291	// Name is the display name of the job, evaluated, with the matrix suffix as
292	// GitHub names them, for example "build (linux, 1.27)". It is also the
293	// name of the job's check.
294	Name string `protobuf:"bytes,6,opt,name=name,proto3" json:"name,omitempty"`
295	// Status is where the job is. A job waits QUEUED for a runner and for the
296	// jobs it needs.
297	Status CiStatus `protobuf:"varint,7,opt,name=status,proto3,enum=ermite.CiStatus" json:"status,omitempty"`
298	// Conclusion is how the job ended. Unset until status is COMPLETED.
299	Conclusion CiConclusion `protobuf:"varint,8,opt,name=conclusion,proto3,enum=ermite.CiConclusion" json:"conclusion,omitempty"`
300	// Error explains a FAILURE, CANCELLED or TIMED_OUT that no step explains, in
301	// GitHub's words where it has them: the runner was lost ("The self-hosted
302	// runner: <name> lost communication with the server..."), it received a
303	// shutdown signal, no runner took the job within 24 hours, the log limit
304	// was reached, the workflow uses a feature that is not supported yet
305	// ("not supported yet: <feature>"). At most 4 KiB. Empty otherwise.
306	Error string `protobuf:"bytes,9,opt,name=error,proto3" json:"error,omitempty"`
307	// Labels are the runs-on labels of the job, evaluated. Empty while the job
308	// is not planned yet.
309	Labels []string `protobuf:"bytes,10,rep,name=labels,proto3" json:"labels,omitempty"`
310	// Needs are the keys of the jobs this job needs, for drawing the graph.
311	Needs []string `protobuf:"bytes,11,rep,name=needs,proto3" json:"needs,omitempty"`
312	// RunnerId is the id of the runner that executed or is executing the job.
313	// Empty while queued, and when the runner has since been removed (runner_name
314	// and isolation are kept).
315	RunnerId string `protobuf:"bytes,12,opt,name=runner_id,json=runnerId,proto3" json:"runner_id,omitempty"`
316	// RunnerName is the name of that runner. Empty while queued.
317	RunnerName string `protobuf:"bytes,13,opt,name=runner_name,json=runnerName,proto3" json:"runner_name,omitempty"`
318	// Isolation is how that runner isolated the job. UNSPECIFIED while queued.
319	Isolation RunnerIsolation `protobuf:"varint,14,opt,name=isolation,proto3,enum=ermite.RunnerIsolation" json:"isolation,omitempty"`
320	// Steps are the steps reported so far, ordered by number, including the
321	// implicit "Set up job" and "Complete job". Empty while queued. Always
322	// set, including in JobUpdated events.
323	Steps []*Step `protobuf:"bytes,15,rep,name=steps,proto3" json:"steps,omitempty"`
324	// CreatedAt is when the job was created (planned).
325	CreatedAt *timestamppb.Timestamp `protobuf:"bytes,16,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
326	// StartedAt is when the job was given to a runner. Unset until then.
327	StartedAt *timestamppb.Timestamp `protobuf:"bytes,17,opt,name=started_at,json=startedAt,proto3" json:"started_at,omitempty"`
328	// CompletedAt is when the job completed. Unset until then.
329	CompletedAt *timestamppb.Timestamp `protobuf:"bytes,18,opt,name=completed_at,json=completedAt,proto3" json:"completed_at,omitempty"`
330	// Version counts the changes of this job on the server (status, conclusion,
331	// runner, steps, with any attempt): it grows by at least one at every change
332	// and never goes back. A client that holds two copies of a job keeps the
333	// one with the higher version and drops the other, as for Run.version.
334	Version       int64 `protobuf:"varint,19,opt,name=version,proto3" json:"version,omitempty"`
335	unknownFields protoimpl.UnknownFields
336	sizeCache     protoimpl.SizeCache
337}
338
339func (x *RunJob) Reset() {
340	*x = RunJob{}
341	mi := &file_ermite_run_proto_msgTypes[1]
342	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
343	ms.StoreMessageInfo(mi)
344}
345
346func (x *RunJob) String() string {
347	return protoimpl.X.MessageStringOf(x)
348}
349
350func (*RunJob) ProtoMessage() {}
351
352func (x *RunJob) ProtoReflect() protoreflect.Message {
353	mi := &file_ermite_run_proto_msgTypes[1]
354	if x != nil {
355		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
356		if ms.LoadMessageInfo() == nil {
357			ms.StoreMessageInfo(mi)
358		}
359		return ms
360	}
361	return mi.MessageOf(x)
362}
363
364// Deprecated: Use RunJob.ProtoReflect.Descriptor instead.
365func (*RunJob) Descriptor() ([]byte, []int) {
366	return file_ermite_run_proto_rawDescGZIP(), []int{1}
367}
368
369func (x *RunJob) GetId() string {
370	if x != nil {
371		return x.Id
372	}
373	return ""
374}
375
376func (x *RunJob) GetRunId() int64 {
377	if x != nil {
378		return x.RunId
379	}
380	return 0
381}
382
383func (x *RunJob) GetAttempt() int32 {
384	if x != nil {
385		return x.Attempt
386	}
387	return 0
388}
389
390func (x *RunJob) GetRepo() string {
391	if x != nil {
392		return x.Repo
393	}
394	return ""
395}
396
397func (x *RunJob) GetKey() string {
398	if x != nil {
399		return x.Key
400	}
401	return ""
402}
403
404func (x *RunJob) GetName() string {
405	if x != nil {
406		return x.Name
407	}
408	return ""
409}
410
411func (x *RunJob) GetStatus() CiStatus {
412	if x != nil {
413		return x.Status
414	}
415	return CiStatus_CI_STATUS_UNSPECIFIED
416}
417
418func (x *RunJob) GetConclusion() CiConclusion {
419	if x != nil {
420		return x.Conclusion
421	}
422	return CiConclusion_CI_CONCLUSION_UNSPECIFIED
423}
424
425func (x *RunJob) GetError() string {
426	if x != nil {
427		return x.Error
428	}
429	return ""
430}
431
432func (x *RunJob) GetLabels() []string {
433	if x != nil {
434		return x.Labels
435	}
436	return nil
437}
438
439func (x *RunJob) GetNeeds() []string {
440	if x != nil {
441		return x.Needs
442	}
443	return nil
444}
445
446func (x *RunJob) GetRunnerId() string {
447	if x != nil {
448		return x.RunnerId
449	}
450	return ""
451}
452
453func (x *RunJob) GetRunnerName() string {
454	if x != nil {
455		return x.RunnerName
456	}
457	return ""
458}
459
460func (x *RunJob) GetIsolation() RunnerIsolation {
461	if x != nil {
462		return x.Isolation
463	}
464	return RunnerIsolation_RUNNER_ISOLATION_UNSPECIFIED
465}
466
467func (x *RunJob) GetSteps() []*Step {
468	if x != nil {
469		return x.Steps
470	}
471	return nil
472}
473
474func (x *RunJob) GetCreatedAt() *timestamppb.Timestamp {
475	if x != nil {
476		return x.CreatedAt
477	}
478	return nil
479}
480
481func (x *RunJob) GetStartedAt() *timestamppb.Timestamp {
482	if x != nil {
483		return x.StartedAt
484	}
485	return nil
486}
487
488func (x *RunJob) GetCompletedAt() *timestamppb.Timestamp {
489	if x != nil {
490		return x.CompletedAt
491	}
492	return nil
493}
494
495func (x *RunJob) GetVersion() int64 {
496	if x != nil {
497		return x.Version
498	}
499	return 0
500}
501
502// Step is one step of a job, with where its lines are in the job log.
503type Step struct {
504	state protoimpl.MessageState `protogen:"open.v1"`
505	// Number is the 1-based number of the step in the job, the one the runner
506	// uses in UpdateJob and AppendLog.
507	Number int32 `protobuf:"varint,1,opt,name=number,proto3" json:"number,omitempty"`
508	// Name is the display name of the step.
509	Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
510	// State is where the step is.
511	State StepState `protobuf:"varint,3,opt,name=state,proto3,enum=ermite.StepState" json:"state,omitempty"`
512	// Conclusion is how the step ended. Unset until state is COMPLETED.
513	Conclusion CiConclusion `protobuf:"varint,4,opt,name=conclusion,proto3,enum=ermite.CiConclusion" json:"conclusion,omitempty"`
514	// StartedAt is when the step started. Unset while PENDING.
515	StartedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=started_at,json=startedAt,proto3" json:"started_at,omitempty"`
516	// CompletedAt is when the step ended. Unset until COMPLETED.
517	CompletedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=completed_at,json=completedAt,proto3" json:"completed_at,omitempty"`
518	// LogStart is the number of the first line of the step in the job log (the
519	// offset of GetJobLogRequest and AppendLogRequest), counted from 0.
520	LogStart int64 `protobuf:"varint,7,opt,name=log_start,json=logStart,proto3" json:"log_start,omitempty"`
521	// LogEnd is the number of the line after the last one of the step. For an
522	// IN_PROGRESS step it is the number of lines held at the time of the
523	// call and grows; for a step without a line it equals log_start.
524	LogEnd        int64 `protobuf:"varint,8,opt,name=log_end,json=logEnd,proto3" json:"log_end,omitempty"`
525	unknownFields protoimpl.UnknownFields
526	sizeCache     protoimpl.SizeCache
527}
528
529func (x *Step) Reset() {
530	*x = Step{}
531	mi := &file_ermite_run_proto_msgTypes[2]
532	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
533	ms.StoreMessageInfo(mi)
534}
535
536func (x *Step) String() string {
537	return protoimpl.X.MessageStringOf(x)
538}
539
540func (*Step) ProtoMessage() {}
541
542func (x *Step) ProtoReflect() protoreflect.Message {
543	mi := &file_ermite_run_proto_msgTypes[2]
544	if x != nil {
545		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
546		if ms.LoadMessageInfo() == nil {
547			ms.StoreMessageInfo(mi)
548		}
549		return ms
550	}
551	return mi.MessageOf(x)
552}
553
554// Deprecated: Use Step.ProtoReflect.Descriptor instead.
555func (*Step) Descriptor() ([]byte, []int) {
556	return file_ermite_run_proto_rawDescGZIP(), []int{2}
557}
558
559func (x *Step) GetNumber() int32 {
560	if x != nil {
561		return x.Number
562	}
563	return 0
564}
565
566func (x *Step) GetName() string {
567	if x != nil {
568		return x.Name
569	}
570	return ""
571}
572
573func (x *Step) GetState() StepState {
574	if x != nil {
575		return x.State
576	}
577	return StepState_STEP_STATE_UNSPECIFIED
578}
579
580func (x *Step) GetConclusion() CiConclusion {
581	if x != nil {
582		return x.Conclusion
583	}
584	return CiConclusion_CI_CONCLUSION_UNSPECIFIED
585}
586
587func (x *Step) GetStartedAt() *timestamppb.Timestamp {
588	if x != nil {
589		return x.StartedAt
590	}
591	return nil
592}
593
594func (x *Step) GetCompletedAt() *timestamppb.Timestamp {
595	if x != nil {
596		return x.CompletedAt
597	}
598	return nil
599}
600
601func (x *Step) GetLogStart() int64 {
602	if x != nil {
603		return x.LogStart
604	}
605	return 0
606}
607
608func (x *Step) GetLogEnd() int64 {
609	if x != nil {
610		return x.LogEnd
611	}
612	return 0
613}
614
615// Check is the result of one job on one commit, the unit shown next to a
616// commit or a merge request and counted by the merge rules. There is one per
617// job instance, named like GitHub's checks.
618type Check struct {
619	state protoimpl.MessageState `protogen:"open.v1"`
620	// Id identifies the check. It is opaque and stable across attempts.
621	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
622	// Repo is the name of the repository.
623	Repo string `protobuf:"bytes,2,opt,name=repo,proto3" json:"repo,omitempty"`
624	// Sha is the full id of the commit.
625	Sha string `protobuf:"bytes,3,opt,name=sha,proto3" json:"sha,omitempty"`
626	// Name is the name of the check: the RunJob.name of the job.
627	Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"`
628	// Status is where the check is.
629	Status CiStatus `protobuf:"varint,5,opt,name=status,proto3,enum=ermite.CiStatus" json:"status,omitempty"`
630	// Conclusion is how the check ended. Unset until status is COMPLETED. The
631	// value "stale" of GitHub is never used.
632	Conclusion CiConclusion `protobuf:"varint,6,opt,name=conclusion,proto3,enum=ermite.CiConclusion" json:"conclusion,omitempty"`
633	// RunId is the run of the job.
634	RunId int64 `protobuf:"varint,7,opt,name=run_id,json=runId,proto3" json:"run_id,omitempty"`
635	// JobId is the RunJob.id of the job, to open its page and log.
636	JobId string `protobuf:"bytes,8,opt,name=job_id,json=jobId,proto3" json:"job_id,omitempty"`
637	// Attempt is the attempt the check describes: the latest attempt of the run.
638	Attempt int32 `protobuf:"varint,9,opt,name=attempt,proto3" json:"attempt,omitempty"`
639	// WorkflowName is the Run.workflow_name of the run.
640	WorkflowName string `protobuf:"bytes,10,opt,name=workflow_name,json=workflowName,proto3" json:"workflow_name,omitempty"`
641	// StartedAt is when the job was given to a runner. Unset while queued.
642	StartedAt *timestamppb.Timestamp `protobuf:"bytes,11,opt,name=started_at,json=startedAt,proto3" json:"started_at,omitempty"`
643	// CompletedAt is when the job completed. Unset until then.
644	CompletedAt   *timestamppb.Timestamp `protobuf:"bytes,12,opt,name=completed_at,json=completedAt,proto3" json:"completed_at,omitempty"`
645	unknownFields protoimpl.UnknownFields
646	sizeCache     protoimpl.SizeCache
647}
648
649func (x *Check) Reset() {
650	*x = Check{}
651	mi := &file_ermite_run_proto_msgTypes[3]
652	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
653	ms.StoreMessageInfo(mi)
654}
655
656func (x *Check) String() string {
657	return protoimpl.X.MessageStringOf(x)
658}
659
660func (*Check) ProtoMessage() {}
661
662func (x *Check) ProtoReflect() protoreflect.Message {
663	mi := &file_ermite_run_proto_msgTypes[3]
664	if x != nil {
665		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
666		if ms.LoadMessageInfo() == nil {
667			ms.StoreMessageInfo(mi)
668		}
669		return ms
670	}
671	return mi.MessageOf(x)
672}
673
674// Deprecated: Use Check.ProtoReflect.Descriptor instead.
675func (*Check) Descriptor() ([]byte, []int) {
676	return file_ermite_run_proto_rawDescGZIP(), []int{3}
677}
678
679func (x *Check) GetId() string {
680	if x != nil {
681		return x.Id
682	}
683	return ""
684}
685
686func (x *Check) GetRepo() string {
687	if x != nil {
688		return x.Repo
689	}
690	return ""
691}
692
693func (x *Check) GetSha() string {
694	if x != nil {
695		return x.Sha
696	}
697	return ""
698}
699
700func (x *Check) GetName() string {
701	if x != nil {
702		return x.Name
703	}
704	return ""
705}
706
707func (x *Check) GetStatus() CiStatus {
708	if x != nil {
709		return x.Status
710	}
711	return CiStatus_CI_STATUS_UNSPECIFIED
712}
713
714func (x *Check) GetConclusion() CiConclusion {
715	if x != nil {
716		return x.Conclusion
717	}
718	return CiConclusion_CI_CONCLUSION_UNSPECIFIED
719}
720
721func (x *Check) GetRunId() int64 {
722	if x != nil {
723		return x.RunId
724	}
725	return 0
726}
727
728func (x *Check) GetJobId() string {
729	if x != nil {
730		return x.JobId
731	}
732	return ""
733}
734
735func (x *Check) GetAttempt() int32 {
736	if x != nil {
737		return x.Attempt
738	}
739	return 0
740}
741
742func (x *Check) GetWorkflowName() string {
743	if x != nil {
744		return x.WorkflowName
745	}
746	return ""
747}
748
749func (x *Check) GetStartedAt() *timestamppb.Timestamp {
750	if x != nil {
751		return x.StartedAt
752	}
753	return nil
754}
755
756func (x *Check) GetCompletedAt() *timestamppb.Timestamp {
757	if x != nil {
758		return x.CompletedAt
759	}
760	return nil
761}
762
763// Runner is a registered CI runner. It never contains the runner token nor its
764// hash.
765type Runner struct {
766	state protoimpl.MessageState `protogen:"open.v1"`
767	// Id identifies the runner in RemoveRunner. It is not a secret.
768	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
769	// Name is the unique name chosen at registration.
770	Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
771	// Labels are all the labels the runner can match: the ones chosen at
772	// registration plus the implicit ones ("self-hosted", the os and the arch),
773	// lowercase, sorted.
774	Labels []string `protobuf:"bytes,3,rep,name=labels,proto3" json:"labels,omitempty"`
775	// Isolation is how the runner isolates jobs.
776	Isolation RunnerIsolation `protobuf:"varint,4,opt,name=isolation,proto3,enum=ermite.RunnerIsolation" json:"isolation,omitempty"`
777	// Version is the version of the runner software.
778	Version string `protobuf:"bytes,5,opt,name=version,proto3" json:"version,omitempty"`
779	// Arch is "x64" or "arm64".
780	Arch string `protobuf:"bytes,6,opt,name=arch,proto3" json:"arch,omitempty"`
781	// Os is "linux".
782	Os string `protobuf:"bytes,7,opt,name=os,proto3" json:"os,omitempty"`
783	// RegisteredAt is when the runner was registered.
784	RegisteredAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=registered_at,json=registeredAt,proto3" json:"registered_at,omitempty"`
785	// LastSeen is when the server last heard from the runner: a FetchJob poll or
786	// a heartbeat of one of its jobs. Unset if never. It may lag behind the real
787	// time by a short delay. A runner not seen for more than about 2 minutes is
788	// offline.
789	LastSeen *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=last_seen,json=lastSeen,proto3" json:"last_seen,omitempty"`
790	// Busy is true while the runner has a job in progress.
791	Busy          bool `protobuf:"varint,10,opt,name=busy,proto3" json:"busy,omitempty"`
792	unknownFields protoimpl.UnknownFields
793	sizeCache     protoimpl.SizeCache
794}
795
796func (x *Runner) Reset() {
797	*x = Runner{}
798	mi := &file_ermite_run_proto_msgTypes[4]
799	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
800	ms.StoreMessageInfo(mi)
801}
802
803func (x *Runner) String() string {
804	return protoimpl.X.MessageStringOf(x)
805}
806
807func (*Runner) ProtoMessage() {}
808
809func (x *Runner) ProtoReflect() protoreflect.Message {
810	mi := &file_ermite_run_proto_msgTypes[4]
811	if x != nil {
812		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
813		if ms.LoadMessageInfo() == nil {
814			ms.StoreMessageInfo(mi)
815		}
816		return ms
817	}
818	return mi.MessageOf(x)
819}
820
821// Deprecated: Use Runner.ProtoReflect.Descriptor instead.
822func (*Runner) Descriptor() ([]byte, []int) {
823	return file_ermite_run_proto_rawDescGZIP(), []int{4}
824}
825
826func (x *Runner) GetId() string {
827	if x != nil {
828		return x.Id
829	}
830	return ""
831}
832
833func (x *Runner) GetName() string {
834	if x != nil {
835		return x.Name
836	}
837	return ""
838}
839
840func (x *Runner) GetLabels() []string {
841	if x != nil {
842		return x.Labels
843	}
844	return nil
845}
846
847func (x *Runner) GetIsolation() RunnerIsolation {
848	if x != nil {
849		return x.Isolation
850	}
851	return RunnerIsolation_RUNNER_ISOLATION_UNSPECIFIED
852}
853
854func (x *Runner) GetVersion() string {
855	if x != nil {
856		return x.Version
857	}
858	return ""
859}
860
861func (x *Runner) GetArch() string {
862	if x != nil {
863		return x.Arch
864	}
865	return ""
866}
867
868func (x *Runner) GetOs() string {
869	if x != nil {
870		return x.Os
871	}
872	return ""
873}
874
875func (x *Runner) GetRegisteredAt() *timestamppb.Timestamp {
876	if x != nil {
877		return x.RegisteredAt
878	}
879	return nil
880}
881
882func (x *Runner) GetLastSeen() *timestamppb.Timestamp {
883	if x != nil {
884		return x.LastSeen
885	}
886	return nil
887}
888
889func (x *Runner) GetBusy() bool {
890	if x != nil {
891		return x.Busy
892	}
893	return false
894}
895
896// ListRunsRequest selects a page of runs.
897type ListRunsRequest struct {
898	state protoimpl.MessageState `protogen:"open.v1"`
899	// Repo is the repository name.
900	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
901	// PageSize is the maximum number of runs to return.
902	PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
903	// PageToken is the next_page_token of a previous response. Empty for the
904	// first page.
905	PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
906	// Workflow restricts the result to one workflow file: its path
907	// (".github/workflows/ci.yml") or its file name ("ci.yml"). Empty means
908	// every workflow. Ignored by servers without "ci.runs.filters".
909	Workflow string `protobuf:"bytes,4,opt,name=workflow,proto3" json:"workflow,omitempty"`
910	// Branch restricts the result to the runs whose ref is this branch, by
911	// short name ("main"). Empty means every ref. Ignored by servers without
912	// "ci.runs.filters".
913	Branch string `protobuf:"bytes,5,opt,name=branch,proto3" json:"branch,omitempty"`
914	// Status restricts the result to the runs whose latest attempt has this
915	// status. CI_STATUS_UNSPECIFIED means every status. Ignored by servers
916	// without "ci.runs.filters".
917	Status        CiStatus `protobuf:"varint,6,opt,name=status,proto3,enum=ermite.CiStatus" json:"status,omitempty"`
918	unknownFields protoimpl.UnknownFields
919	sizeCache     protoimpl.SizeCache
920}
921
922func (x *ListRunsRequest) Reset() {
923	*x = ListRunsRequest{}
924	mi := &file_ermite_run_proto_msgTypes[5]
925	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
926	ms.StoreMessageInfo(mi)
927}
928
929func (x *ListRunsRequest) String() string {
930	return protoimpl.X.MessageStringOf(x)
931}
932
933func (*ListRunsRequest) ProtoMessage() {}
934
935func (x *ListRunsRequest) ProtoReflect() protoreflect.Message {
936	mi := &file_ermite_run_proto_msgTypes[5]
937	if x != nil {
938		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
939		if ms.LoadMessageInfo() == nil {
940			ms.StoreMessageInfo(mi)
941		}
942		return ms
943	}
944	return mi.MessageOf(x)
945}
946
947// Deprecated: Use ListRunsRequest.ProtoReflect.Descriptor instead.
948func (*ListRunsRequest) Descriptor() ([]byte, []int) {
949	return file_ermite_run_proto_rawDescGZIP(), []int{5}
950}
951
952func (x *ListRunsRequest) GetRepo() string {
953	if x != nil {
954		return x.Repo
955	}
956	return ""
957}
958
959func (x *ListRunsRequest) GetPageSize() int32 {
960	if x != nil {
961		return x.PageSize
962	}
963	return 0
964}
965
966func (x *ListRunsRequest) GetPageToken() string {
967	if x != nil {
968		return x.PageToken
969	}
970	return ""
971}
972
973func (x *ListRunsRequest) GetWorkflow() string {
974	if x != nil {
975		return x.Workflow
976	}
977	return ""
978}
979
980func (x *ListRunsRequest) GetBranch() string {
981	if x != nil {
982		return x.Branch
983	}
984	return ""
985}
986
987func (x *ListRunsRequest) GetStatus() CiStatus {
988	if x != nil {
989		return x.Status
990	}
991	return CiStatus_CI_STATUS_UNSPECIFIED
992}
993
994// ListRunsResponse is one page of runs.
995type ListRunsResponse struct {
996	state protoimpl.MessageState `protogen:"open.v1"`
997	// Runs are the runs of this page, highest id first, without jobs.
998	Runs []*Run `protobuf:"bytes,1,rep,name=runs,proto3" json:"runs,omitempty"`
999	// NextPageToken is passed as page_token to get the next page. Empty when
1000	// there is no next page.
1001	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
1002	unknownFields protoimpl.UnknownFields
1003	sizeCache     protoimpl.SizeCache
1004}
1005
1006func (x *ListRunsResponse) Reset() {
1007	*x = ListRunsResponse{}
1008	mi := &file_ermite_run_proto_msgTypes[6]
1009	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1010	ms.StoreMessageInfo(mi)
1011}
1012
1013func (x *ListRunsResponse) String() string {
1014	return protoimpl.X.MessageStringOf(x)
1015}
1016
1017func (*ListRunsResponse) ProtoMessage() {}
1018
1019func (x *ListRunsResponse) ProtoReflect() protoreflect.Message {
1020	mi := &file_ermite_run_proto_msgTypes[6]
1021	if x != nil {
1022		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1023		if ms.LoadMessageInfo() == nil {
1024			ms.StoreMessageInfo(mi)
1025		}
1026		return ms
1027	}
1028	return mi.MessageOf(x)
1029}
1030
1031// Deprecated: Use ListRunsResponse.ProtoReflect.Descriptor instead.
1032func (*ListRunsResponse) Descriptor() ([]byte, []int) {
1033	return file_ermite_run_proto_rawDescGZIP(), []int{6}
1034}
1035
1036func (x *ListRunsResponse) GetRuns() []*Run {
1037	if x != nil {
1038		return x.Runs
1039	}
1040	return nil
1041}
1042
1043func (x *ListRunsResponse) GetNextPageToken() string {
1044	if x != nil {
1045		return x.NextPageToken
1046	}
1047	return ""
1048}
1049
1050// GetRunRequest selects a run.
1051type GetRunRequest struct {
1052	state protoimpl.MessageState `protogen:"open.v1"`
1053	// Repo is the repository name.
1054	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
1055	// RunId is the Run.id.
1056	RunId int64 `protobuf:"varint,2,opt,name=run_id,json=runId,proto3" json:"run_id,omitempty"`
1057	// Attempt is the attempt to read. 0 means the latest.
1058	Attempt       int32 `protobuf:"varint,3,opt,name=attempt,proto3" json:"attempt,omitempty"`
1059	unknownFields protoimpl.UnknownFields
1060	sizeCache     protoimpl.SizeCache
1061}
1062
1063func (x *GetRunRequest) Reset() {
1064	*x = GetRunRequest{}
1065	mi := &file_ermite_run_proto_msgTypes[7]
1066	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1067	ms.StoreMessageInfo(mi)
1068}
1069
1070func (x *GetRunRequest) String() string {
1071	return protoimpl.X.MessageStringOf(x)
1072}
1073
1074func (*GetRunRequest) ProtoMessage() {}
1075
1076func (x *GetRunRequest) ProtoReflect() protoreflect.Message {
1077	mi := &file_ermite_run_proto_msgTypes[7]
1078	if x != nil {
1079		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1080		if ms.LoadMessageInfo() == nil {
1081			ms.StoreMessageInfo(mi)
1082		}
1083		return ms
1084	}
1085	return mi.MessageOf(x)
1086}
1087
1088// Deprecated: Use GetRunRequest.ProtoReflect.Descriptor instead.
1089func (*GetRunRequest) Descriptor() ([]byte, []int) {
1090	return file_ermite_run_proto_rawDescGZIP(), []int{7}
1091}
1092
1093func (x *GetRunRequest) GetRepo() string {
1094	if x != nil {
1095		return x.Repo
1096	}
1097	return ""
1098}
1099
1100func (x *GetRunRequest) GetRunId() int64 {
1101	if x != nil {
1102		return x.RunId
1103	}
1104	return 0
1105}
1106
1107func (x *GetRunRequest) GetAttempt() int32 {
1108	if x != nil {
1109		return x.Attempt
1110	}
1111	return 0
1112}
1113
1114// GetRunResponse holds a run with its jobs.
1115type GetRunResponse struct {
1116	state protoimpl.MessageState `protogen:"open.v1"`
1117	// Run is the run, as of the attempt asked.
1118	Run *Run `protobuf:"bytes,1,opt,name=run,proto3" json:"run,omitempty"`
1119	// Jobs are the jobs of that attempt, with their steps, in the order of the
1120	// workflow file (matrix instances in the order of the matrix). Jobs kept from
1121	// an earlier attempt by a re-run of failed jobs are included, with their own
1122	// RunJob.attempt. Empty for a run that failed on an invalid workflow file.
1123	Jobs []*RunJob `protobuf:"bytes,2,rep,name=jobs,proto3" json:"jobs,omitempty"`
1124	// LatestAttempt is the latest attempt of the run, to offer the other ones.
1125	LatestAttempt int32 `protobuf:"varint,3,opt,name=latest_attempt,json=latestAttempt,proto3" json:"latest_attempt,omitempty"`
1126	unknownFields protoimpl.UnknownFields
1127	sizeCache     protoimpl.SizeCache
1128}
1129
1130func (x *GetRunResponse) Reset() {
1131	*x = GetRunResponse{}
1132	mi := &file_ermite_run_proto_msgTypes[8]
1133	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1134	ms.StoreMessageInfo(mi)
1135}
1136
1137func (x *GetRunResponse) String() string {
1138	return protoimpl.X.MessageStringOf(x)
1139}
1140
1141func (*GetRunResponse) ProtoMessage() {}
1142
1143func (x *GetRunResponse) ProtoReflect() protoreflect.Message {
1144	mi := &file_ermite_run_proto_msgTypes[8]
1145	if x != nil {
1146		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1147		if ms.LoadMessageInfo() == nil {
1148			ms.StoreMessageInfo(mi)
1149		}
1150		return ms
1151	}
1152	return mi.MessageOf(x)
1153}
1154
1155// Deprecated: Use GetRunResponse.ProtoReflect.Descriptor instead.
1156func (*GetRunResponse) Descriptor() ([]byte, []int) {
1157	return file_ermite_run_proto_rawDescGZIP(), []int{8}
1158}
1159
1160func (x *GetRunResponse) GetRun() *Run {
1161	if x != nil {
1162		return x.Run
1163	}
1164	return nil
1165}
1166
1167func (x *GetRunResponse) GetJobs() []*RunJob {
1168	if x != nil {
1169		return x.Jobs
1170	}
1171	return nil
1172}
1173
1174func (x *GetRunResponse) GetLatestAttempt() int32 {
1175	if x != nil {
1176		return x.LatestAttempt
1177	}
1178	return 0
1179}
1180
1181// GetJobRequest selects a job.
1182type GetJobRequest struct {
1183	state protoimpl.MessageState `protogen:"open.v1"`
1184	// Repo is the repository name.
1185	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
1186	// JobId is the RunJob.id.
1187	JobId string `protobuf:"bytes,2,opt,name=job_id,json=jobId,proto3" json:"job_id,omitempty"`
1188	// Attempt is the RunJob.attempt to read. 0 means the latest.
1189	Attempt       int32 `protobuf:"varint,3,opt,name=attempt,proto3" json:"attempt,omitempty"`
1190	unknownFields protoimpl.UnknownFields
1191	sizeCache     protoimpl.SizeCache
1192}
1193
1194func (x *GetJobRequest) Reset() {
1195	*x = GetJobRequest{}
1196	mi := &file_ermite_run_proto_msgTypes[9]
1197	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1198	ms.StoreMessageInfo(mi)
1199}
1200
1201func (x *GetJobRequest) String() string {
1202	return protoimpl.X.MessageStringOf(x)
1203}
1204
1205func (*GetJobRequest) ProtoMessage() {}
1206
1207func (x *GetJobRequest) ProtoReflect() protoreflect.Message {
1208	mi := &file_ermite_run_proto_msgTypes[9]
1209	if x != nil {
1210		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1211		if ms.LoadMessageInfo() == nil {
1212			ms.StoreMessageInfo(mi)
1213		}
1214		return ms
1215	}
1216	return mi.MessageOf(x)
1217}
1218
1219// Deprecated: Use GetJobRequest.ProtoReflect.Descriptor instead.
1220func (*GetJobRequest) Descriptor() ([]byte, []int) {
1221	return file_ermite_run_proto_rawDescGZIP(), []int{9}
1222}
1223
1224func (x *GetJobRequest) GetRepo() string {
1225	if x != nil {
1226		return x.Repo
1227	}
1228	return ""
1229}
1230
1231func (x *GetJobRequest) GetJobId() string {
1232	if x != nil {
1233		return x.JobId
1234	}
1235	return ""
1236}
1237
1238func (x *GetJobRequest) GetAttempt() int32 {
1239	if x != nil {
1240		return x.Attempt
1241	}
1242	return 0
1243}
1244
1245// GetJobResponse holds a job.
1246type GetJobResponse struct {
1247	state protoimpl.MessageState `protogen:"open.v1"`
1248	// Job is the job with its steps.
1249	Job           *RunJob `protobuf:"bytes,1,opt,name=job,proto3" json:"job,omitempty"`
1250	unknownFields protoimpl.UnknownFields
1251	sizeCache     protoimpl.SizeCache
1252}
1253
1254func (x *GetJobResponse) Reset() {
1255	*x = GetJobResponse{}
1256	mi := &file_ermite_run_proto_msgTypes[10]
1257	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1258	ms.StoreMessageInfo(mi)
1259}
1260
1261func (x *GetJobResponse) String() string {
1262	return protoimpl.X.MessageStringOf(x)
1263}
1264
1265func (*GetJobResponse) ProtoMessage() {}
1266
1267func (x *GetJobResponse) ProtoReflect() protoreflect.Message {
1268	mi := &file_ermite_run_proto_msgTypes[10]
1269	if x != nil {
1270		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1271		if ms.LoadMessageInfo() == nil {
1272			ms.StoreMessageInfo(mi)
1273		}
1274		return ms
1275	}
1276	return mi.MessageOf(x)
1277}
1278
1279// Deprecated: Use GetJobResponse.ProtoReflect.Descriptor instead.
1280func (*GetJobResponse) Descriptor() ([]byte, []int) {
1281	return file_ermite_run_proto_rawDescGZIP(), []int{10}
1282}
1283
1284func (x *GetJobResponse) GetJob() *RunJob {
1285	if x != nil {
1286		return x.Job
1287	}
1288	return nil
1289}
1290
1291// GetJobLogRequest selects the lines to stream.
1292type GetJobLogRequest struct {
1293	state protoimpl.MessageState `protogen:"open.v1"`
1294	// Repo is the repository name.
1295	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
1296	// JobId is the RunJob.id.
1297	JobId string `protobuf:"bytes,2,opt,name=job_id,json=jobId,proto3" json:"job_id,omitempty"`
1298	// Attempt is the RunJob.attempt whose log to read. 0 means the latest.
1299	Attempt int32 `protobuf:"varint,3,opt,name=attempt,proto3" json:"attempt,omitempty"`
1300	// Offset is the number of the first line to send, counted from 0 across all
1301	// steps (see Step.log_start). Negative is invalid_argument.
1302	Offset int64 `protobuf:"varint,4,opt,name=offset,proto3" json:"offset,omitempty"`
1303	// Follow keeps the stream open while the job runs. See GetJobLog.
1304	Follow        bool `protobuf:"varint,5,opt,name=follow,proto3" json:"follow,omitempty"`
1305	unknownFields protoimpl.UnknownFields
1306	sizeCache     protoimpl.SizeCache
1307}
1308
1309func (x *GetJobLogRequest) Reset() {
1310	*x = GetJobLogRequest{}
1311	mi := &file_ermite_run_proto_msgTypes[11]
1312	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1313	ms.StoreMessageInfo(mi)
1314}
1315
1316func (x *GetJobLogRequest) String() string {
1317	return protoimpl.X.MessageStringOf(x)
1318}
1319
1320func (*GetJobLogRequest) ProtoMessage() {}
1321
1322func (x *GetJobLogRequest) ProtoReflect() protoreflect.Message {
1323	mi := &file_ermite_run_proto_msgTypes[11]
1324	if x != nil {
1325		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1326		if ms.LoadMessageInfo() == nil {
1327			ms.StoreMessageInfo(mi)
1328		}
1329		return ms
1330	}
1331	return mi.MessageOf(x)
1332}
1333
1334// Deprecated: Use GetJobLogRequest.ProtoReflect.Descriptor instead.
1335func (*GetJobLogRequest) Descriptor() ([]byte, []int) {
1336	return file_ermite_run_proto_rawDescGZIP(), []int{11}
1337}
1338
1339func (x *GetJobLogRequest) GetRepo() string {
1340	if x != nil {
1341		return x.Repo
1342	}
1343	return ""
1344}
1345
1346func (x *GetJobLogRequest) GetJobId() string {
1347	if x != nil {
1348		return x.JobId
1349	}
1350	return ""
1351}
1352
1353func (x *GetJobLogRequest) GetAttempt() int32 {
1354	if x != nil {
1355		return x.Attempt
1356	}
1357	return 0
1358}
1359
1360func (x *GetJobLogRequest) GetOffset() int64 {
1361	if x != nil {
1362		return x.Offset
1363	}
1364	return 0
1365}
1366
1367func (x *GetJobLogRequest) GetFollow() bool {
1368	if x != nil {
1369		return x.Follow
1370	}
1371	return false
1372}
1373
1374// GetJobLogResponse is one message of the log stream.
1375type GetJobLogResponse struct {
1376	state protoimpl.MessageState `protogen:"open.v1"`
1377	// Offset is the number of the first line of lines.
1378	Offset int64 `protobuf:"varint,1,opt,name=offset,proto3" json:"offset,omitempty"`
1379	// Lines are consecutive lines of the log, at most 1,000, at most 64 KiB of
1380	// text in total. Never empty.
1381	Lines         []*JobLogLine `protobuf:"bytes,2,rep,name=lines,proto3" json:"lines,omitempty"`
1382	unknownFields protoimpl.UnknownFields
1383	sizeCache     protoimpl.SizeCache
1384}
1385
1386func (x *GetJobLogResponse) Reset() {
1387	*x = GetJobLogResponse{}
1388	mi := &file_ermite_run_proto_msgTypes[12]
1389	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1390	ms.StoreMessageInfo(mi)
1391}
1392
1393func (x *GetJobLogResponse) String() string {
1394	return protoimpl.X.MessageStringOf(x)
1395}
1396
1397func (*GetJobLogResponse) ProtoMessage() {}
1398
1399func (x *GetJobLogResponse) ProtoReflect() protoreflect.Message {
1400	mi := &file_ermite_run_proto_msgTypes[12]
1401	if x != nil {
1402		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1403		if ms.LoadMessageInfo() == nil {
1404			ms.StoreMessageInfo(mi)
1405		}
1406		return ms
1407	}
1408	return mi.MessageOf(x)
1409}
1410
1411// Deprecated: Use GetJobLogResponse.ProtoReflect.Descriptor instead.
1412func (*GetJobLogResponse) Descriptor() ([]byte, []int) {
1413	return file_ermite_run_proto_rawDescGZIP(), []int{12}
1414}
1415
1416func (x *GetJobLogResponse) GetOffset() int64 {
1417	if x != nil {
1418		return x.Offset
1419	}
1420	return 0
1421}
1422
1423func (x *GetJobLogResponse) GetLines() []*JobLogLine {
1424	if x != nil {
1425		return x.Lines
1426	}
1427	return nil
1428}
1429
1430// JobLogLine is one line of a job log, as the runner sent it.
1431type JobLogLine struct {
1432	state protoimpl.MessageState `protogen:"open.v1"`
1433	// Step is the number of the step the line belongs to.
1434	Step int32 `protobuf:"varint,1,opt,name=step,proto3" json:"step,omitempty"`
1435	// Time is when the runner produced the line, with nanosecond precision.
1436	Time *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=time,proto3" json:"time,omitempty"`
1437	// Text is the line without its terminator, as in LogLine.text, including the
1438	// "##[group]" and "##[endgroup]" markers. Clients show it escaped.
1439	Text string `protobuf:"bytes,3,opt,name=text,proto3" json:"text,omitempty"`
1440	// Continued is true when the line continues the line before it, which was
1441	// too long for the runner to send whole (see LogLine.continued). Pieces keep
1442	// their own line numbers, so offsets are the same as the runner's; a client
1443	// that shows lines joins a continued line to the previous one. The raw log
1444	// file already has them joined.
1445	Continued     bool `protobuf:"varint,4,opt,name=continued,proto3" json:"continued,omitempty"`
1446	unknownFields protoimpl.UnknownFields
1447	sizeCache     protoimpl.SizeCache
1448}
1449
1450func (x *JobLogLine) Reset() {
1451	*x = JobLogLine{}
1452	mi := &file_ermite_run_proto_msgTypes[13]
1453	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1454	ms.StoreMessageInfo(mi)
1455}
1456
1457func (x *JobLogLine) String() string {
1458	return protoimpl.X.MessageStringOf(x)
1459}
1460
1461func (*JobLogLine) ProtoMessage() {}
1462
1463func (x *JobLogLine) ProtoReflect() protoreflect.Message {
1464	mi := &file_ermite_run_proto_msgTypes[13]
1465	if x != nil {
1466		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1467		if ms.LoadMessageInfo() == nil {
1468			ms.StoreMessageInfo(mi)
1469		}
1470		return ms
1471	}
1472	return mi.MessageOf(x)
1473}
1474
1475// Deprecated: Use JobLogLine.ProtoReflect.Descriptor instead.
1476func (*JobLogLine) Descriptor() ([]byte, []int) {
1477	return file_ermite_run_proto_rawDescGZIP(), []int{13}
1478}
1479
1480func (x *JobLogLine) GetStep() int32 {
1481	if x != nil {
1482		return x.Step
1483	}
1484	return 0
1485}
1486
1487func (x *JobLogLine) GetTime() *timestamppb.Timestamp {
1488	if x != nil {
1489		return x.Time
1490	}
1491	return nil
1492}
1493
1494func (x *JobLogLine) GetText() string {
1495	if x != nil {
1496		return x.Text
1497	}
1498	return ""
1499}
1500
1501func (x *JobLogLine) GetContinued() bool {
1502	if x != nil {
1503		return x.Continued
1504	}
1505	return false
1506}
1507
1508// CancelRunRequest names the run to cancel.
1509type CancelRunRequest struct {
1510	state protoimpl.MessageState `protogen:"open.v1"`
1511	// Repo is the repository name.
1512	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
1513	// RunId is the Run.id.
1514	RunId         int64 `protobuf:"varint,2,opt,name=run_id,json=runId,proto3" json:"run_id,omitempty"`
1515	unknownFields protoimpl.UnknownFields
1516	sizeCache     protoimpl.SizeCache
1517}
1518
1519func (x *CancelRunRequest) Reset() {
1520	*x = CancelRunRequest{}
1521	mi := &file_ermite_run_proto_msgTypes[14]
1522	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1523	ms.StoreMessageInfo(mi)
1524}
1525
1526func (x *CancelRunRequest) String() string {
1527	return protoimpl.X.MessageStringOf(x)
1528}
1529
1530func (*CancelRunRequest) ProtoMessage() {}
1531
1532func (x *CancelRunRequest) ProtoReflect() protoreflect.Message {
1533	mi := &file_ermite_run_proto_msgTypes[14]
1534	if x != nil {
1535		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1536		if ms.LoadMessageInfo() == nil {
1537			ms.StoreMessageInfo(mi)
1538		}
1539		return ms
1540	}
1541	return mi.MessageOf(x)
1542}
1543
1544// Deprecated: Use CancelRunRequest.ProtoReflect.Descriptor instead.
1545func (*CancelRunRequest) Descriptor() ([]byte, []int) {
1546	return file_ermite_run_proto_rawDescGZIP(), []int{14}
1547}
1548
1549func (x *CancelRunRequest) GetRepo() string {
1550	if x != nil {
1551		return x.Repo
1552	}
1553	return ""
1554}
1555
1556func (x *CancelRunRequest) GetRunId() int64 {
1557	if x != nil {
1558		return x.RunId
1559	}
1560	return 0
1561}
1562
1563// CancelRunResponse holds the run after the request.
1564type CancelRunResponse struct {
1565	state protoimpl.MessageState `protogen:"open.v1"`
1566	// Run is the latest attempt of the run.
1567	Run           *Run `protobuf:"bytes,1,opt,name=run,proto3" json:"run,omitempty"`
1568	unknownFields protoimpl.UnknownFields
1569	sizeCache     protoimpl.SizeCache
1570}
1571
1572func (x *CancelRunResponse) Reset() {
1573	*x = CancelRunResponse{}
1574	mi := &file_ermite_run_proto_msgTypes[15]
1575	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1576	ms.StoreMessageInfo(mi)
1577}
1578
1579func (x *CancelRunResponse) String() string {
1580	return protoimpl.X.MessageStringOf(x)
1581}
1582
1583func (*CancelRunResponse) ProtoMessage() {}
1584
1585func (x *CancelRunResponse) ProtoReflect() protoreflect.Message {
1586	mi := &file_ermite_run_proto_msgTypes[15]
1587	if x != nil {
1588		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1589		if ms.LoadMessageInfo() == nil {
1590			ms.StoreMessageInfo(mi)
1591		}
1592		return ms
1593	}
1594	return mi.MessageOf(x)
1595}
1596
1597// Deprecated: Use CancelRunResponse.ProtoReflect.Descriptor instead.
1598func (*CancelRunResponse) Descriptor() ([]byte, []int) {
1599	return file_ermite_run_proto_rawDescGZIP(), []int{15}
1600}
1601
1602func (x *CancelRunResponse) GetRun() *Run {
1603	if x != nil {
1604		return x.Run
1605	}
1606	return nil
1607}
1608
1609// RerunRunRequest names the run to run again.
1610type RerunRunRequest struct {
1611	state protoimpl.MessageState `protogen:"open.v1"`
1612	// Repo is the repository name.
1613	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
1614	// RunId is the Run.id.
1615	RunId int64 `protobuf:"varint,2,opt,name=run_id,json=runId,proto3" json:"run_id,omitempty"`
1616	// FailedOnly runs again only the jobs of the latest attempt that did not
1617	// succeed (conclusion FAILURE, CANCELLED, TIMED_OUT or ACTION_REQUIRED) and
1618	// the jobs that need them, directly or not, even if they were skipped. The
1619	// other jobs keep their result, steps and log from the earlier attempt. When
1620	// false, every job runs again.
1621	FailedOnly    bool `protobuf:"varint,3,opt,name=failed_only,json=failedOnly,proto3" json:"failed_only,omitempty"`
1622	unknownFields protoimpl.UnknownFields
1623	sizeCache     protoimpl.SizeCache
1624}
1625
1626func (x *RerunRunRequest) Reset() {
1627	*x = RerunRunRequest{}
1628	mi := &file_ermite_run_proto_msgTypes[16]
1629	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1630	ms.StoreMessageInfo(mi)
1631}
1632
1633func (x *RerunRunRequest) String() string {
1634	return protoimpl.X.MessageStringOf(x)
1635}
1636
1637func (*RerunRunRequest) ProtoMessage() {}
1638
1639func (x *RerunRunRequest) ProtoReflect() protoreflect.Message {
1640	mi := &file_ermite_run_proto_msgTypes[16]
1641	if x != nil {
1642		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1643		if ms.LoadMessageInfo() == nil {
1644			ms.StoreMessageInfo(mi)
1645		}
1646		return ms
1647	}
1648	return mi.MessageOf(x)
1649}
1650
1651// Deprecated: Use RerunRunRequest.ProtoReflect.Descriptor instead.
1652func (*RerunRunRequest) Descriptor() ([]byte, []int) {
1653	return file_ermite_run_proto_rawDescGZIP(), []int{16}
1654}
1655
1656func (x *RerunRunRequest) GetRepo() string {
1657	if x != nil {
1658		return x.Repo
1659	}
1660	return ""
1661}
1662
1663func (x *RerunRunRequest) GetRunId() int64 {
1664	if x != nil {
1665		return x.RunId
1666	}
1667	return 0
1668}
1669
1670func (x *RerunRunRequest) GetFailedOnly() bool {
1671	if x != nil {
1672		return x.FailedOnly
1673	}
1674	return false
1675}
1676
1677// RerunRunResponse holds the new attempt.
1678type RerunRunResponse struct {
1679	state protoimpl.MessageState `protogen:"open.v1"`
1680	// Run is the run as of the new attempt, QUEUED.
1681	Run           *Run `protobuf:"bytes,1,opt,name=run,proto3" json:"run,omitempty"`
1682	unknownFields protoimpl.UnknownFields
1683	sizeCache     protoimpl.SizeCache
1684}
1685
1686func (x *RerunRunResponse) Reset() {
1687	*x = RerunRunResponse{}
1688	mi := &file_ermite_run_proto_msgTypes[17]
1689	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1690	ms.StoreMessageInfo(mi)
1691}
1692
1693func (x *RerunRunResponse) String() string {
1694	return protoimpl.X.MessageStringOf(x)
1695}
1696
1697func (*RerunRunResponse) ProtoMessage() {}
1698
1699func (x *RerunRunResponse) ProtoReflect() protoreflect.Message {
1700	mi := &file_ermite_run_proto_msgTypes[17]
1701	if x != nil {
1702		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1703		if ms.LoadMessageInfo() == nil {
1704			ms.StoreMessageInfo(mi)
1705		}
1706		return ms
1707	}
1708	return mi.MessageOf(x)
1709}
1710
1711// Deprecated: Use RerunRunResponse.ProtoReflect.Descriptor instead.
1712func (*RerunRunResponse) Descriptor() ([]byte, []int) {
1713	return file_ermite_run_proto_rawDescGZIP(), []int{17}
1714}
1715
1716func (x *RerunRunResponse) GetRun() *Run {
1717	if x != nil {
1718		return x.Run
1719	}
1720	return nil
1721}
1722
1723// ListChecksRequest names the commit.
1724type ListChecksRequest struct {
1725	state protoimpl.MessageState `protogen:"open.v1"`
1726	// Repo is the repository name.
1727	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
1728	// Sha is the full commit id (40 lowercase hexadecimal characters for SHA-1).
1729	// Abbreviations and names are invalid_argument.
1730	Sha           string `protobuf:"bytes,2,opt,name=sha,proto3" json:"sha,omitempty"`
1731	unknownFields protoimpl.UnknownFields
1732	sizeCache     protoimpl.SizeCache
1733}
1734
1735func (x *ListChecksRequest) Reset() {
1736	*x = ListChecksRequest{}
1737	mi := &file_ermite_run_proto_msgTypes[18]
1738	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1739	ms.StoreMessageInfo(mi)
1740}
1741
1742func (x *ListChecksRequest) String() string {
1743	return protoimpl.X.MessageStringOf(x)
1744}
1745
1746func (*ListChecksRequest) ProtoMessage() {}
1747
1748func (x *ListChecksRequest) ProtoReflect() protoreflect.Message {
1749	mi := &file_ermite_run_proto_msgTypes[18]
1750	if x != nil {
1751		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1752		if ms.LoadMessageInfo() == nil {
1753			ms.StoreMessageInfo(mi)
1754		}
1755		return ms
1756	}
1757	return mi.MessageOf(x)
1758}
1759
1760// Deprecated: Use ListChecksRequest.ProtoReflect.Descriptor instead.
1761func (*ListChecksRequest) Descriptor() ([]byte, []int) {
1762	return file_ermite_run_proto_rawDescGZIP(), []int{18}
1763}
1764
1765func (x *ListChecksRequest) GetRepo() string {
1766	if x != nil {
1767		return x.Repo
1768	}
1769	return ""
1770}
1771
1772func (x *ListChecksRequest) GetSha() string {
1773	if x != nil {
1774		return x.Sha
1775	}
1776	return ""
1777}
1778
1779// ListChecksResponse holds the checks of a commit.
1780type ListChecksResponse struct {
1781	state protoimpl.MessageState `protogen:"open.v1"`
1782	// Checks are the checks of the commit, one per job of the latest attempt of
1783	// each run, ordered by creation time then name.
1784	Checks []*Check `protobuf:"bytes,1,rep,name=checks,proto3" json:"checks,omitempty"`
1785	// Truncated is true when the commit has more checks than checks holds.
1786	Truncated     bool `protobuf:"varint,2,opt,name=truncated,proto3" json:"truncated,omitempty"`
1787	unknownFields protoimpl.UnknownFields
1788	sizeCache     protoimpl.SizeCache
1789}
1790
1791func (x *ListChecksResponse) Reset() {
1792	*x = ListChecksResponse{}
1793	mi := &file_ermite_run_proto_msgTypes[19]
1794	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1795	ms.StoreMessageInfo(mi)
1796}
1797
1798func (x *ListChecksResponse) String() string {
1799	return protoimpl.X.MessageStringOf(x)
1800}
1801
1802func (*ListChecksResponse) ProtoMessage() {}
1803
1804func (x *ListChecksResponse) ProtoReflect() protoreflect.Message {
1805	mi := &file_ermite_run_proto_msgTypes[19]
1806	if x != nil {
1807		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1808		if ms.LoadMessageInfo() == nil {
1809			ms.StoreMessageInfo(mi)
1810		}
1811		return ms
1812	}
1813	return mi.MessageOf(x)
1814}
1815
1816// Deprecated: Use ListChecksResponse.ProtoReflect.Descriptor instead.
1817func (*ListChecksResponse) Descriptor() ([]byte, []int) {
1818	return file_ermite_run_proto_rawDescGZIP(), []int{19}
1819}
1820
1821func (x *ListChecksResponse) GetChecks() []*Check {
1822	if x != nil {
1823		return x.Checks
1824	}
1825	return nil
1826}
1827
1828func (x *ListChecksResponse) GetTruncated() bool {
1829	if x != nil {
1830		return x.Truncated
1831	}
1832	return false
1833}
1834
1835// ListRunnersRequest selects a page of runners.
1836type ListRunnersRequest struct {
1837	state protoimpl.MessageState `protogen:"open.v1"`
1838	// PageSize is the maximum number of runners to return.
1839	PageSize int32 `protobuf:"varint,1,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
1840	// PageToken is the next_page_token of a previous response. Empty for the
1841	// first page.
1842	PageToken     string `protobuf:"bytes,2,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
1843	unknownFields protoimpl.UnknownFields
1844	sizeCache     protoimpl.SizeCache
1845}
1846
1847func (x *ListRunnersRequest) Reset() {
1848	*x = ListRunnersRequest{}
1849	mi := &file_ermite_run_proto_msgTypes[20]
1850	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1851	ms.StoreMessageInfo(mi)
1852}
1853
1854func (x *ListRunnersRequest) String() string {
1855	return protoimpl.X.MessageStringOf(x)
1856}
1857
1858func (*ListRunnersRequest) ProtoMessage() {}
1859
1860func (x *ListRunnersRequest) ProtoReflect() protoreflect.Message {
1861	mi := &file_ermite_run_proto_msgTypes[20]
1862	if x != nil {
1863		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1864		if ms.LoadMessageInfo() == nil {
1865			ms.StoreMessageInfo(mi)
1866		}
1867		return ms
1868	}
1869	return mi.MessageOf(x)
1870}
1871
1872// Deprecated: Use ListRunnersRequest.ProtoReflect.Descriptor instead.
1873func (*ListRunnersRequest) Descriptor() ([]byte, []int) {
1874	return file_ermite_run_proto_rawDescGZIP(), []int{20}
1875}
1876
1877func (x *ListRunnersRequest) GetPageSize() int32 {
1878	if x != nil {
1879		return x.PageSize
1880	}
1881	return 0
1882}
1883
1884func (x *ListRunnersRequest) GetPageToken() string {
1885	if x != nil {
1886		return x.PageToken
1887	}
1888	return ""
1889}
1890
1891// ListRunnersResponse is one page of runners.
1892type ListRunnersResponse struct {
1893	state protoimpl.MessageState `protogen:"open.v1"`
1894	// Runners are the runners of this page, ordered by name.
1895	Runners []*Runner `protobuf:"bytes,1,rep,name=runners,proto3" json:"runners,omitempty"`
1896	// NextPageToken is passed as page_token to get the next page. Empty when
1897	// there is no next page.
1898	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
1899	unknownFields protoimpl.UnknownFields
1900	sizeCache     protoimpl.SizeCache
1901}
1902
1903func (x *ListRunnersResponse) Reset() {
1904	*x = ListRunnersResponse{}
1905	mi := &file_ermite_run_proto_msgTypes[21]
1906	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1907	ms.StoreMessageInfo(mi)
1908}
1909
1910func (x *ListRunnersResponse) String() string {
1911	return protoimpl.X.MessageStringOf(x)
1912}
1913
1914func (*ListRunnersResponse) ProtoMessage() {}
1915
1916func (x *ListRunnersResponse) ProtoReflect() protoreflect.Message {
1917	mi := &file_ermite_run_proto_msgTypes[21]
1918	if x != nil {
1919		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1920		if ms.LoadMessageInfo() == nil {
1921			ms.StoreMessageInfo(mi)
1922		}
1923		return ms
1924	}
1925	return mi.MessageOf(x)
1926}
1927
1928// Deprecated: Use ListRunnersResponse.ProtoReflect.Descriptor instead.
1929func (*ListRunnersResponse) Descriptor() ([]byte, []int) {
1930	return file_ermite_run_proto_rawDescGZIP(), []int{21}
1931}
1932
1933func (x *ListRunnersResponse) GetRunners() []*Runner {
1934	if x != nil {
1935		return x.Runners
1936	}
1937	return nil
1938}
1939
1940func (x *ListRunnersResponse) GetNextPageToken() string {
1941	if x != nil {
1942		return x.NextPageToken
1943	}
1944	return ""
1945}
1946
1947// RemoveRunnerRequest names the runner to remove.
1948type RemoveRunnerRequest struct {
1949	state protoimpl.MessageState `protogen:"open.v1"`
1950	// RunnerId is the Runner.id.
1951	RunnerId      string `protobuf:"bytes,1,opt,name=runner_id,json=runnerId,proto3" json:"runner_id,omitempty"`
1952	unknownFields protoimpl.UnknownFields
1953	sizeCache     protoimpl.SizeCache
1954}
1955
1956func (x *RemoveRunnerRequest) Reset() {
1957	*x = RemoveRunnerRequest{}
1958	mi := &file_ermite_run_proto_msgTypes[22]
1959	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1960	ms.StoreMessageInfo(mi)
1961}
1962
1963func (x *RemoveRunnerRequest) String() string {
1964	return protoimpl.X.MessageStringOf(x)
1965}
1966
1967func (*RemoveRunnerRequest) ProtoMessage() {}
1968
1969func (x *RemoveRunnerRequest) ProtoReflect() protoreflect.Message {
1970	mi := &file_ermite_run_proto_msgTypes[22]
1971	if x != nil {
1972		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1973		if ms.LoadMessageInfo() == nil {
1974			ms.StoreMessageInfo(mi)
1975		}
1976		return ms
1977	}
1978	return mi.MessageOf(x)
1979}
1980
1981// Deprecated: Use RemoveRunnerRequest.ProtoReflect.Descriptor instead.
1982func (*RemoveRunnerRequest) Descriptor() ([]byte, []int) {
1983	return file_ermite_run_proto_rawDescGZIP(), []int{22}
1984}
1985
1986func (x *RemoveRunnerRequest) GetRunnerId() string {
1987	if x != nil {
1988		return x.RunnerId
1989	}
1990	return ""
1991}
1992
1993// RemoveRunnerResponse is empty.
1994type RemoveRunnerResponse struct {
1995	state         protoimpl.MessageState `protogen:"open.v1"`
1996	unknownFields protoimpl.UnknownFields
1997	sizeCache     protoimpl.SizeCache
1998}
1999
2000func (x *RemoveRunnerResponse) Reset() {
2001	*x = RemoveRunnerResponse{}
2002	mi := &file_ermite_run_proto_msgTypes[23]
2003	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2004	ms.StoreMessageInfo(mi)
2005}
2006
2007func (x *RemoveRunnerResponse) String() string {
2008	return protoimpl.X.MessageStringOf(x)
2009}
2010
2011func (*RemoveRunnerResponse) ProtoMessage() {}
2012
2013func (x *RemoveRunnerResponse) ProtoReflect() protoreflect.Message {
2014	mi := &file_ermite_run_proto_msgTypes[23]
2015	if x != nil {
2016		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2017		if ms.LoadMessageInfo() == nil {
2018			ms.StoreMessageInfo(mi)
2019		}
2020		return ms
2021	}
2022	return mi.MessageOf(x)
2023}
2024
2025// Deprecated: Use RemoveRunnerResponse.ProtoReflect.Descriptor instead.
2026func (*RemoveRunnerResponse) Descriptor() ([]byte, []int) {
2027	return file_ermite_run_proto_rawDescGZIP(), []int{23}
2028}
2029
2030var File_ermite_run_proto protoreflect.FileDescriptor
2031
2032const file_ermite_run_proto_rawDesc = "" +
2033	"\n" +
2034	"\x10ermite/run.proto\x12\x06ermite\x1a\x13ermite/runner.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xe4\x04\n" +
2035	"\x03Run\x12\x12\n" +
2036	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x0e\n" +
2037	"\x02id\x18\x02 \x01(\x03R\x02id\x12\x16\n" +
2038	"\x06number\x18\x03 \x01(\x03R\x06number\x12\x18\n" +
2039	"\aattempt\x18\x04 \x01(\x05R\aattempt\x12#\n" +
2040	"\rworkflow_path\x18\x05 \x01(\tR\fworkflowPath\x12#\n" +
2041	"\rworkflow_name\x18\x06 \x01(\tR\fworkflowName\x12\x14\n" +
2042	"\x05title\x18\a \x01(\tR\x05title\x12\x14\n" +
2043	"\x05event\x18\b \x01(\tR\x05event\x12\x10\n" +
2044	"\x03ref\x18\t \x01(\tR\x03ref\x12\x10\n" +
2045	"\x03sha\x18\n" +
2046	" \x01(\tR\x03sha\x12\x14\n" +
2047	"\x05actor\x18\v \x01(\tR\x05actor\x12(\n" +
2048	"\x06status\x18\f \x01(\x0e2\x10.ermite.CiStatusR\x06status\x124\n" +
2049	"\n" +
2050	"conclusion\x18\r \x01(\x0e2\x14.ermite.CiConclusionR\n" +
2051	"conclusion\x12\x14\n" +
2052	"\x05error\x18\x0e \x01(\tR\x05error\x129\n" +
2053	"\n" +
2054	"created_at\x18\x0f \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x129\n" +
2055	"\n" +
2056	"started_at\x18\x10 \x01(\v2\x1a.google.protobuf.TimestampR\tstartedAt\x12=\n" +
2057	"\fcompleted_at\x18\x11 \x01(\v2\x1a.google.protobuf.TimestampR\vcompletedAt\x12\x18\n" +
2058	"\aversion\x18\x12 \x01(\x03R\aversion\x12\x12\n" +
2059	"\x04name\x18\x13 \x01(\tR\x04name\"\x8f\x05\n" +
2060	"\x06RunJob\x12\x0e\n" +
2061	"\x02id\x18\x01 \x01(\tR\x02id\x12\x15\n" +
2062	"\x06run_id\x18\x02 \x01(\x03R\x05runId\x12\x18\n" +
2063	"\aattempt\x18\x03 \x01(\x05R\aattempt\x12\x12\n" +
2064	"\x04repo\x18\x04 \x01(\tR\x04repo\x12\x10\n" +
2065	"\x03key\x18\x05 \x01(\tR\x03key\x12\x12\n" +
2066	"\x04name\x18\x06 \x01(\tR\x04name\x12(\n" +
2067	"\x06status\x18\a \x01(\x0e2\x10.ermite.CiStatusR\x06status\x124\n" +
2068	"\n" +
2069	"conclusion\x18\b \x01(\x0e2\x14.ermite.CiConclusionR\n" +
2070	"conclusion\x12\x14\n" +
2071	"\x05error\x18\t \x01(\tR\x05error\x12\x16\n" +
2072	"\x06labels\x18\n" +
2073	" \x03(\tR\x06labels\x12\x14\n" +
2074	"\x05needs\x18\v \x03(\tR\x05needs\x12\x1b\n" +
2075	"\trunner_id\x18\f \x01(\tR\brunnerId\x12\x1f\n" +
2076	"\vrunner_name\x18\r \x01(\tR\n" +
2077	"runnerName\x125\n" +
2078	"\tisolation\x18\x0e \x01(\x0e2\x17.ermite.RunnerIsolationR\tisolation\x12\"\n" +
2079	"\x05steps\x18\x0f \x03(\v2\f.ermite.StepR\x05steps\x129\n" +
2080	"\n" +
2081	"created_at\x18\x10 \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x129\n" +
2082	"\n" +
2083	"started_at\x18\x11 \x01(\v2\x1a.google.protobuf.TimestampR\tstartedAt\x12=\n" +
2084	"\fcompleted_at\x18\x12 \x01(\v2\x1a.google.protobuf.TimestampR\vcompletedAt\x12\x18\n" +
2085	"\aversion\x18\x13 \x01(\x03R\aversion\"\xc1\x02\n" +
2086	"\x04Step\x12\x16\n" +
2087	"\x06number\x18\x01 \x01(\x05R\x06number\x12\x12\n" +
2088	"\x04name\x18\x02 \x01(\tR\x04name\x12'\n" +
2089	"\x05state\x18\x03 \x01(\x0e2\x11.ermite.StepStateR\x05state\x124\n" +
2090	"\n" +
2091	"conclusion\x18\x04 \x01(\x0e2\x14.ermite.CiConclusionR\n" +
2092	"conclusion\x129\n" +
2093	"\n" +
2094	"started_at\x18\x05 \x01(\v2\x1a.google.protobuf.TimestampR\tstartedAt\x12=\n" +
2095	"\fcompleted_at\x18\x06 \x01(\v2\x1a.google.protobuf.TimestampR\vcompletedAt\x12\x1b\n" +
2096	"\tlog_start\x18\a \x01(\x03R\blogStart\x12\x17\n" +
2097	"\alog_end\x18\b \x01(\x03R\x06logEnd\"\x98\x03\n" +
2098	"\x05Check\x12\x0e\n" +
2099	"\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" +
2100	"\x04repo\x18\x02 \x01(\tR\x04repo\x12\x10\n" +
2101	"\x03sha\x18\x03 \x01(\tR\x03sha\x12\x12\n" +
2102	"\x04name\x18\x04 \x01(\tR\x04name\x12(\n" +
2103	"\x06status\x18\x05 \x01(\x0e2\x10.ermite.CiStatusR\x06status\x124\n" +
2104	"\n" +
2105	"conclusion\x18\x06 \x01(\x0e2\x14.ermite.CiConclusionR\n" +
2106	"conclusion\x12\x15\n" +
2107	"\x06run_id\x18\a \x01(\x03R\x05runId\x12\x15\n" +
2108	"\x06job_id\x18\b \x01(\tR\x05jobId\x12\x18\n" +
2109	"\aattempt\x18\t \x01(\x05R\aattempt\x12#\n" +
2110	"\rworkflow_name\x18\n" +
2111	" \x01(\tR\fworkflowName\x129\n" +
2112	"\n" +
2113	"started_at\x18\v \x01(\v2\x1a.google.protobuf.TimestampR\tstartedAt\x12=\n" +
2114	"\fcompleted_at\x18\f \x01(\v2\x1a.google.protobuf.TimestampR\vcompletedAt\"\xc7\x02\n" +
2115	"\x06Runner\x12\x0e\n" +
2116	"\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" +
2117	"\x04name\x18\x02 \x01(\tR\x04name\x12\x16\n" +
2118	"\x06labels\x18\x03 \x03(\tR\x06labels\x125\n" +
2119	"\tisolation\x18\x04 \x01(\x0e2\x17.ermite.RunnerIsolationR\tisolation\x12\x18\n" +
2120	"\aversion\x18\x05 \x01(\tR\aversion\x12\x12\n" +
2121	"\x04arch\x18\x06 \x01(\tR\x04arch\x12\x0e\n" +
2122	"\x02os\x18\a \x01(\tR\x02os\x12?\n" +
2123	"\rregistered_at\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\fregisteredAt\x127\n" +
2124	"\tlast_seen\x18\t \x01(\v2\x1a.google.protobuf.TimestampR\blastSeen\x12\x12\n" +
2125	"\x04busy\x18\n" +
2126	" \x01(\bR\x04busy\"\xbf\x01\n" +
2127	"\x0fListRunsRequest\x12\x12\n" +
2128	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x1b\n" +
2129	"\tpage_size\x18\x02 \x01(\x05R\bpageSize\x12\x1d\n" +
2130	"\n" +
2131	"page_token\x18\x03 \x01(\tR\tpageToken\x12\x1a\n" +
2132	"\bworkflow\x18\x04 \x01(\tR\bworkflow\x12\x16\n" +
2133	"\x06branch\x18\x05 \x01(\tR\x06branch\x12(\n" +
2134	"\x06status\x18\x06 \x01(\x0e2\x10.ermite.CiStatusR\x06status\"[\n" +
2135	"\x10ListRunsResponse\x12\x1f\n" +
2136	"\x04runs\x18\x01 \x03(\v2\v.ermite.RunR\x04runs\x12&\n" +
2137	"\x0fnext_page_token\x18\x02 \x01(\tR\rnextPageToken\"T\n" +
2138	"\rGetRunRequest\x12\x12\n" +
2139	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x15\n" +
2140	"\x06run_id\x18\x02 \x01(\x03R\x05runId\x12\x18\n" +
2141	"\aattempt\x18\x03 \x01(\x05R\aattempt\"z\n" +
2142	"\x0eGetRunResponse\x12\x1d\n" +
2143	"\x03run\x18\x01 \x01(\v2\v.ermite.RunR\x03run\x12\"\n" +
2144	"\x04jobs\x18\x02 \x03(\v2\x0e.ermite.RunJobR\x04jobs\x12%\n" +
2145	"\x0elatest_attempt\x18\x03 \x01(\x05R\rlatestAttempt\"T\n" +
2146	"\rGetJobRequest\x12\x12\n" +
2147	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x15\n" +
2148	"\x06job_id\x18\x02 \x01(\tR\x05jobId\x12\x18\n" +
2149	"\aattempt\x18\x03 \x01(\x05R\aattempt\"2\n" +
2150	"\x0eGetJobResponse\x12 \n" +
2151	"\x03job\x18\x01 \x01(\v2\x0e.ermite.RunJobR\x03job\"\x87\x01\n" +
2152	"\x10GetJobLogRequest\x12\x12\n" +
2153	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x15\n" +
2154	"\x06job_id\x18\x02 \x01(\tR\x05jobId\x12\x18\n" +
2155	"\aattempt\x18\x03 \x01(\x05R\aattempt\x12\x16\n" +
2156	"\x06offset\x18\x04 \x01(\x03R\x06offset\x12\x16\n" +
2157	"\x06follow\x18\x05 \x01(\bR\x06follow\"U\n" +
2158	"\x11GetJobLogResponse\x12\x16\n" +
2159	"\x06offset\x18\x01 \x01(\x03R\x06offset\x12(\n" +
2160	"\x05lines\x18\x02 \x03(\v2\x12.ermite.JobLogLineR\x05lines\"\x82\x01\n" +
2161	"\n" +
2162	"JobLogLine\x12\x12\n" +
2163	"\x04step\x18\x01 \x01(\x05R\x04step\x12.\n" +
2164	"\x04time\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampR\x04time\x12\x12\n" +
2165	"\x04text\x18\x03 \x01(\tR\x04text\x12\x1c\n" +
2166	"\tcontinued\x18\x04 \x01(\bR\tcontinued\"=\n" +
2167	"\x10CancelRunRequest\x12\x12\n" +
2168	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x15\n" +
2169	"\x06run_id\x18\x02 \x01(\x03R\x05runId\"2\n" +
2170	"\x11CancelRunResponse\x12\x1d\n" +
2171	"\x03run\x18\x01 \x01(\v2\v.ermite.RunR\x03run\"]\n" +
2172	"\x0fRerunRunRequest\x12\x12\n" +
2173	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x15\n" +
2174	"\x06run_id\x18\x02 \x01(\x03R\x05runId\x12\x1f\n" +
2175	"\vfailed_only\x18\x03 \x01(\bR\n" +
2176	"failedOnly\"1\n" +
2177	"\x10RerunRunResponse\x12\x1d\n" +
2178	"\x03run\x18\x01 \x01(\v2\v.ermite.RunR\x03run\"9\n" +
2179	"\x11ListChecksRequest\x12\x12\n" +
2180	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x10\n" +
2181	"\x03sha\x18\x02 \x01(\tR\x03sha\"Y\n" +
2182	"\x12ListChecksResponse\x12%\n" +
2183	"\x06checks\x18\x01 \x03(\v2\r.ermite.CheckR\x06checks\x12\x1c\n" +
2184	"\ttruncated\x18\x02 \x01(\bR\ttruncated\"P\n" +
2185	"\x12ListRunnersRequest\x12\x1b\n" +
2186	"\tpage_size\x18\x01 \x01(\x05R\bpageSize\x12\x1d\n" +
2187	"\n" +
2188	"page_token\x18\x02 \x01(\tR\tpageToken\"g\n" +
2189	"\x13ListRunnersResponse\x12(\n" +
2190	"\arunners\x18\x01 \x03(\v2\x0e.ermite.RunnerR\arunners\x12&\n" +
2191	"\x0fnext_page_token\x18\x02 \x01(\tR\rnextPageToken\"2\n" +
2192	"\x13RemoveRunnerRequest\x12\x1b\n" +
2193	"\trunner_id\x18\x01 \x01(\tR\brunnerId\"\x16\n" +
2194	"\x14RemoveRunnerResponse2\xda\x04\n" +
2195	"\n" +
2196	"RunService\x12=\n" +
2197	"\bListRuns\x12\x17.ermite.ListRunsRequest\x1a\x18.ermite.ListRunsResponse\x127\n" +
2198	"\x06GetRun\x12\x15.ermite.GetRunRequest\x1a\x16.ermite.GetRunResponse\x127\n" +
2199	"\x06GetJob\x12\x15.ermite.GetJobRequest\x1a\x16.ermite.GetJobResponse\x12B\n" +
2200	"\tGetJobLog\x12\x18.ermite.GetJobLogRequest\x1a\x19.ermite.GetJobLogResponse0\x01\x12@\n" +
2201	"\tCancelRun\x12\x18.ermite.CancelRunRequest\x1a\x19.ermite.CancelRunResponse\x12=\n" +
2202	"\bRerunRun\x12\x17.ermite.RerunRunRequest\x1a\x18.ermite.RerunRunResponse\x12C\n" +
2203	"\n" +
2204	"ListChecks\x12\x19.ermite.ListChecksRequest\x1a\x1a.ermite.ListChecksResponse\x12F\n" +
2205	"\vListRunners\x12\x1a.ermite.ListRunnersRequest\x1a\x1b.ermite.ListRunnersResponse\x12I\n" +
2206	"\fRemoveRunner\x12\x1b.ermite.RemoveRunnerRequest\x1a\x1c.ermite.RemoveRunnerResponseBo\n" +
2207	"\n" +
2208	"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"
2209
2210var (
2211	file_ermite_run_proto_rawDescOnce sync.Once
2212	file_ermite_run_proto_rawDescData []byte
2213)
2214
2215func file_ermite_run_proto_rawDescGZIP() []byte {
2216	file_ermite_run_proto_rawDescOnce.Do(func() {
2217		file_ermite_run_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_ermite_run_proto_rawDesc), len(file_ermite_run_proto_rawDesc)))
2218	})
2219	return file_ermite_run_proto_rawDescData
2220}
2221
2222var file_ermite_run_proto_msgTypes = make([]protoimpl.MessageInfo, 24)
2223var file_ermite_run_proto_goTypes = []any{
2224	(*Run)(nil),                   // 0: ermite.Run
2225	(*RunJob)(nil),                // 1: ermite.RunJob
2226	(*Step)(nil),                  // 2: ermite.Step
2227	(*Check)(nil),                 // 3: ermite.Check
2228	(*Runner)(nil),                // 4: ermite.Runner
2229	(*ListRunsRequest)(nil),       // 5: ermite.ListRunsRequest
2230	(*ListRunsResponse)(nil),      // 6: ermite.ListRunsResponse
2231	(*GetRunRequest)(nil),         // 7: ermite.GetRunRequest
2232	(*GetRunResponse)(nil),        // 8: ermite.GetRunResponse
2233	(*GetJobRequest)(nil),         // 9: ermite.GetJobRequest
2234	(*GetJobResponse)(nil),        // 10: ermite.GetJobResponse
2235	(*GetJobLogRequest)(nil),      // 11: ermite.GetJobLogRequest
2236	(*GetJobLogResponse)(nil),     // 12: ermite.GetJobLogResponse
2237	(*JobLogLine)(nil),            // 13: ermite.JobLogLine
2238	(*CancelRunRequest)(nil),      // 14: ermite.CancelRunRequest
2239	(*CancelRunResponse)(nil),     // 15: ermite.CancelRunResponse
2240	(*RerunRunRequest)(nil),       // 16: ermite.RerunRunRequest
2241	(*RerunRunResponse)(nil),      // 17: ermite.RerunRunResponse
2242	(*ListChecksRequest)(nil),     // 18: ermite.ListChecksRequest
2243	(*ListChecksResponse)(nil),    // 19: ermite.ListChecksResponse
2244	(*ListRunnersRequest)(nil),    // 20: ermite.ListRunnersRequest
2245	(*ListRunnersResponse)(nil),   // 21: ermite.ListRunnersResponse
2246	(*RemoveRunnerRequest)(nil),   // 22: ermite.RemoveRunnerRequest
2247	(*RemoveRunnerResponse)(nil),  // 23: ermite.RemoveRunnerResponse
2248	(CiStatus)(0),                 // 24: ermite.CiStatus
2249	(CiConclusion)(0),             // 25: ermite.CiConclusion
2250	(*timestamppb.Timestamp)(nil), // 26: google.protobuf.Timestamp
2251	(RunnerIsolation)(0),          // 27: ermite.RunnerIsolation
2252	(StepState)(0),                // 28: ermite.StepState
2253}
2254var file_ermite_run_proto_depIdxs = []int32{
2255	24, // 0: ermite.Run.status:type_name -> ermite.CiStatus
2256	25, // 1: ermite.Run.conclusion:type_name -> ermite.CiConclusion
2257	26, // 2: ermite.Run.created_at:type_name -> google.protobuf.Timestamp
2258	26, // 3: ermite.Run.started_at:type_name -> google.protobuf.Timestamp
2259	26, // 4: ermite.Run.completed_at:type_name -> google.protobuf.Timestamp
2260	24, // 5: ermite.RunJob.status:type_name -> ermite.CiStatus
2261	25, // 6: ermite.RunJob.conclusion:type_name -> ermite.CiConclusion
2262	27, // 7: ermite.RunJob.isolation:type_name -> ermite.RunnerIsolation
2263	2,  // 8: ermite.RunJob.steps:type_name -> ermite.Step
2264	26, // 9: ermite.RunJob.created_at:type_name -> google.protobuf.Timestamp
2265	26, // 10: ermite.RunJob.started_at:type_name -> google.protobuf.Timestamp
2266	26, // 11: ermite.RunJob.completed_at:type_name -> google.protobuf.Timestamp
2267	28, // 12: ermite.Step.state:type_name -> ermite.StepState
2268	25, // 13: ermite.Step.conclusion:type_name -> ermite.CiConclusion
2269	26, // 14: ermite.Step.started_at:type_name -> google.protobuf.Timestamp
2270	26, // 15: ermite.Step.completed_at:type_name -> google.protobuf.Timestamp
2271	24, // 16: ermite.Check.status:type_name -> ermite.CiStatus
2272	25, // 17: ermite.Check.conclusion:type_name -> ermite.CiConclusion
2273	26, // 18: ermite.Check.started_at:type_name -> google.protobuf.Timestamp
2274	26, // 19: ermite.Check.completed_at:type_name -> google.protobuf.Timestamp
2275	27, // 20: ermite.Runner.isolation:type_name -> ermite.RunnerIsolation
2276	26, // 21: ermite.Runner.registered_at:type_name -> google.protobuf.Timestamp
2277	26, // 22: ermite.Runner.last_seen:type_name -> google.protobuf.Timestamp
2278	24, // 23: ermite.ListRunsRequest.status:type_name -> ermite.CiStatus
2279	0,  // 24: ermite.ListRunsResponse.runs:type_name -> ermite.Run
2280	0,  // 25: ermite.GetRunResponse.run:type_name -> ermite.Run
2281	1,  // 26: ermite.GetRunResponse.jobs:type_name -> ermite.RunJob
2282	1,  // 27: ermite.GetJobResponse.job:type_name -> ermite.RunJob
2283	13, // 28: ermite.GetJobLogResponse.lines:type_name -> ermite.JobLogLine
2284	26, // 29: ermite.JobLogLine.time:type_name -> google.protobuf.Timestamp
2285	0,  // 30: ermite.CancelRunResponse.run:type_name -> ermite.Run
2286	0,  // 31: ermite.RerunRunResponse.run:type_name -> ermite.Run
2287	3,  // 32: ermite.ListChecksResponse.checks:type_name -> ermite.Check
2288	4,  // 33: ermite.ListRunnersResponse.runners:type_name -> ermite.Runner
2289	5,  // 34: ermite.RunService.ListRuns:input_type -> ermite.ListRunsRequest
2290	7,  // 35: ermite.RunService.GetRun:input_type -> ermite.GetRunRequest
2291	9,  // 36: ermite.RunService.GetJob:input_type -> ermite.GetJobRequest
2292	11, // 37: ermite.RunService.GetJobLog:input_type -> ermite.GetJobLogRequest
2293	14, // 38: ermite.RunService.CancelRun:input_type -> ermite.CancelRunRequest
2294	16, // 39: ermite.RunService.RerunRun:input_type -> ermite.RerunRunRequest
2295	18, // 40: ermite.RunService.ListChecks:input_type -> ermite.ListChecksRequest
2296	20, // 41: ermite.RunService.ListRunners:input_type -> ermite.ListRunnersRequest
2297	22, // 42: ermite.RunService.RemoveRunner:input_type -> ermite.RemoveRunnerRequest
2298	6,  // 43: ermite.RunService.ListRuns:output_type -> ermite.ListRunsResponse
2299	8,  // 44: ermite.RunService.GetRun:output_type -> ermite.GetRunResponse
2300	10, // 45: ermite.RunService.GetJob:output_type -> ermite.GetJobResponse
2301	12, // 46: ermite.RunService.GetJobLog:output_type -> ermite.GetJobLogResponse
2302	15, // 47: ermite.RunService.CancelRun:output_type -> ermite.CancelRunResponse
2303	17, // 48: ermite.RunService.RerunRun:output_type -> ermite.RerunRunResponse
2304	19, // 49: ermite.RunService.ListChecks:output_type -> ermite.ListChecksResponse
2305	21, // 50: ermite.RunService.ListRunners:output_type -> ermite.ListRunnersResponse
2306	23, // 51: ermite.RunService.RemoveRunner:output_type -> ermite.RemoveRunnerResponse
2307	43, // [43:52] is the sub-list for method output_type
2308	34, // [34:43] is the sub-list for method input_type
2309	34, // [34:34] is the sub-list for extension type_name
2310	34, // [34:34] is the sub-list for extension extendee
2311	0,  // [0:34] is the sub-list for field type_name
2312}
2313
2314func init() { file_ermite_run_proto_init() }
2315func file_ermite_run_proto_init() {
2316	if File_ermite_run_proto != nil {
2317		return
2318	}
2319	file_ermite_runner_proto_init()
2320	type x struct{}
2321	out := protoimpl.TypeBuilder{
2322		File: protoimpl.DescBuilder{
2323			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
2324			RawDescriptor: unsafe.Slice(unsafe.StringData(file_ermite_run_proto_rawDesc), len(file_ermite_run_proto_rawDesc)),
2325			NumEnums:      0,
2326			NumMessages:   24,
2327			NumExtensions: 0,
2328			NumServices:   1,
2329		},
2330		GoTypes:           file_ermite_run_proto_goTypes,
2331		DependencyIndexes: file_ermite_run_proto_depIdxs,
2332		MessageInfos:      file_ermite_run_proto_msgTypes,
2333	}.Build()
2334	File_ermite_run_proto = out.File
2335	file_ermite_run_proto_goTypes = nil
2336	file_ermite_run_proto_depIdxs = nil
2337}

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