v0.2.0 49ac5fd

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	// Outcome is how the step ended before continue-on-error was applied, as
526	// StepUpdate.outcome: it differs from conclusion only for a failed step with
527	// continue-on-error. Unset until state is COMPLETED, and for a step stored
528	// by a server or runner before this field existed (read it as conclusion).
529	Outcome       CiConclusion `protobuf:"varint,9,opt,name=outcome,proto3,enum=ermite.CiConclusion" json:"outcome,omitempty"`
530	unknownFields protoimpl.UnknownFields
531	sizeCache     protoimpl.SizeCache
532}
533
534func (x *Step) Reset() {
535	*x = Step{}
536	mi := &file_ermite_run_proto_msgTypes[2]
537	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
538	ms.StoreMessageInfo(mi)
539}
540
541func (x *Step) String() string {
542	return protoimpl.X.MessageStringOf(x)
543}
544
545func (*Step) ProtoMessage() {}
546
547func (x *Step) ProtoReflect() protoreflect.Message {
548	mi := &file_ermite_run_proto_msgTypes[2]
549	if x != nil {
550		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
551		if ms.LoadMessageInfo() == nil {
552			ms.StoreMessageInfo(mi)
553		}
554		return ms
555	}
556	return mi.MessageOf(x)
557}
558
559// Deprecated: Use Step.ProtoReflect.Descriptor instead.
560func (*Step) Descriptor() ([]byte, []int) {
561	return file_ermite_run_proto_rawDescGZIP(), []int{2}
562}
563
564func (x *Step) GetNumber() int32 {
565	if x != nil {
566		return x.Number
567	}
568	return 0
569}
570
571func (x *Step) GetName() string {
572	if x != nil {
573		return x.Name
574	}
575	return ""
576}
577
578func (x *Step) GetState() StepState {
579	if x != nil {
580		return x.State
581	}
582	return StepState_STEP_STATE_UNSPECIFIED
583}
584
585func (x *Step) GetConclusion() CiConclusion {
586	if x != nil {
587		return x.Conclusion
588	}
589	return CiConclusion_CI_CONCLUSION_UNSPECIFIED
590}
591
592func (x *Step) GetStartedAt() *timestamppb.Timestamp {
593	if x != nil {
594		return x.StartedAt
595	}
596	return nil
597}
598
599func (x *Step) GetCompletedAt() *timestamppb.Timestamp {
600	if x != nil {
601		return x.CompletedAt
602	}
603	return nil
604}
605
606func (x *Step) GetLogStart() int64 {
607	if x != nil {
608		return x.LogStart
609	}
610	return 0
611}
612
613func (x *Step) GetLogEnd() int64 {
614	if x != nil {
615		return x.LogEnd
616	}
617	return 0
618}
619
620func (x *Step) GetOutcome() CiConclusion {
621	if x != nil {
622		return x.Outcome
623	}
624	return CiConclusion_CI_CONCLUSION_UNSPECIFIED
625}
626
627// Check is the result of one job on one commit, the unit shown next to a
628// commit or a merge request and counted by the merge rules. There is one per
629// job instance, named like GitHub's checks.
630type Check struct {
631	state protoimpl.MessageState `protogen:"open.v1"`
632	// Id identifies the check. It is opaque and stable across attempts.
633	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
634	// Repo is the name of the repository.
635	Repo string `protobuf:"bytes,2,opt,name=repo,proto3" json:"repo,omitempty"`
636	// Sha is the full id of the commit.
637	Sha string `protobuf:"bytes,3,opt,name=sha,proto3" json:"sha,omitempty"`
638	// Name is the name of the check: the RunJob.name of the job.
639	Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"`
640	// Status is where the check is.
641	Status CiStatus `protobuf:"varint,5,opt,name=status,proto3,enum=ermite.CiStatus" json:"status,omitempty"`
642	// Conclusion is how the check ended. Unset until status is COMPLETED. The
643	// value "stale" of GitHub is never used.
644	Conclusion CiConclusion `protobuf:"varint,6,opt,name=conclusion,proto3,enum=ermite.CiConclusion" json:"conclusion,omitempty"`
645	// RunId is the run of the job.
646	RunId int64 `protobuf:"varint,7,opt,name=run_id,json=runId,proto3" json:"run_id,omitempty"`
647	// JobId is the RunJob.id of the job, to open its page and log.
648	JobId string `protobuf:"bytes,8,opt,name=job_id,json=jobId,proto3" json:"job_id,omitempty"`
649	// Attempt is the attempt the check describes: the latest attempt of the run.
650	Attempt int32 `protobuf:"varint,9,opt,name=attempt,proto3" json:"attempt,omitempty"`
651	// WorkflowName is the Run.workflow_name of the run.
652	WorkflowName string `protobuf:"bytes,10,opt,name=workflow_name,json=workflowName,proto3" json:"workflow_name,omitempty"`
653	// StartedAt is when the job was given to a runner. Unset while queued.
654	StartedAt *timestamppb.Timestamp `protobuf:"bytes,11,opt,name=started_at,json=startedAt,proto3" json:"started_at,omitempty"`
655	// CompletedAt is when the job completed. Unset until then.
656	CompletedAt   *timestamppb.Timestamp `protobuf:"bytes,12,opt,name=completed_at,json=completedAt,proto3" json:"completed_at,omitempty"`
657	unknownFields protoimpl.UnknownFields
658	sizeCache     protoimpl.SizeCache
659}
660
661func (x *Check) Reset() {
662	*x = Check{}
663	mi := &file_ermite_run_proto_msgTypes[3]
664	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
665	ms.StoreMessageInfo(mi)
666}
667
668func (x *Check) String() string {
669	return protoimpl.X.MessageStringOf(x)
670}
671
672func (*Check) ProtoMessage() {}
673
674func (x *Check) ProtoReflect() protoreflect.Message {
675	mi := &file_ermite_run_proto_msgTypes[3]
676	if x != nil {
677		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
678		if ms.LoadMessageInfo() == nil {
679			ms.StoreMessageInfo(mi)
680		}
681		return ms
682	}
683	return mi.MessageOf(x)
684}
685
686// Deprecated: Use Check.ProtoReflect.Descriptor instead.
687func (*Check) Descriptor() ([]byte, []int) {
688	return file_ermite_run_proto_rawDescGZIP(), []int{3}
689}
690
691func (x *Check) GetId() string {
692	if x != nil {
693		return x.Id
694	}
695	return ""
696}
697
698func (x *Check) GetRepo() string {
699	if x != nil {
700		return x.Repo
701	}
702	return ""
703}
704
705func (x *Check) GetSha() string {
706	if x != nil {
707		return x.Sha
708	}
709	return ""
710}
711
712func (x *Check) GetName() string {
713	if x != nil {
714		return x.Name
715	}
716	return ""
717}
718
719func (x *Check) GetStatus() CiStatus {
720	if x != nil {
721		return x.Status
722	}
723	return CiStatus_CI_STATUS_UNSPECIFIED
724}
725
726func (x *Check) GetConclusion() CiConclusion {
727	if x != nil {
728		return x.Conclusion
729	}
730	return CiConclusion_CI_CONCLUSION_UNSPECIFIED
731}
732
733func (x *Check) GetRunId() int64 {
734	if x != nil {
735		return x.RunId
736	}
737	return 0
738}
739
740func (x *Check) GetJobId() string {
741	if x != nil {
742		return x.JobId
743	}
744	return ""
745}
746
747func (x *Check) GetAttempt() int32 {
748	if x != nil {
749		return x.Attempt
750	}
751	return 0
752}
753
754func (x *Check) GetWorkflowName() string {
755	if x != nil {
756		return x.WorkflowName
757	}
758	return ""
759}
760
761func (x *Check) GetStartedAt() *timestamppb.Timestamp {
762	if x != nil {
763		return x.StartedAt
764	}
765	return nil
766}
767
768func (x *Check) GetCompletedAt() *timestamppb.Timestamp {
769	if x != nil {
770		return x.CompletedAt
771	}
772	return nil
773}
774
775// Runner is a registered CI runner. It never contains the runner token nor its
776// hash.
777type Runner struct {
778	state protoimpl.MessageState `protogen:"open.v1"`
779	// Id identifies the runner in RemoveRunner. It is not a secret.
780	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
781	// Name is the unique name chosen at registration.
782	Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
783	// Labels are all the labels the runner can match: the ones chosen at
784	// registration plus the implicit ones ("self-hosted", the os and the arch),
785	// lowercase, sorted.
786	Labels []string `protobuf:"bytes,3,rep,name=labels,proto3" json:"labels,omitempty"`
787	// Isolation is how the runner isolates jobs.
788	Isolation RunnerIsolation `protobuf:"varint,4,opt,name=isolation,proto3,enum=ermite.RunnerIsolation" json:"isolation,omitempty"`
789	// Version is the version of the runner software.
790	Version string `protobuf:"bytes,5,opt,name=version,proto3" json:"version,omitempty"`
791	// Arch is "x64" or "arm64".
792	Arch string `protobuf:"bytes,6,opt,name=arch,proto3" json:"arch,omitempty"`
793	// Os is "linux".
794	Os string `protobuf:"bytes,7,opt,name=os,proto3" json:"os,omitempty"`
795	// RegisteredAt is when the runner was registered.
796	RegisteredAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=registered_at,json=registeredAt,proto3" json:"registered_at,omitempty"`
797	// LastSeen is when the server last heard from the runner: a FetchJob poll or
798	// a heartbeat of one of its jobs. Unset if never. It may lag behind the real
799	// time by a short delay. A runner not seen for more than about 2 minutes is
800	// offline.
801	LastSeen *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=last_seen,json=lastSeen,proto3" json:"last_seen,omitempty"`
802	// Busy is true while the runner has a job in progress.
803	Busy          bool `protobuf:"varint,10,opt,name=busy,proto3" json:"busy,omitempty"`
804	unknownFields protoimpl.UnknownFields
805	sizeCache     protoimpl.SizeCache
806}
807
808func (x *Runner) Reset() {
809	*x = Runner{}
810	mi := &file_ermite_run_proto_msgTypes[4]
811	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
812	ms.StoreMessageInfo(mi)
813}
814
815func (x *Runner) String() string {
816	return protoimpl.X.MessageStringOf(x)
817}
818
819func (*Runner) ProtoMessage() {}
820
821func (x *Runner) ProtoReflect() protoreflect.Message {
822	mi := &file_ermite_run_proto_msgTypes[4]
823	if x != nil {
824		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
825		if ms.LoadMessageInfo() == nil {
826			ms.StoreMessageInfo(mi)
827		}
828		return ms
829	}
830	return mi.MessageOf(x)
831}
832
833// Deprecated: Use Runner.ProtoReflect.Descriptor instead.
834func (*Runner) Descriptor() ([]byte, []int) {
835	return file_ermite_run_proto_rawDescGZIP(), []int{4}
836}
837
838func (x *Runner) GetId() string {
839	if x != nil {
840		return x.Id
841	}
842	return ""
843}
844
845func (x *Runner) GetName() string {
846	if x != nil {
847		return x.Name
848	}
849	return ""
850}
851
852func (x *Runner) GetLabels() []string {
853	if x != nil {
854		return x.Labels
855	}
856	return nil
857}
858
859func (x *Runner) GetIsolation() RunnerIsolation {
860	if x != nil {
861		return x.Isolation
862	}
863	return RunnerIsolation_RUNNER_ISOLATION_UNSPECIFIED
864}
865
866func (x *Runner) GetVersion() string {
867	if x != nil {
868		return x.Version
869	}
870	return ""
871}
872
873func (x *Runner) GetArch() string {
874	if x != nil {
875		return x.Arch
876	}
877	return ""
878}
879
880func (x *Runner) GetOs() string {
881	if x != nil {
882		return x.Os
883	}
884	return ""
885}
886
887func (x *Runner) GetRegisteredAt() *timestamppb.Timestamp {
888	if x != nil {
889		return x.RegisteredAt
890	}
891	return nil
892}
893
894func (x *Runner) GetLastSeen() *timestamppb.Timestamp {
895	if x != nil {
896		return x.LastSeen
897	}
898	return nil
899}
900
901func (x *Runner) GetBusy() bool {
902	if x != nil {
903		return x.Busy
904	}
905	return false
906}
907
908// ListRunsRequest selects a page of runs.
909type ListRunsRequest struct {
910	state protoimpl.MessageState `protogen:"open.v1"`
911	// Repo is the repository name.
912	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
913	// PageSize is the maximum number of runs to return.
914	PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
915	// PageToken is the next_page_token of a previous response. Empty for the
916	// first page.
917	PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
918	// Workflow restricts the result to one workflow file: its path
919	// (".github/workflows/ci.yml") or its file name ("ci.yml"). Empty means
920	// every workflow. Ignored by servers without "ci.runs.filters".
921	Workflow string `protobuf:"bytes,4,opt,name=workflow,proto3" json:"workflow,omitempty"`
922	// Branch restricts the result to the runs whose ref is this branch, by
923	// short name ("main"). Empty means every ref. Ignored by servers without
924	// "ci.runs.filters".
925	Branch string `protobuf:"bytes,5,opt,name=branch,proto3" json:"branch,omitempty"`
926	// Status restricts the result to the runs whose latest attempt has this
927	// status. CI_STATUS_UNSPECIFIED means every status. Ignored by servers
928	// without "ci.runs.filters".
929	Status        CiStatus `protobuf:"varint,6,opt,name=status,proto3,enum=ermite.CiStatus" json:"status,omitempty"`
930	unknownFields protoimpl.UnknownFields
931	sizeCache     protoimpl.SizeCache
932}
933
934func (x *ListRunsRequest) Reset() {
935	*x = ListRunsRequest{}
936	mi := &file_ermite_run_proto_msgTypes[5]
937	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
938	ms.StoreMessageInfo(mi)
939}
940
941func (x *ListRunsRequest) String() string {
942	return protoimpl.X.MessageStringOf(x)
943}
944
945func (*ListRunsRequest) ProtoMessage() {}
946
947func (x *ListRunsRequest) ProtoReflect() protoreflect.Message {
948	mi := &file_ermite_run_proto_msgTypes[5]
949	if x != nil {
950		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
951		if ms.LoadMessageInfo() == nil {
952			ms.StoreMessageInfo(mi)
953		}
954		return ms
955	}
956	return mi.MessageOf(x)
957}
958
959// Deprecated: Use ListRunsRequest.ProtoReflect.Descriptor instead.
960func (*ListRunsRequest) Descriptor() ([]byte, []int) {
961	return file_ermite_run_proto_rawDescGZIP(), []int{5}
962}
963
964func (x *ListRunsRequest) GetRepo() string {
965	if x != nil {
966		return x.Repo
967	}
968	return ""
969}
970
971func (x *ListRunsRequest) GetPageSize() int32 {
972	if x != nil {
973		return x.PageSize
974	}
975	return 0
976}
977
978func (x *ListRunsRequest) GetPageToken() string {
979	if x != nil {
980		return x.PageToken
981	}
982	return ""
983}
984
985func (x *ListRunsRequest) GetWorkflow() string {
986	if x != nil {
987		return x.Workflow
988	}
989	return ""
990}
991
992func (x *ListRunsRequest) GetBranch() string {
993	if x != nil {
994		return x.Branch
995	}
996	return ""
997}
998
999func (x *ListRunsRequest) GetStatus() CiStatus {
1000	if x != nil {
1001		return x.Status
1002	}
1003	return CiStatus_CI_STATUS_UNSPECIFIED
1004}
1005
1006// ListRunsResponse is one page of runs.
1007type ListRunsResponse struct {
1008	state protoimpl.MessageState `protogen:"open.v1"`
1009	// Runs are the runs of this page, highest id first, without jobs.
1010	Runs []*Run `protobuf:"bytes,1,rep,name=runs,proto3" json:"runs,omitempty"`
1011	// NextPageToken is passed as page_token to get the next page. Empty when
1012	// there is no next page.
1013	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
1014	unknownFields protoimpl.UnknownFields
1015	sizeCache     protoimpl.SizeCache
1016}
1017
1018func (x *ListRunsResponse) Reset() {
1019	*x = ListRunsResponse{}
1020	mi := &file_ermite_run_proto_msgTypes[6]
1021	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1022	ms.StoreMessageInfo(mi)
1023}
1024
1025func (x *ListRunsResponse) String() string {
1026	return protoimpl.X.MessageStringOf(x)
1027}
1028
1029func (*ListRunsResponse) ProtoMessage() {}
1030
1031func (x *ListRunsResponse) ProtoReflect() protoreflect.Message {
1032	mi := &file_ermite_run_proto_msgTypes[6]
1033	if x != nil {
1034		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1035		if ms.LoadMessageInfo() == nil {
1036			ms.StoreMessageInfo(mi)
1037		}
1038		return ms
1039	}
1040	return mi.MessageOf(x)
1041}
1042
1043// Deprecated: Use ListRunsResponse.ProtoReflect.Descriptor instead.
1044func (*ListRunsResponse) Descriptor() ([]byte, []int) {
1045	return file_ermite_run_proto_rawDescGZIP(), []int{6}
1046}
1047
1048func (x *ListRunsResponse) GetRuns() []*Run {
1049	if x != nil {
1050		return x.Runs
1051	}
1052	return nil
1053}
1054
1055func (x *ListRunsResponse) GetNextPageToken() string {
1056	if x != nil {
1057		return x.NextPageToken
1058	}
1059	return ""
1060}
1061
1062// GetRunRequest selects a run.
1063type GetRunRequest struct {
1064	state protoimpl.MessageState `protogen:"open.v1"`
1065	// Repo is the repository name.
1066	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
1067	// RunId is the Run.id.
1068	RunId int64 `protobuf:"varint,2,opt,name=run_id,json=runId,proto3" json:"run_id,omitempty"`
1069	// Attempt is the attempt to read. 0 means the latest.
1070	Attempt       int32 `protobuf:"varint,3,opt,name=attempt,proto3" json:"attempt,omitempty"`
1071	unknownFields protoimpl.UnknownFields
1072	sizeCache     protoimpl.SizeCache
1073}
1074
1075func (x *GetRunRequest) Reset() {
1076	*x = GetRunRequest{}
1077	mi := &file_ermite_run_proto_msgTypes[7]
1078	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1079	ms.StoreMessageInfo(mi)
1080}
1081
1082func (x *GetRunRequest) String() string {
1083	return protoimpl.X.MessageStringOf(x)
1084}
1085
1086func (*GetRunRequest) ProtoMessage() {}
1087
1088func (x *GetRunRequest) ProtoReflect() protoreflect.Message {
1089	mi := &file_ermite_run_proto_msgTypes[7]
1090	if x != nil {
1091		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1092		if ms.LoadMessageInfo() == nil {
1093			ms.StoreMessageInfo(mi)
1094		}
1095		return ms
1096	}
1097	return mi.MessageOf(x)
1098}
1099
1100// Deprecated: Use GetRunRequest.ProtoReflect.Descriptor instead.
1101func (*GetRunRequest) Descriptor() ([]byte, []int) {
1102	return file_ermite_run_proto_rawDescGZIP(), []int{7}
1103}
1104
1105func (x *GetRunRequest) GetRepo() string {
1106	if x != nil {
1107		return x.Repo
1108	}
1109	return ""
1110}
1111
1112func (x *GetRunRequest) GetRunId() int64 {
1113	if x != nil {
1114		return x.RunId
1115	}
1116	return 0
1117}
1118
1119func (x *GetRunRequest) GetAttempt() int32 {
1120	if x != nil {
1121		return x.Attempt
1122	}
1123	return 0
1124}
1125
1126// GetRunResponse holds a run with its jobs.
1127type GetRunResponse struct {
1128	state protoimpl.MessageState `protogen:"open.v1"`
1129	// Run is the run, as of the attempt asked.
1130	Run *Run `protobuf:"bytes,1,opt,name=run,proto3" json:"run,omitempty"`
1131	// Jobs are the jobs of that attempt, with their steps, in the order of the
1132	// workflow file (matrix instances in the order of the matrix). Jobs kept from
1133	// an earlier attempt by a re-run of failed jobs are included, with their own
1134	// RunJob.attempt. Empty for a run that failed on an invalid workflow file.
1135	Jobs []*RunJob `protobuf:"bytes,2,rep,name=jobs,proto3" json:"jobs,omitempty"`
1136	// LatestAttempt is the latest attempt of the run, to offer the other ones.
1137	LatestAttempt int32 `protobuf:"varint,3,opt,name=latest_attempt,json=latestAttempt,proto3" json:"latest_attempt,omitempty"`
1138	unknownFields protoimpl.UnknownFields
1139	sizeCache     protoimpl.SizeCache
1140}
1141
1142func (x *GetRunResponse) Reset() {
1143	*x = GetRunResponse{}
1144	mi := &file_ermite_run_proto_msgTypes[8]
1145	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1146	ms.StoreMessageInfo(mi)
1147}
1148
1149func (x *GetRunResponse) String() string {
1150	return protoimpl.X.MessageStringOf(x)
1151}
1152
1153func (*GetRunResponse) ProtoMessage() {}
1154
1155func (x *GetRunResponse) ProtoReflect() protoreflect.Message {
1156	mi := &file_ermite_run_proto_msgTypes[8]
1157	if x != nil {
1158		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1159		if ms.LoadMessageInfo() == nil {
1160			ms.StoreMessageInfo(mi)
1161		}
1162		return ms
1163	}
1164	return mi.MessageOf(x)
1165}
1166
1167// Deprecated: Use GetRunResponse.ProtoReflect.Descriptor instead.
1168func (*GetRunResponse) Descriptor() ([]byte, []int) {
1169	return file_ermite_run_proto_rawDescGZIP(), []int{8}
1170}
1171
1172func (x *GetRunResponse) GetRun() *Run {
1173	if x != nil {
1174		return x.Run
1175	}
1176	return nil
1177}
1178
1179func (x *GetRunResponse) GetJobs() []*RunJob {
1180	if x != nil {
1181		return x.Jobs
1182	}
1183	return nil
1184}
1185
1186func (x *GetRunResponse) GetLatestAttempt() int32 {
1187	if x != nil {
1188		return x.LatestAttempt
1189	}
1190	return 0
1191}
1192
1193// GetJobRequest selects a job.
1194type GetJobRequest struct {
1195	state protoimpl.MessageState `protogen:"open.v1"`
1196	// Repo is the repository name.
1197	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
1198	// JobId is the RunJob.id.
1199	JobId string `protobuf:"bytes,2,opt,name=job_id,json=jobId,proto3" json:"job_id,omitempty"`
1200	// Attempt is the RunJob.attempt to read. 0 means the latest.
1201	Attempt       int32 `protobuf:"varint,3,opt,name=attempt,proto3" json:"attempt,omitempty"`
1202	unknownFields protoimpl.UnknownFields
1203	sizeCache     protoimpl.SizeCache
1204}
1205
1206func (x *GetJobRequest) Reset() {
1207	*x = GetJobRequest{}
1208	mi := &file_ermite_run_proto_msgTypes[9]
1209	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1210	ms.StoreMessageInfo(mi)
1211}
1212
1213func (x *GetJobRequest) String() string {
1214	return protoimpl.X.MessageStringOf(x)
1215}
1216
1217func (*GetJobRequest) ProtoMessage() {}
1218
1219func (x *GetJobRequest) ProtoReflect() protoreflect.Message {
1220	mi := &file_ermite_run_proto_msgTypes[9]
1221	if x != nil {
1222		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1223		if ms.LoadMessageInfo() == nil {
1224			ms.StoreMessageInfo(mi)
1225		}
1226		return ms
1227	}
1228	return mi.MessageOf(x)
1229}
1230
1231// Deprecated: Use GetJobRequest.ProtoReflect.Descriptor instead.
1232func (*GetJobRequest) Descriptor() ([]byte, []int) {
1233	return file_ermite_run_proto_rawDescGZIP(), []int{9}
1234}
1235
1236func (x *GetJobRequest) GetRepo() string {
1237	if x != nil {
1238		return x.Repo
1239	}
1240	return ""
1241}
1242
1243func (x *GetJobRequest) GetJobId() string {
1244	if x != nil {
1245		return x.JobId
1246	}
1247	return ""
1248}
1249
1250func (x *GetJobRequest) GetAttempt() int32 {
1251	if x != nil {
1252		return x.Attempt
1253	}
1254	return 0
1255}
1256
1257// GetJobResponse holds a job.
1258type GetJobResponse struct {
1259	state protoimpl.MessageState `protogen:"open.v1"`
1260	// Job is the job with its steps.
1261	Job           *RunJob `protobuf:"bytes,1,opt,name=job,proto3" json:"job,omitempty"`
1262	unknownFields protoimpl.UnknownFields
1263	sizeCache     protoimpl.SizeCache
1264}
1265
1266func (x *GetJobResponse) Reset() {
1267	*x = GetJobResponse{}
1268	mi := &file_ermite_run_proto_msgTypes[10]
1269	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1270	ms.StoreMessageInfo(mi)
1271}
1272
1273func (x *GetJobResponse) String() string {
1274	return protoimpl.X.MessageStringOf(x)
1275}
1276
1277func (*GetJobResponse) ProtoMessage() {}
1278
1279func (x *GetJobResponse) ProtoReflect() protoreflect.Message {
1280	mi := &file_ermite_run_proto_msgTypes[10]
1281	if x != nil {
1282		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1283		if ms.LoadMessageInfo() == nil {
1284			ms.StoreMessageInfo(mi)
1285		}
1286		return ms
1287	}
1288	return mi.MessageOf(x)
1289}
1290
1291// Deprecated: Use GetJobResponse.ProtoReflect.Descriptor instead.
1292func (*GetJobResponse) Descriptor() ([]byte, []int) {
1293	return file_ermite_run_proto_rawDescGZIP(), []int{10}
1294}
1295
1296func (x *GetJobResponse) GetJob() *RunJob {
1297	if x != nil {
1298		return x.Job
1299	}
1300	return nil
1301}
1302
1303// ListAnnotationsRequest selects the annotations of a run.
1304type ListAnnotationsRequest struct {
1305	state protoimpl.MessageState `protogen:"open.v1"`
1306	// Repo is the repository name.
1307	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
1308	// RunId is the Run.id.
1309	RunId int64 `protobuf:"varint,2,opt,name=run_id,json=runId,proto3" json:"run_id,omitempty"`
1310	// Attempt is the attempt to read. 0 means the latest, and then each job
1311	// contributes the annotations of its own RunJob.attempt (not necessarily the
1312	// latest attempt of the run, see ListAnnotations).
1313	Attempt int32 `protobuf:"varint,3,opt,name=attempt,proto3" json:"attempt,omitempty"`
1314	// JobId restricts the result to one job (RunJob.id). Empty means every job
1315	// of the run.
1316	JobId         string `protobuf:"bytes,4,opt,name=job_id,json=jobId,proto3" json:"job_id,omitempty"`
1317	unknownFields protoimpl.UnknownFields
1318	sizeCache     protoimpl.SizeCache
1319}
1320
1321func (x *ListAnnotationsRequest) Reset() {
1322	*x = ListAnnotationsRequest{}
1323	mi := &file_ermite_run_proto_msgTypes[11]
1324	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1325	ms.StoreMessageInfo(mi)
1326}
1327
1328func (x *ListAnnotationsRequest) String() string {
1329	return protoimpl.X.MessageStringOf(x)
1330}
1331
1332func (*ListAnnotationsRequest) ProtoMessage() {}
1333
1334func (x *ListAnnotationsRequest) ProtoReflect() protoreflect.Message {
1335	mi := &file_ermite_run_proto_msgTypes[11]
1336	if x != nil {
1337		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1338		if ms.LoadMessageInfo() == nil {
1339			ms.StoreMessageInfo(mi)
1340		}
1341		return ms
1342	}
1343	return mi.MessageOf(x)
1344}
1345
1346// Deprecated: Use ListAnnotationsRequest.ProtoReflect.Descriptor instead.
1347func (*ListAnnotationsRequest) Descriptor() ([]byte, []int) {
1348	return file_ermite_run_proto_rawDescGZIP(), []int{11}
1349}
1350
1351func (x *ListAnnotationsRequest) GetRepo() string {
1352	if x != nil {
1353		return x.Repo
1354	}
1355	return ""
1356}
1357
1358func (x *ListAnnotationsRequest) GetRunId() int64 {
1359	if x != nil {
1360		return x.RunId
1361	}
1362	return 0
1363}
1364
1365func (x *ListAnnotationsRequest) GetAttempt() int32 {
1366	if x != nil {
1367		return x.Attempt
1368	}
1369	return 0
1370}
1371
1372func (x *ListAnnotationsRequest) GetJobId() string {
1373	if x != nil {
1374		return x.JobId
1375	}
1376	return ""
1377}
1378
1379// ListAnnotationsResponse holds the annotations of a run.
1380type ListAnnotationsResponse struct {
1381	state protoimpl.MessageState `protogen:"open.v1"`
1382	// Annotations are the annotations, at most 1,000.
1383	Annotations []*JobAnnotation `protobuf:"bytes,1,rep,name=annotations,proto3" json:"annotations,omitempty"`
1384	// Truncated is true when there are more annotations than annotations holds.
1385	Truncated     bool `protobuf:"varint,2,opt,name=truncated,proto3" json:"truncated,omitempty"`
1386	unknownFields protoimpl.UnknownFields
1387	sizeCache     protoimpl.SizeCache
1388}
1389
1390func (x *ListAnnotationsResponse) Reset() {
1391	*x = ListAnnotationsResponse{}
1392	mi := &file_ermite_run_proto_msgTypes[12]
1393	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1394	ms.StoreMessageInfo(mi)
1395}
1396
1397func (x *ListAnnotationsResponse) String() string {
1398	return protoimpl.X.MessageStringOf(x)
1399}
1400
1401func (*ListAnnotationsResponse) ProtoMessage() {}
1402
1403func (x *ListAnnotationsResponse) ProtoReflect() protoreflect.Message {
1404	mi := &file_ermite_run_proto_msgTypes[12]
1405	if x != nil {
1406		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1407		if ms.LoadMessageInfo() == nil {
1408			ms.StoreMessageInfo(mi)
1409		}
1410		return ms
1411	}
1412	return mi.MessageOf(x)
1413}
1414
1415// Deprecated: Use ListAnnotationsResponse.ProtoReflect.Descriptor instead.
1416func (*ListAnnotationsResponse) Descriptor() ([]byte, []int) {
1417	return file_ermite_run_proto_rawDescGZIP(), []int{12}
1418}
1419
1420func (x *ListAnnotationsResponse) GetAnnotations() []*JobAnnotation {
1421	if x != nil {
1422		return x.Annotations
1423	}
1424	return nil
1425}
1426
1427func (x *ListAnnotationsResponse) GetTruncated() bool {
1428	if x != nil {
1429		return x.Truncated
1430	}
1431	return false
1432}
1433
1434// JobAnnotation is an annotation with the job it belongs to.
1435type JobAnnotation struct {
1436	state protoimpl.MessageState `protogen:"open.v1"`
1437	// JobId is the RunJob.id of the job.
1438	JobId string `protobuf:"bytes,1,opt,name=job_id,json=jobId,proto3" json:"job_id,omitempty"`
1439	// Annotation is the annotation as the runner sent it, after the server
1440	// checked it. Its step_number is the step of the job.
1441	Annotation    *Annotation `protobuf:"bytes,2,opt,name=annotation,proto3" json:"annotation,omitempty"`
1442	unknownFields protoimpl.UnknownFields
1443	sizeCache     protoimpl.SizeCache
1444}
1445
1446func (x *JobAnnotation) Reset() {
1447	*x = JobAnnotation{}
1448	mi := &file_ermite_run_proto_msgTypes[13]
1449	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1450	ms.StoreMessageInfo(mi)
1451}
1452
1453func (x *JobAnnotation) String() string {
1454	return protoimpl.X.MessageStringOf(x)
1455}
1456
1457func (*JobAnnotation) ProtoMessage() {}
1458
1459func (x *JobAnnotation) ProtoReflect() protoreflect.Message {
1460	mi := &file_ermite_run_proto_msgTypes[13]
1461	if x != nil {
1462		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1463		if ms.LoadMessageInfo() == nil {
1464			ms.StoreMessageInfo(mi)
1465		}
1466		return ms
1467	}
1468	return mi.MessageOf(x)
1469}
1470
1471// Deprecated: Use JobAnnotation.ProtoReflect.Descriptor instead.
1472func (*JobAnnotation) Descriptor() ([]byte, []int) {
1473	return file_ermite_run_proto_rawDescGZIP(), []int{13}
1474}
1475
1476func (x *JobAnnotation) GetJobId() string {
1477	if x != nil {
1478		return x.JobId
1479	}
1480	return ""
1481}
1482
1483func (x *JobAnnotation) GetAnnotation() *Annotation {
1484	if x != nil {
1485		return x.Annotation
1486	}
1487	return nil
1488}
1489
1490// GetStepSummariesRequest selects a job.
1491type GetStepSummariesRequest struct {
1492	state protoimpl.MessageState `protogen:"open.v1"`
1493	// Repo is the repository name.
1494	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
1495	// JobId is the RunJob.id.
1496	JobId string `protobuf:"bytes,2,opt,name=job_id,json=jobId,proto3" json:"job_id,omitempty"`
1497	// Attempt is the RunJob.attempt to read. 0 means the latest.
1498	Attempt       int32 `protobuf:"varint,3,opt,name=attempt,proto3" json:"attempt,omitempty"`
1499	unknownFields protoimpl.UnknownFields
1500	sizeCache     protoimpl.SizeCache
1501}
1502
1503func (x *GetStepSummariesRequest) Reset() {
1504	*x = GetStepSummariesRequest{}
1505	mi := &file_ermite_run_proto_msgTypes[14]
1506	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1507	ms.StoreMessageInfo(mi)
1508}
1509
1510func (x *GetStepSummariesRequest) String() string {
1511	return protoimpl.X.MessageStringOf(x)
1512}
1513
1514func (*GetStepSummariesRequest) ProtoMessage() {}
1515
1516func (x *GetStepSummariesRequest) ProtoReflect() protoreflect.Message {
1517	mi := &file_ermite_run_proto_msgTypes[14]
1518	if x != nil {
1519		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1520		if ms.LoadMessageInfo() == nil {
1521			ms.StoreMessageInfo(mi)
1522		}
1523		return ms
1524	}
1525	return mi.MessageOf(x)
1526}
1527
1528// Deprecated: Use GetStepSummariesRequest.ProtoReflect.Descriptor instead.
1529func (*GetStepSummariesRequest) Descriptor() ([]byte, []int) {
1530	return file_ermite_run_proto_rawDescGZIP(), []int{14}
1531}
1532
1533func (x *GetStepSummariesRequest) GetRepo() string {
1534	if x != nil {
1535		return x.Repo
1536	}
1537	return ""
1538}
1539
1540func (x *GetStepSummariesRequest) GetJobId() string {
1541	if x != nil {
1542		return x.JobId
1543	}
1544	return ""
1545}
1546
1547func (x *GetStepSummariesRequest) GetAttempt() int32 {
1548	if x != nil {
1549		return x.Attempt
1550	}
1551	return 0
1552}
1553
1554// GetStepSummariesResponse holds the summaries of a job.
1555type GetStepSummariesResponse struct {
1556	state protoimpl.MessageState `protogen:"open.v1"`
1557	// Summaries are the summaries of the steps that have one, ordered by step
1558	// number: at most 20, the first 20 steps having one.
1559	Summaries []*StepSummary `protobuf:"bytes,1,rep,name=summaries,proto3" json:"summaries,omitempty"`
1560	// Truncated is true when the job has more than 20 steps with a summary and
1561	// summaries holds only the first 20.
1562	Truncated     bool `protobuf:"varint,2,opt,name=truncated,proto3" json:"truncated,omitempty"`
1563	unknownFields protoimpl.UnknownFields
1564	sizeCache     protoimpl.SizeCache
1565}
1566
1567func (x *GetStepSummariesResponse) Reset() {
1568	*x = GetStepSummariesResponse{}
1569	mi := &file_ermite_run_proto_msgTypes[15]
1570	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1571	ms.StoreMessageInfo(mi)
1572}
1573
1574func (x *GetStepSummariesResponse) String() string {
1575	return protoimpl.X.MessageStringOf(x)
1576}
1577
1578func (*GetStepSummariesResponse) ProtoMessage() {}
1579
1580func (x *GetStepSummariesResponse) ProtoReflect() protoreflect.Message {
1581	mi := &file_ermite_run_proto_msgTypes[15]
1582	if x != nil {
1583		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1584		if ms.LoadMessageInfo() == nil {
1585			ms.StoreMessageInfo(mi)
1586		}
1587		return ms
1588	}
1589	return mi.MessageOf(x)
1590}
1591
1592// Deprecated: Use GetStepSummariesResponse.ProtoReflect.Descriptor instead.
1593func (*GetStepSummariesResponse) Descriptor() ([]byte, []int) {
1594	return file_ermite_run_proto_rawDescGZIP(), []int{15}
1595}
1596
1597func (x *GetStepSummariesResponse) GetSummaries() []*StepSummary {
1598	if x != nil {
1599		return x.Summaries
1600	}
1601	return nil
1602}
1603
1604func (x *GetStepSummariesResponse) GetTruncated() bool {
1605	if x != nil {
1606		return x.Truncated
1607	}
1608	return false
1609}
1610
1611// StepSummary is the job summary of one step.
1612type StepSummary struct {
1613	state protoimpl.MessageState `protogen:"open.v1"`
1614	// StepNumber is the number of the step (see Step.number).
1615	StepNumber int32 `protobuf:"varint,1,opt,name=step_number,json=stepNumber,proto3" json:"step_number,omitempty"`
1616	// Markdown is the summary as uploaded, at most 1 MiB. Clients render it
1617	// safely: it is untrusted content (raw HTML and script URLs must not run).
1618	Markdown      string `protobuf:"bytes,2,opt,name=markdown,proto3" json:"markdown,omitempty"`
1619	unknownFields protoimpl.UnknownFields
1620	sizeCache     protoimpl.SizeCache
1621}
1622
1623func (x *StepSummary) Reset() {
1624	*x = StepSummary{}
1625	mi := &file_ermite_run_proto_msgTypes[16]
1626	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1627	ms.StoreMessageInfo(mi)
1628}
1629
1630func (x *StepSummary) String() string {
1631	return protoimpl.X.MessageStringOf(x)
1632}
1633
1634func (*StepSummary) ProtoMessage() {}
1635
1636func (x *StepSummary) ProtoReflect() protoreflect.Message {
1637	mi := &file_ermite_run_proto_msgTypes[16]
1638	if x != nil {
1639		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1640		if ms.LoadMessageInfo() == nil {
1641			ms.StoreMessageInfo(mi)
1642		}
1643		return ms
1644	}
1645	return mi.MessageOf(x)
1646}
1647
1648// Deprecated: Use StepSummary.ProtoReflect.Descriptor instead.
1649func (*StepSummary) Descriptor() ([]byte, []int) {
1650	return file_ermite_run_proto_rawDescGZIP(), []int{16}
1651}
1652
1653func (x *StepSummary) GetStepNumber() int32 {
1654	if x != nil {
1655		return x.StepNumber
1656	}
1657	return 0
1658}
1659
1660func (x *StepSummary) GetMarkdown() string {
1661	if x != nil {
1662		return x.Markdown
1663	}
1664	return ""
1665}
1666
1667// GetJobLogRequest selects the lines to stream.
1668type GetJobLogRequest struct {
1669	state protoimpl.MessageState `protogen:"open.v1"`
1670	// Repo is the repository name.
1671	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
1672	// JobId is the RunJob.id.
1673	JobId string `protobuf:"bytes,2,opt,name=job_id,json=jobId,proto3" json:"job_id,omitempty"`
1674	// Attempt is the RunJob.attempt whose log to read. 0 means the latest.
1675	Attempt int32 `protobuf:"varint,3,opt,name=attempt,proto3" json:"attempt,omitempty"`
1676	// Offset is the number of the first line to send, counted from 0 across all
1677	// steps (see Step.log_start). Negative is invalid_argument.
1678	Offset int64 `protobuf:"varint,4,opt,name=offset,proto3" json:"offset,omitempty"`
1679	// Follow keeps the stream open while the job runs. See GetJobLog.
1680	Follow        bool `protobuf:"varint,5,opt,name=follow,proto3" json:"follow,omitempty"`
1681	unknownFields protoimpl.UnknownFields
1682	sizeCache     protoimpl.SizeCache
1683}
1684
1685func (x *GetJobLogRequest) Reset() {
1686	*x = GetJobLogRequest{}
1687	mi := &file_ermite_run_proto_msgTypes[17]
1688	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1689	ms.StoreMessageInfo(mi)
1690}
1691
1692func (x *GetJobLogRequest) String() string {
1693	return protoimpl.X.MessageStringOf(x)
1694}
1695
1696func (*GetJobLogRequest) ProtoMessage() {}
1697
1698func (x *GetJobLogRequest) ProtoReflect() protoreflect.Message {
1699	mi := &file_ermite_run_proto_msgTypes[17]
1700	if x != nil {
1701		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1702		if ms.LoadMessageInfo() == nil {
1703			ms.StoreMessageInfo(mi)
1704		}
1705		return ms
1706	}
1707	return mi.MessageOf(x)
1708}
1709
1710// Deprecated: Use GetJobLogRequest.ProtoReflect.Descriptor instead.
1711func (*GetJobLogRequest) Descriptor() ([]byte, []int) {
1712	return file_ermite_run_proto_rawDescGZIP(), []int{17}
1713}
1714
1715func (x *GetJobLogRequest) GetRepo() string {
1716	if x != nil {
1717		return x.Repo
1718	}
1719	return ""
1720}
1721
1722func (x *GetJobLogRequest) GetJobId() string {
1723	if x != nil {
1724		return x.JobId
1725	}
1726	return ""
1727}
1728
1729func (x *GetJobLogRequest) GetAttempt() int32 {
1730	if x != nil {
1731		return x.Attempt
1732	}
1733	return 0
1734}
1735
1736func (x *GetJobLogRequest) GetOffset() int64 {
1737	if x != nil {
1738		return x.Offset
1739	}
1740	return 0
1741}
1742
1743func (x *GetJobLogRequest) GetFollow() bool {
1744	if x != nil {
1745		return x.Follow
1746	}
1747	return false
1748}
1749
1750// GetJobLogResponse is one message of the log stream.
1751type GetJobLogResponse struct {
1752	state protoimpl.MessageState `protogen:"open.v1"`
1753	// Offset is the number of the first line of lines.
1754	Offset int64 `protobuf:"varint,1,opt,name=offset,proto3" json:"offset,omitempty"`
1755	// Lines are consecutive lines of the log, at most 1,000, at most 64 KiB of
1756	// text in total. Never empty.
1757	Lines         []*JobLogLine `protobuf:"bytes,2,rep,name=lines,proto3" json:"lines,omitempty"`
1758	unknownFields protoimpl.UnknownFields
1759	sizeCache     protoimpl.SizeCache
1760}
1761
1762func (x *GetJobLogResponse) Reset() {
1763	*x = GetJobLogResponse{}
1764	mi := &file_ermite_run_proto_msgTypes[18]
1765	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1766	ms.StoreMessageInfo(mi)
1767}
1768
1769func (x *GetJobLogResponse) String() string {
1770	return protoimpl.X.MessageStringOf(x)
1771}
1772
1773func (*GetJobLogResponse) ProtoMessage() {}
1774
1775func (x *GetJobLogResponse) ProtoReflect() protoreflect.Message {
1776	mi := &file_ermite_run_proto_msgTypes[18]
1777	if x != nil {
1778		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1779		if ms.LoadMessageInfo() == nil {
1780			ms.StoreMessageInfo(mi)
1781		}
1782		return ms
1783	}
1784	return mi.MessageOf(x)
1785}
1786
1787// Deprecated: Use GetJobLogResponse.ProtoReflect.Descriptor instead.
1788func (*GetJobLogResponse) Descriptor() ([]byte, []int) {
1789	return file_ermite_run_proto_rawDescGZIP(), []int{18}
1790}
1791
1792func (x *GetJobLogResponse) GetOffset() int64 {
1793	if x != nil {
1794		return x.Offset
1795	}
1796	return 0
1797}
1798
1799func (x *GetJobLogResponse) GetLines() []*JobLogLine {
1800	if x != nil {
1801		return x.Lines
1802	}
1803	return nil
1804}
1805
1806// JobLogLine is one line of a job log, as the runner sent it.
1807type JobLogLine struct {
1808	state protoimpl.MessageState `protogen:"open.v1"`
1809	// Step is the number of the step the line belongs to.
1810	Step int32 `protobuf:"varint,1,opt,name=step,proto3" json:"step,omitempty"`
1811	// Time is when the runner produced the line, with nanosecond precision.
1812	Time *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=time,proto3" json:"time,omitempty"`
1813	// Text is the line without its terminator, as in LogLine.text, including the
1814	// "##[group]" and "##[endgroup]" markers. Clients show it escaped.
1815	Text string `protobuf:"bytes,3,opt,name=text,proto3" json:"text,omitempty"`
1816	// Continued is true when the line continues the line before it, which was
1817	// too long for the runner to send whole (see LogLine.continued). Pieces keep
1818	// their own line numbers, so offsets are the same as the runner's; a client
1819	// that shows lines joins a continued line to the previous one. The raw log
1820	// file already has them joined.
1821	Continued     bool `protobuf:"varint,4,opt,name=continued,proto3" json:"continued,omitempty"`
1822	unknownFields protoimpl.UnknownFields
1823	sizeCache     protoimpl.SizeCache
1824}
1825
1826func (x *JobLogLine) Reset() {
1827	*x = JobLogLine{}
1828	mi := &file_ermite_run_proto_msgTypes[19]
1829	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1830	ms.StoreMessageInfo(mi)
1831}
1832
1833func (x *JobLogLine) String() string {
1834	return protoimpl.X.MessageStringOf(x)
1835}
1836
1837func (*JobLogLine) ProtoMessage() {}
1838
1839func (x *JobLogLine) ProtoReflect() protoreflect.Message {
1840	mi := &file_ermite_run_proto_msgTypes[19]
1841	if x != nil {
1842		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1843		if ms.LoadMessageInfo() == nil {
1844			ms.StoreMessageInfo(mi)
1845		}
1846		return ms
1847	}
1848	return mi.MessageOf(x)
1849}
1850
1851// Deprecated: Use JobLogLine.ProtoReflect.Descriptor instead.
1852func (*JobLogLine) Descriptor() ([]byte, []int) {
1853	return file_ermite_run_proto_rawDescGZIP(), []int{19}
1854}
1855
1856func (x *JobLogLine) GetStep() int32 {
1857	if x != nil {
1858		return x.Step
1859	}
1860	return 0
1861}
1862
1863func (x *JobLogLine) GetTime() *timestamppb.Timestamp {
1864	if x != nil {
1865		return x.Time
1866	}
1867	return nil
1868}
1869
1870func (x *JobLogLine) GetText() string {
1871	if x != nil {
1872		return x.Text
1873	}
1874	return ""
1875}
1876
1877func (x *JobLogLine) GetContinued() bool {
1878	if x != nil {
1879		return x.Continued
1880	}
1881	return false
1882}
1883
1884// CancelRunRequest names the run to cancel.
1885type CancelRunRequest struct {
1886	state protoimpl.MessageState `protogen:"open.v1"`
1887	// Repo is the repository name.
1888	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
1889	// RunId is the Run.id.
1890	RunId         int64 `protobuf:"varint,2,opt,name=run_id,json=runId,proto3" json:"run_id,omitempty"`
1891	unknownFields protoimpl.UnknownFields
1892	sizeCache     protoimpl.SizeCache
1893}
1894
1895func (x *CancelRunRequest) Reset() {
1896	*x = CancelRunRequest{}
1897	mi := &file_ermite_run_proto_msgTypes[20]
1898	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1899	ms.StoreMessageInfo(mi)
1900}
1901
1902func (x *CancelRunRequest) String() string {
1903	return protoimpl.X.MessageStringOf(x)
1904}
1905
1906func (*CancelRunRequest) ProtoMessage() {}
1907
1908func (x *CancelRunRequest) ProtoReflect() protoreflect.Message {
1909	mi := &file_ermite_run_proto_msgTypes[20]
1910	if x != nil {
1911		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1912		if ms.LoadMessageInfo() == nil {
1913			ms.StoreMessageInfo(mi)
1914		}
1915		return ms
1916	}
1917	return mi.MessageOf(x)
1918}
1919
1920// Deprecated: Use CancelRunRequest.ProtoReflect.Descriptor instead.
1921func (*CancelRunRequest) Descriptor() ([]byte, []int) {
1922	return file_ermite_run_proto_rawDescGZIP(), []int{20}
1923}
1924
1925func (x *CancelRunRequest) GetRepo() string {
1926	if x != nil {
1927		return x.Repo
1928	}
1929	return ""
1930}
1931
1932func (x *CancelRunRequest) GetRunId() int64 {
1933	if x != nil {
1934		return x.RunId
1935	}
1936	return 0
1937}
1938
1939// CancelRunResponse holds the run after the request.
1940type CancelRunResponse struct {
1941	state protoimpl.MessageState `protogen:"open.v1"`
1942	// Run is the latest attempt of the run.
1943	Run           *Run `protobuf:"bytes,1,opt,name=run,proto3" json:"run,omitempty"`
1944	unknownFields protoimpl.UnknownFields
1945	sizeCache     protoimpl.SizeCache
1946}
1947
1948func (x *CancelRunResponse) Reset() {
1949	*x = CancelRunResponse{}
1950	mi := &file_ermite_run_proto_msgTypes[21]
1951	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1952	ms.StoreMessageInfo(mi)
1953}
1954
1955func (x *CancelRunResponse) String() string {
1956	return protoimpl.X.MessageStringOf(x)
1957}
1958
1959func (*CancelRunResponse) ProtoMessage() {}
1960
1961func (x *CancelRunResponse) ProtoReflect() protoreflect.Message {
1962	mi := &file_ermite_run_proto_msgTypes[21]
1963	if x != nil {
1964		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1965		if ms.LoadMessageInfo() == nil {
1966			ms.StoreMessageInfo(mi)
1967		}
1968		return ms
1969	}
1970	return mi.MessageOf(x)
1971}
1972
1973// Deprecated: Use CancelRunResponse.ProtoReflect.Descriptor instead.
1974func (*CancelRunResponse) Descriptor() ([]byte, []int) {
1975	return file_ermite_run_proto_rawDescGZIP(), []int{21}
1976}
1977
1978func (x *CancelRunResponse) GetRun() *Run {
1979	if x != nil {
1980		return x.Run
1981	}
1982	return nil
1983}
1984
1985// RerunRunRequest names the run to run again.
1986type RerunRunRequest struct {
1987	state protoimpl.MessageState `protogen:"open.v1"`
1988	// Repo is the repository name.
1989	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
1990	// RunId is the Run.id.
1991	RunId int64 `protobuf:"varint,2,opt,name=run_id,json=runId,proto3" json:"run_id,omitempty"`
1992	// FailedOnly runs again only the jobs of the latest attempt that did not
1993	// succeed (conclusion FAILURE, CANCELLED, TIMED_OUT or ACTION_REQUIRED) and
1994	// the jobs that need them, directly or not, even if they were skipped. The
1995	// other jobs keep their result, steps and log from the earlier attempt. When
1996	// false, every job runs again.
1997	FailedOnly    bool `protobuf:"varint,3,opt,name=failed_only,json=failedOnly,proto3" json:"failed_only,omitempty"`
1998	unknownFields protoimpl.UnknownFields
1999	sizeCache     protoimpl.SizeCache
2000}
2001
2002func (x *RerunRunRequest) Reset() {
2003	*x = RerunRunRequest{}
2004	mi := &file_ermite_run_proto_msgTypes[22]
2005	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2006	ms.StoreMessageInfo(mi)
2007}
2008
2009func (x *RerunRunRequest) String() string {
2010	return protoimpl.X.MessageStringOf(x)
2011}
2012
2013func (*RerunRunRequest) ProtoMessage() {}
2014
2015func (x *RerunRunRequest) ProtoReflect() protoreflect.Message {
2016	mi := &file_ermite_run_proto_msgTypes[22]
2017	if x != nil {
2018		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2019		if ms.LoadMessageInfo() == nil {
2020			ms.StoreMessageInfo(mi)
2021		}
2022		return ms
2023	}
2024	return mi.MessageOf(x)
2025}
2026
2027// Deprecated: Use RerunRunRequest.ProtoReflect.Descriptor instead.
2028func (*RerunRunRequest) Descriptor() ([]byte, []int) {
2029	return file_ermite_run_proto_rawDescGZIP(), []int{22}
2030}
2031
2032func (x *RerunRunRequest) GetRepo() string {
2033	if x != nil {
2034		return x.Repo
2035	}
2036	return ""
2037}
2038
2039func (x *RerunRunRequest) GetRunId() int64 {
2040	if x != nil {
2041		return x.RunId
2042	}
2043	return 0
2044}
2045
2046func (x *RerunRunRequest) GetFailedOnly() bool {
2047	if x != nil {
2048		return x.FailedOnly
2049	}
2050	return false
2051}
2052
2053// RerunRunResponse holds the new attempt.
2054type RerunRunResponse struct {
2055	state protoimpl.MessageState `protogen:"open.v1"`
2056	// Run is the run as of the new attempt, QUEUED.
2057	Run           *Run `protobuf:"bytes,1,opt,name=run,proto3" json:"run,omitempty"`
2058	unknownFields protoimpl.UnknownFields
2059	sizeCache     protoimpl.SizeCache
2060}
2061
2062func (x *RerunRunResponse) Reset() {
2063	*x = RerunRunResponse{}
2064	mi := &file_ermite_run_proto_msgTypes[23]
2065	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2066	ms.StoreMessageInfo(mi)
2067}
2068
2069func (x *RerunRunResponse) String() string {
2070	return protoimpl.X.MessageStringOf(x)
2071}
2072
2073func (*RerunRunResponse) ProtoMessage() {}
2074
2075func (x *RerunRunResponse) ProtoReflect() protoreflect.Message {
2076	mi := &file_ermite_run_proto_msgTypes[23]
2077	if x != nil {
2078		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2079		if ms.LoadMessageInfo() == nil {
2080			ms.StoreMessageInfo(mi)
2081		}
2082		return ms
2083	}
2084	return mi.MessageOf(x)
2085}
2086
2087// Deprecated: Use RerunRunResponse.ProtoReflect.Descriptor instead.
2088func (*RerunRunResponse) Descriptor() ([]byte, []int) {
2089	return file_ermite_run_proto_rawDescGZIP(), []int{23}
2090}
2091
2092func (x *RerunRunResponse) GetRun() *Run {
2093	if x != nil {
2094		return x.Run
2095	}
2096	return nil
2097}
2098
2099// ListChecksRequest names the commit.
2100type ListChecksRequest struct {
2101	state protoimpl.MessageState `protogen:"open.v1"`
2102	// Repo is the repository name.
2103	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
2104	// Sha is the full commit id (40 lowercase hexadecimal characters for SHA-1).
2105	// Abbreviations and names are invalid_argument.
2106	Sha           string `protobuf:"bytes,2,opt,name=sha,proto3" json:"sha,omitempty"`
2107	unknownFields protoimpl.UnknownFields
2108	sizeCache     protoimpl.SizeCache
2109}
2110
2111func (x *ListChecksRequest) Reset() {
2112	*x = ListChecksRequest{}
2113	mi := &file_ermite_run_proto_msgTypes[24]
2114	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2115	ms.StoreMessageInfo(mi)
2116}
2117
2118func (x *ListChecksRequest) String() string {
2119	return protoimpl.X.MessageStringOf(x)
2120}
2121
2122func (*ListChecksRequest) ProtoMessage() {}
2123
2124func (x *ListChecksRequest) ProtoReflect() protoreflect.Message {
2125	mi := &file_ermite_run_proto_msgTypes[24]
2126	if x != nil {
2127		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2128		if ms.LoadMessageInfo() == nil {
2129			ms.StoreMessageInfo(mi)
2130		}
2131		return ms
2132	}
2133	return mi.MessageOf(x)
2134}
2135
2136// Deprecated: Use ListChecksRequest.ProtoReflect.Descriptor instead.
2137func (*ListChecksRequest) Descriptor() ([]byte, []int) {
2138	return file_ermite_run_proto_rawDescGZIP(), []int{24}
2139}
2140
2141func (x *ListChecksRequest) GetRepo() string {
2142	if x != nil {
2143		return x.Repo
2144	}
2145	return ""
2146}
2147
2148func (x *ListChecksRequest) GetSha() string {
2149	if x != nil {
2150		return x.Sha
2151	}
2152	return ""
2153}
2154
2155// ListChecksResponse holds the checks of a commit.
2156type ListChecksResponse struct {
2157	state protoimpl.MessageState `protogen:"open.v1"`
2158	// Checks are the checks of the commit, one per job of the latest attempt of
2159	// each run, ordered by creation time then name.
2160	Checks []*Check `protobuf:"bytes,1,rep,name=checks,proto3" json:"checks,omitempty"`
2161	// Truncated is true when the commit has more checks than checks holds.
2162	Truncated     bool `protobuf:"varint,2,opt,name=truncated,proto3" json:"truncated,omitempty"`
2163	unknownFields protoimpl.UnknownFields
2164	sizeCache     protoimpl.SizeCache
2165}
2166
2167func (x *ListChecksResponse) Reset() {
2168	*x = ListChecksResponse{}
2169	mi := &file_ermite_run_proto_msgTypes[25]
2170	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2171	ms.StoreMessageInfo(mi)
2172}
2173
2174func (x *ListChecksResponse) String() string {
2175	return protoimpl.X.MessageStringOf(x)
2176}
2177
2178func (*ListChecksResponse) ProtoMessage() {}
2179
2180func (x *ListChecksResponse) ProtoReflect() protoreflect.Message {
2181	mi := &file_ermite_run_proto_msgTypes[25]
2182	if x != nil {
2183		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2184		if ms.LoadMessageInfo() == nil {
2185			ms.StoreMessageInfo(mi)
2186		}
2187		return ms
2188	}
2189	return mi.MessageOf(x)
2190}
2191
2192// Deprecated: Use ListChecksResponse.ProtoReflect.Descriptor instead.
2193func (*ListChecksResponse) Descriptor() ([]byte, []int) {
2194	return file_ermite_run_proto_rawDescGZIP(), []int{25}
2195}
2196
2197func (x *ListChecksResponse) GetChecks() []*Check {
2198	if x != nil {
2199		return x.Checks
2200	}
2201	return nil
2202}
2203
2204func (x *ListChecksResponse) GetTruncated() bool {
2205	if x != nil {
2206		return x.Truncated
2207	}
2208	return false
2209}
2210
2211// ListRunnersRequest selects a page of runners.
2212type ListRunnersRequest struct {
2213	state protoimpl.MessageState `protogen:"open.v1"`
2214	// PageSize is the maximum number of runners to return.
2215	PageSize int32 `protobuf:"varint,1,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
2216	// PageToken is the next_page_token of a previous response. Empty for the
2217	// first page.
2218	PageToken     string `protobuf:"bytes,2,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
2219	unknownFields protoimpl.UnknownFields
2220	sizeCache     protoimpl.SizeCache
2221}
2222
2223func (x *ListRunnersRequest) Reset() {
2224	*x = ListRunnersRequest{}
2225	mi := &file_ermite_run_proto_msgTypes[26]
2226	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2227	ms.StoreMessageInfo(mi)
2228}
2229
2230func (x *ListRunnersRequest) String() string {
2231	return protoimpl.X.MessageStringOf(x)
2232}
2233
2234func (*ListRunnersRequest) ProtoMessage() {}
2235
2236func (x *ListRunnersRequest) ProtoReflect() protoreflect.Message {
2237	mi := &file_ermite_run_proto_msgTypes[26]
2238	if x != nil {
2239		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2240		if ms.LoadMessageInfo() == nil {
2241			ms.StoreMessageInfo(mi)
2242		}
2243		return ms
2244	}
2245	return mi.MessageOf(x)
2246}
2247
2248// Deprecated: Use ListRunnersRequest.ProtoReflect.Descriptor instead.
2249func (*ListRunnersRequest) Descriptor() ([]byte, []int) {
2250	return file_ermite_run_proto_rawDescGZIP(), []int{26}
2251}
2252
2253func (x *ListRunnersRequest) GetPageSize() int32 {
2254	if x != nil {
2255		return x.PageSize
2256	}
2257	return 0
2258}
2259
2260func (x *ListRunnersRequest) GetPageToken() string {
2261	if x != nil {
2262		return x.PageToken
2263	}
2264	return ""
2265}
2266
2267// ListRunnersResponse is one page of runners.
2268type ListRunnersResponse struct {
2269	state protoimpl.MessageState `protogen:"open.v1"`
2270	// Runners are the runners of this page, ordered by name.
2271	Runners []*Runner `protobuf:"bytes,1,rep,name=runners,proto3" json:"runners,omitempty"`
2272	// NextPageToken is passed as page_token to get the next page. Empty when
2273	// there is no next page.
2274	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
2275	unknownFields protoimpl.UnknownFields
2276	sizeCache     protoimpl.SizeCache
2277}
2278
2279func (x *ListRunnersResponse) Reset() {
2280	*x = ListRunnersResponse{}
2281	mi := &file_ermite_run_proto_msgTypes[27]
2282	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2283	ms.StoreMessageInfo(mi)
2284}
2285
2286func (x *ListRunnersResponse) String() string {
2287	return protoimpl.X.MessageStringOf(x)
2288}
2289
2290func (*ListRunnersResponse) ProtoMessage() {}
2291
2292func (x *ListRunnersResponse) ProtoReflect() protoreflect.Message {
2293	mi := &file_ermite_run_proto_msgTypes[27]
2294	if x != nil {
2295		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2296		if ms.LoadMessageInfo() == nil {
2297			ms.StoreMessageInfo(mi)
2298		}
2299		return ms
2300	}
2301	return mi.MessageOf(x)
2302}
2303
2304// Deprecated: Use ListRunnersResponse.ProtoReflect.Descriptor instead.
2305func (*ListRunnersResponse) Descriptor() ([]byte, []int) {
2306	return file_ermite_run_proto_rawDescGZIP(), []int{27}
2307}
2308
2309func (x *ListRunnersResponse) GetRunners() []*Runner {
2310	if x != nil {
2311		return x.Runners
2312	}
2313	return nil
2314}
2315
2316func (x *ListRunnersResponse) GetNextPageToken() string {
2317	if x != nil {
2318		return x.NextPageToken
2319	}
2320	return ""
2321}
2322
2323// RemoveRunnerRequest names the runner to remove.
2324type RemoveRunnerRequest struct {
2325	state protoimpl.MessageState `protogen:"open.v1"`
2326	// RunnerId is the Runner.id.
2327	RunnerId      string `protobuf:"bytes,1,opt,name=runner_id,json=runnerId,proto3" json:"runner_id,omitempty"`
2328	unknownFields protoimpl.UnknownFields
2329	sizeCache     protoimpl.SizeCache
2330}
2331
2332func (x *RemoveRunnerRequest) Reset() {
2333	*x = RemoveRunnerRequest{}
2334	mi := &file_ermite_run_proto_msgTypes[28]
2335	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2336	ms.StoreMessageInfo(mi)
2337}
2338
2339func (x *RemoveRunnerRequest) String() string {
2340	return protoimpl.X.MessageStringOf(x)
2341}
2342
2343func (*RemoveRunnerRequest) ProtoMessage() {}
2344
2345func (x *RemoveRunnerRequest) ProtoReflect() protoreflect.Message {
2346	mi := &file_ermite_run_proto_msgTypes[28]
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 RemoveRunnerRequest.ProtoReflect.Descriptor instead.
2358func (*RemoveRunnerRequest) Descriptor() ([]byte, []int) {
2359	return file_ermite_run_proto_rawDescGZIP(), []int{28}
2360}
2361
2362func (x *RemoveRunnerRequest) GetRunnerId() string {
2363	if x != nil {
2364		return x.RunnerId
2365	}
2366	return ""
2367}
2368
2369// RemoveRunnerResponse is empty.
2370type RemoveRunnerResponse struct {
2371	state         protoimpl.MessageState `protogen:"open.v1"`
2372	unknownFields protoimpl.UnknownFields
2373	sizeCache     protoimpl.SizeCache
2374}
2375
2376func (x *RemoveRunnerResponse) Reset() {
2377	*x = RemoveRunnerResponse{}
2378	mi := &file_ermite_run_proto_msgTypes[29]
2379	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2380	ms.StoreMessageInfo(mi)
2381}
2382
2383func (x *RemoveRunnerResponse) String() string {
2384	return protoimpl.X.MessageStringOf(x)
2385}
2386
2387func (*RemoveRunnerResponse) ProtoMessage() {}
2388
2389func (x *RemoveRunnerResponse) ProtoReflect() protoreflect.Message {
2390	mi := &file_ermite_run_proto_msgTypes[29]
2391	if x != nil {
2392		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2393		if ms.LoadMessageInfo() == nil {
2394			ms.StoreMessageInfo(mi)
2395		}
2396		return ms
2397	}
2398	return mi.MessageOf(x)
2399}
2400
2401// Deprecated: Use RemoveRunnerResponse.ProtoReflect.Descriptor instead.
2402func (*RemoveRunnerResponse) Descriptor() ([]byte, []int) {
2403	return file_ermite_run_proto_rawDescGZIP(), []int{29}
2404}
2405
2406var File_ermite_run_proto protoreflect.FileDescriptor
2407
2408const file_ermite_run_proto_rawDesc = "" +
2409	"\n" +
2410	"\x10ermite/run.proto\x12\x06ermite\x1a\x13ermite/runner.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xe4\x04\n" +
2411	"\x03Run\x12\x12\n" +
2412	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x0e\n" +
2413	"\x02id\x18\x02 \x01(\x03R\x02id\x12\x16\n" +
2414	"\x06number\x18\x03 \x01(\x03R\x06number\x12\x18\n" +
2415	"\aattempt\x18\x04 \x01(\x05R\aattempt\x12#\n" +
2416	"\rworkflow_path\x18\x05 \x01(\tR\fworkflowPath\x12#\n" +
2417	"\rworkflow_name\x18\x06 \x01(\tR\fworkflowName\x12\x14\n" +
2418	"\x05title\x18\a \x01(\tR\x05title\x12\x14\n" +
2419	"\x05event\x18\b \x01(\tR\x05event\x12\x10\n" +
2420	"\x03ref\x18\t \x01(\tR\x03ref\x12\x10\n" +
2421	"\x03sha\x18\n" +
2422	" \x01(\tR\x03sha\x12\x14\n" +
2423	"\x05actor\x18\v \x01(\tR\x05actor\x12(\n" +
2424	"\x06status\x18\f \x01(\x0e2\x10.ermite.CiStatusR\x06status\x124\n" +
2425	"\n" +
2426	"conclusion\x18\r \x01(\x0e2\x14.ermite.CiConclusionR\n" +
2427	"conclusion\x12\x14\n" +
2428	"\x05error\x18\x0e \x01(\tR\x05error\x129\n" +
2429	"\n" +
2430	"created_at\x18\x0f \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x129\n" +
2431	"\n" +
2432	"started_at\x18\x10 \x01(\v2\x1a.google.protobuf.TimestampR\tstartedAt\x12=\n" +
2433	"\fcompleted_at\x18\x11 \x01(\v2\x1a.google.protobuf.TimestampR\vcompletedAt\x12\x18\n" +
2434	"\aversion\x18\x12 \x01(\x03R\aversion\x12\x12\n" +
2435	"\x04name\x18\x13 \x01(\tR\x04name\"\x8f\x05\n" +
2436	"\x06RunJob\x12\x0e\n" +
2437	"\x02id\x18\x01 \x01(\tR\x02id\x12\x15\n" +
2438	"\x06run_id\x18\x02 \x01(\x03R\x05runId\x12\x18\n" +
2439	"\aattempt\x18\x03 \x01(\x05R\aattempt\x12\x12\n" +
2440	"\x04repo\x18\x04 \x01(\tR\x04repo\x12\x10\n" +
2441	"\x03key\x18\x05 \x01(\tR\x03key\x12\x12\n" +
2442	"\x04name\x18\x06 \x01(\tR\x04name\x12(\n" +
2443	"\x06status\x18\a \x01(\x0e2\x10.ermite.CiStatusR\x06status\x124\n" +
2444	"\n" +
2445	"conclusion\x18\b \x01(\x0e2\x14.ermite.CiConclusionR\n" +
2446	"conclusion\x12\x14\n" +
2447	"\x05error\x18\t \x01(\tR\x05error\x12\x16\n" +
2448	"\x06labels\x18\n" +
2449	" \x03(\tR\x06labels\x12\x14\n" +
2450	"\x05needs\x18\v \x03(\tR\x05needs\x12\x1b\n" +
2451	"\trunner_id\x18\f \x01(\tR\brunnerId\x12\x1f\n" +
2452	"\vrunner_name\x18\r \x01(\tR\n" +
2453	"runnerName\x125\n" +
2454	"\tisolation\x18\x0e \x01(\x0e2\x17.ermite.RunnerIsolationR\tisolation\x12\"\n" +
2455	"\x05steps\x18\x0f \x03(\v2\f.ermite.StepR\x05steps\x129\n" +
2456	"\n" +
2457	"created_at\x18\x10 \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x129\n" +
2458	"\n" +
2459	"started_at\x18\x11 \x01(\v2\x1a.google.protobuf.TimestampR\tstartedAt\x12=\n" +
2460	"\fcompleted_at\x18\x12 \x01(\v2\x1a.google.protobuf.TimestampR\vcompletedAt\x12\x18\n" +
2461	"\aversion\x18\x13 \x01(\x03R\aversion\"\xf1\x02\n" +
2462	"\x04Step\x12\x16\n" +
2463	"\x06number\x18\x01 \x01(\x05R\x06number\x12\x12\n" +
2464	"\x04name\x18\x02 \x01(\tR\x04name\x12'\n" +
2465	"\x05state\x18\x03 \x01(\x0e2\x11.ermite.StepStateR\x05state\x124\n" +
2466	"\n" +
2467	"conclusion\x18\x04 \x01(\x0e2\x14.ermite.CiConclusionR\n" +
2468	"conclusion\x129\n" +
2469	"\n" +
2470	"started_at\x18\x05 \x01(\v2\x1a.google.protobuf.TimestampR\tstartedAt\x12=\n" +
2471	"\fcompleted_at\x18\x06 \x01(\v2\x1a.google.protobuf.TimestampR\vcompletedAt\x12\x1b\n" +
2472	"\tlog_start\x18\a \x01(\x03R\blogStart\x12\x17\n" +
2473	"\alog_end\x18\b \x01(\x03R\x06logEnd\x12.\n" +
2474	"\aoutcome\x18\t \x01(\x0e2\x14.ermite.CiConclusionR\aoutcome\"\x98\x03\n" +
2475	"\x05Check\x12\x0e\n" +
2476	"\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" +
2477	"\x04repo\x18\x02 \x01(\tR\x04repo\x12\x10\n" +
2478	"\x03sha\x18\x03 \x01(\tR\x03sha\x12\x12\n" +
2479	"\x04name\x18\x04 \x01(\tR\x04name\x12(\n" +
2480	"\x06status\x18\x05 \x01(\x0e2\x10.ermite.CiStatusR\x06status\x124\n" +
2481	"\n" +
2482	"conclusion\x18\x06 \x01(\x0e2\x14.ermite.CiConclusionR\n" +
2483	"conclusion\x12\x15\n" +
2484	"\x06run_id\x18\a \x01(\x03R\x05runId\x12\x15\n" +
2485	"\x06job_id\x18\b \x01(\tR\x05jobId\x12\x18\n" +
2486	"\aattempt\x18\t \x01(\x05R\aattempt\x12#\n" +
2487	"\rworkflow_name\x18\n" +
2488	" \x01(\tR\fworkflowName\x129\n" +
2489	"\n" +
2490	"started_at\x18\v \x01(\v2\x1a.google.protobuf.TimestampR\tstartedAt\x12=\n" +
2491	"\fcompleted_at\x18\f \x01(\v2\x1a.google.protobuf.TimestampR\vcompletedAt\"\xc7\x02\n" +
2492	"\x06Runner\x12\x0e\n" +
2493	"\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" +
2494	"\x04name\x18\x02 \x01(\tR\x04name\x12\x16\n" +
2495	"\x06labels\x18\x03 \x03(\tR\x06labels\x125\n" +
2496	"\tisolation\x18\x04 \x01(\x0e2\x17.ermite.RunnerIsolationR\tisolation\x12\x18\n" +
2497	"\aversion\x18\x05 \x01(\tR\aversion\x12\x12\n" +
2498	"\x04arch\x18\x06 \x01(\tR\x04arch\x12\x0e\n" +
2499	"\x02os\x18\a \x01(\tR\x02os\x12?\n" +
2500	"\rregistered_at\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\fregisteredAt\x127\n" +
2501	"\tlast_seen\x18\t \x01(\v2\x1a.google.protobuf.TimestampR\blastSeen\x12\x12\n" +
2502	"\x04busy\x18\n" +
2503	" \x01(\bR\x04busy\"\xbf\x01\n" +
2504	"\x0fListRunsRequest\x12\x12\n" +
2505	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x1b\n" +
2506	"\tpage_size\x18\x02 \x01(\x05R\bpageSize\x12\x1d\n" +
2507	"\n" +
2508	"page_token\x18\x03 \x01(\tR\tpageToken\x12\x1a\n" +
2509	"\bworkflow\x18\x04 \x01(\tR\bworkflow\x12\x16\n" +
2510	"\x06branch\x18\x05 \x01(\tR\x06branch\x12(\n" +
2511	"\x06status\x18\x06 \x01(\x0e2\x10.ermite.CiStatusR\x06status\"[\n" +
2512	"\x10ListRunsResponse\x12\x1f\n" +
2513	"\x04runs\x18\x01 \x03(\v2\v.ermite.RunR\x04runs\x12&\n" +
2514	"\x0fnext_page_token\x18\x02 \x01(\tR\rnextPageToken\"T\n" +
2515	"\rGetRunRequest\x12\x12\n" +
2516	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x15\n" +
2517	"\x06run_id\x18\x02 \x01(\x03R\x05runId\x12\x18\n" +
2518	"\aattempt\x18\x03 \x01(\x05R\aattempt\"z\n" +
2519	"\x0eGetRunResponse\x12\x1d\n" +
2520	"\x03run\x18\x01 \x01(\v2\v.ermite.RunR\x03run\x12\"\n" +
2521	"\x04jobs\x18\x02 \x03(\v2\x0e.ermite.RunJobR\x04jobs\x12%\n" +
2522	"\x0elatest_attempt\x18\x03 \x01(\x05R\rlatestAttempt\"T\n" +
2523	"\rGetJobRequest\x12\x12\n" +
2524	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x15\n" +
2525	"\x06job_id\x18\x02 \x01(\tR\x05jobId\x12\x18\n" +
2526	"\aattempt\x18\x03 \x01(\x05R\aattempt\"2\n" +
2527	"\x0eGetJobResponse\x12 \n" +
2528	"\x03job\x18\x01 \x01(\v2\x0e.ermite.RunJobR\x03job\"t\n" +
2529	"\x16ListAnnotationsRequest\x12\x12\n" +
2530	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x15\n" +
2531	"\x06run_id\x18\x02 \x01(\x03R\x05runId\x12\x18\n" +
2532	"\aattempt\x18\x03 \x01(\x05R\aattempt\x12\x15\n" +
2533	"\x06job_id\x18\x04 \x01(\tR\x05jobId\"p\n" +
2534	"\x17ListAnnotationsResponse\x127\n" +
2535	"\vannotations\x18\x01 \x03(\v2\x15.ermite.JobAnnotationR\vannotations\x12\x1c\n" +
2536	"\ttruncated\x18\x02 \x01(\bR\ttruncated\"Z\n" +
2537	"\rJobAnnotation\x12\x15\n" +
2538	"\x06job_id\x18\x01 \x01(\tR\x05jobId\x122\n" +
2539	"\n" +
2540	"annotation\x18\x02 \x01(\v2\x12.ermite.AnnotationR\n" +
2541	"annotation\"^\n" +
2542	"\x17GetStepSummariesRequest\x12\x12\n" +
2543	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x15\n" +
2544	"\x06job_id\x18\x02 \x01(\tR\x05jobId\x12\x18\n" +
2545	"\aattempt\x18\x03 \x01(\x05R\aattempt\"k\n" +
2546	"\x18GetStepSummariesResponse\x121\n" +
2547	"\tsummaries\x18\x01 \x03(\v2\x13.ermite.StepSummaryR\tsummaries\x12\x1c\n" +
2548	"\ttruncated\x18\x02 \x01(\bR\ttruncated\"J\n" +
2549	"\vStepSummary\x12\x1f\n" +
2550	"\vstep_number\x18\x01 \x01(\x05R\n" +
2551	"stepNumber\x12\x1a\n" +
2552	"\bmarkdown\x18\x02 \x01(\tR\bmarkdown\"\x87\x01\n" +
2553	"\x10GetJobLogRequest\x12\x12\n" +
2554	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x15\n" +
2555	"\x06job_id\x18\x02 \x01(\tR\x05jobId\x12\x18\n" +
2556	"\aattempt\x18\x03 \x01(\x05R\aattempt\x12\x16\n" +
2557	"\x06offset\x18\x04 \x01(\x03R\x06offset\x12\x16\n" +
2558	"\x06follow\x18\x05 \x01(\bR\x06follow\"U\n" +
2559	"\x11GetJobLogResponse\x12\x16\n" +
2560	"\x06offset\x18\x01 \x01(\x03R\x06offset\x12(\n" +
2561	"\x05lines\x18\x02 \x03(\v2\x12.ermite.JobLogLineR\x05lines\"\x82\x01\n" +
2562	"\n" +
2563	"JobLogLine\x12\x12\n" +
2564	"\x04step\x18\x01 \x01(\x05R\x04step\x12.\n" +
2565	"\x04time\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampR\x04time\x12\x12\n" +
2566	"\x04text\x18\x03 \x01(\tR\x04text\x12\x1c\n" +
2567	"\tcontinued\x18\x04 \x01(\bR\tcontinued\"=\n" +
2568	"\x10CancelRunRequest\x12\x12\n" +
2569	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x15\n" +
2570	"\x06run_id\x18\x02 \x01(\x03R\x05runId\"2\n" +
2571	"\x11CancelRunResponse\x12\x1d\n" +
2572	"\x03run\x18\x01 \x01(\v2\v.ermite.RunR\x03run\"]\n" +
2573	"\x0fRerunRunRequest\x12\x12\n" +
2574	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x15\n" +
2575	"\x06run_id\x18\x02 \x01(\x03R\x05runId\x12\x1f\n" +
2576	"\vfailed_only\x18\x03 \x01(\bR\n" +
2577	"failedOnly\"1\n" +
2578	"\x10RerunRunResponse\x12\x1d\n" +
2579	"\x03run\x18\x01 \x01(\v2\v.ermite.RunR\x03run\"9\n" +
2580	"\x11ListChecksRequest\x12\x12\n" +
2581	"\x04repo\x18\x01 \x01(\tR\x04repo\x12\x10\n" +
2582	"\x03sha\x18\x02 \x01(\tR\x03sha\"Y\n" +
2583	"\x12ListChecksResponse\x12%\n" +
2584	"\x06checks\x18\x01 \x03(\v2\r.ermite.CheckR\x06checks\x12\x1c\n" +
2585	"\ttruncated\x18\x02 \x01(\bR\ttruncated\"P\n" +
2586	"\x12ListRunnersRequest\x12\x1b\n" +
2587	"\tpage_size\x18\x01 \x01(\x05R\bpageSize\x12\x1d\n" +
2588	"\n" +
2589	"page_token\x18\x02 \x01(\tR\tpageToken\"g\n" +
2590	"\x13ListRunnersResponse\x12(\n" +
2591	"\arunners\x18\x01 \x03(\v2\x0e.ermite.RunnerR\arunners\x12&\n" +
2592	"\x0fnext_page_token\x18\x02 \x01(\tR\rnextPageToken\"2\n" +
2593	"\x13RemoveRunnerRequest\x12\x1b\n" +
2594	"\trunner_id\x18\x01 \x01(\tR\brunnerId\"\x16\n" +
2595	"\x14RemoveRunnerResponse2\x85\x06\n" +
2596	"\n" +
2597	"RunService\x12=\n" +
2598	"\bListRuns\x12\x17.ermite.ListRunsRequest\x1a\x18.ermite.ListRunsResponse\x127\n" +
2599	"\x06GetRun\x12\x15.ermite.GetRunRequest\x1a\x16.ermite.GetRunResponse\x127\n" +
2600	"\x06GetJob\x12\x15.ermite.GetJobRequest\x1a\x16.ermite.GetJobResponse\x12R\n" +
2601	"\x0fListAnnotations\x12\x1e.ermite.ListAnnotationsRequest\x1a\x1f.ermite.ListAnnotationsResponse\x12U\n" +
2602	"\x10GetStepSummaries\x12\x1f.ermite.GetStepSummariesRequest\x1a .ermite.GetStepSummariesResponse\x12B\n" +
2603	"\tGetJobLog\x12\x18.ermite.GetJobLogRequest\x1a\x19.ermite.GetJobLogResponse0\x01\x12@\n" +
2604	"\tCancelRun\x12\x18.ermite.CancelRunRequest\x1a\x19.ermite.CancelRunResponse\x12=\n" +
2605	"\bRerunRun\x12\x17.ermite.RerunRunRequest\x1a\x18.ermite.RerunRunResponse\x12C\n" +
2606	"\n" +
2607	"ListChecks\x12\x19.ermite.ListChecksRequest\x1a\x1a.ermite.ListChecksResponse\x12F\n" +
2608	"\vListRunners\x12\x1a.ermite.ListRunnersRequest\x1a\x1b.ermite.ListRunnersResponse\x12I\n" +
2609	"\fRemoveRunner\x12\x1b.ermite.RemoveRunnerRequest\x1a\x1c.ermite.RemoveRunnerResponseBo\n" +
2610	"\n" +
2611	"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"
2612
2613var (
2614	file_ermite_run_proto_rawDescOnce sync.Once
2615	file_ermite_run_proto_rawDescData []byte
2616)
2617
2618func file_ermite_run_proto_rawDescGZIP() []byte {
2619	file_ermite_run_proto_rawDescOnce.Do(func() {
2620		file_ermite_run_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_ermite_run_proto_rawDesc), len(file_ermite_run_proto_rawDesc)))
2621	})
2622	return file_ermite_run_proto_rawDescData
2623}
2624
2625var file_ermite_run_proto_msgTypes = make([]protoimpl.MessageInfo, 30)
2626var file_ermite_run_proto_goTypes = []any{
2627	(*Run)(nil),                      // 0: ermite.Run
2628	(*RunJob)(nil),                   // 1: ermite.RunJob
2629	(*Step)(nil),                     // 2: ermite.Step
2630	(*Check)(nil),                    // 3: ermite.Check
2631	(*Runner)(nil),                   // 4: ermite.Runner
2632	(*ListRunsRequest)(nil),          // 5: ermite.ListRunsRequest
2633	(*ListRunsResponse)(nil),         // 6: ermite.ListRunsResponse
2634	(*GetRunRequest)(nil),            // 7: ermite.GetRunRequest
2635	(*GetRunResponse)(nil),           // 8: ermite.GetRunResponse
2636	(*GetJobRequest)(nil),            // 9: ermite.GetJobRequest
2637	(*GetJobResponse)(nil),           // 10: ermite.GetJobResponse
2638	(*ListAnnotationsRequest)(nil),   // 11: ermite.ListAnnotationsRequest
2639	(*ListAnnotationsResponse)(nil),  // 12: ermite.ListAnnotationsResponse
2640	(*JobAnnotation)(nil),            // 13: ermite.JobAnnotation
2641	(*GetStepSummariesRequest)(nil),  // 14: ermite.GetStepSummariesRequest
2642	(*GetStepSummariesResponse)(nil), // 15: ermite.GetStepSummariesResponse
2643	(*StepSummary)(nil),              // 16: ermite.StepSummary
2644	(*GetJobLogRequest)(nil),         // 17: ermite.GetJobLogRequest
2645	(*GetJobLogResponse)(nil),        // 18: ermite.GetJobLogResponse
2646	(*JobLogLine)(nil),               // 19: ermite.JobLogLine
2647	(*CancelRunRequest)(nil),         // 20: ermite.CancelRunRequest
2648	(*CancelRunResponse)(nil),        // 21: ermite.CancelRunResponse
2649	(*RerunRunRequest)(nil),          // 22: ermite.RerunRunRequest
2650	(*RerunRunResponse)(nil),         // 23: ermite.RerunRunResponse
2651	(*ListChecksRequest)(nil),        // 24: ermite.ListChecksRequest
2652	(*ListChecksResponse)(nil),       // 25: ermite.ListChecksResponse
2653	(*ListRunnersRequest)(nil),       // 26: ermite.ListRunnersRequest
2654	(*ListRunnersResponse)(nil),      // 27: ermite.ListRunnersResponse
2655	(*RemoveRunnerRequest)(nil),      // 28: ermite.RemoveRunnerRequest
2656	(*RemoveRunnerResponse)(nil),     // 29: ermite.RemoveRunnerResponse
2657	(CiStatus)(0),                    // 30: ermite.CiStatus
2658	(CiConclusion)(0),                // 31: ermite.CiConclusion
2659	(*timestamppb.Timestamp)(nil),    // 32: google.protobuf.Timestamp
2660	(RunnerIsolation)(0),             // 33: ermite.RunnerIsolation
2661	(StepState)(0),                   // 34: ermite.StepState
2662	(*Annotation)(nil),               // 35: ermite.Annotation
2663}
2664var file_ermite_run_proto_depIdxs = []int32{
2665	30, // 0: ermite.Run.status:type_name -> ermite.CiStatus
2666	31, // 1: ermite.Run.conclusion:type_name -> ermite.CiConclusion
2667	32, // 2: ermite.Run.created_at:type_name -> google.protobuf.Timestamp
2668	32, // 3: ermite.Run.started_at:type_name -> google.protobuf.Timestamp
2669	32, // 4: ermite.Run.completed_at:type_name -> google.protobuf.Timestamp
2670	30, // 5: ermite.RunJob.status:type_name -> ermite.CiStatus
2671	31, // 6: ermite.RunJob.conclusion:type_name -> ermite.CiConclusion
2672	33, // 7: ermite.RunJob.isolation:type_name -> ermite.RunnerIsolation
2673	2,  // 8: ermite.RunJob.steps:type_name -> ermite.Step
2674	32, // 9: ermite.RunJob.created_at:type_name -> google.protobuf.Timestamp
2675	32, // 10: ermite.RunJob.started_at:type_name -> google.protobuf.Timestamp
2676	32, // 11: ermite.RunJob.completed_at:type_name -> google.protobuf.Timestamp
2677	34, // 12: ermite.Step.state:type_name -> ermite.StepState
2678	31, // 13: ermite.Step.conclusion:type_name -> ermite.CiConclusion
2679	32, // 14: ermite.Step.started_at:type_name -> google.protobuf.Timestamp
2680	32, // 15: ermite.Step.completed_at:type_name -> google.protobuf.Timestamp
2681	31, // 16: ermite.Step.outcome:type_name -> ermite.CiConclusion
2682	30, // 17: ermite.Check.status:type_name -> ermite.CiStatus
2683	31, // 18: ermite.Check.conclusion:type_name -> ermite.CiConclusion
2684	32, // 19: ermite.Check.started_at:type_name -> google.protobuf.Timestamp
2685	32, // 20: ermite.Check.completed_at:type_name -> google.protobuf.Timestamp
2686	33, // 21: ermite.Runner.isolation:type_name -> ermite.RunnerIsolation
2687	32, // 22: ermite.Runner.registered_at:type_name -> google.protobuf.Timestamp
2688	32, // 23: ermite.Runner.last_seen:type_name -> google.protobuf.Timestamp
2689	30, // 24: ermite.ListRunsRequest.status:type_name -> ermite.CiStatus
2690	0,  // 25: ermite.ListRunsResponse.runs:type_name -> ermite.Run
2691	0,  // 26: ermite.GetRunResponse.run:type_name -> ermite.Run
2692	1,  // 27: ermite.GetRunResponse.jobs:type_name -> ermite.RunJob
2693	1,  // 28: ermite.GetJobResponse.job:type_name -> ermite.RunJob
2694	13, // 29: ermite.ListAnnotationsResponse.annotations:type_name -> ermite.JobAnnotation
2695	35, // 30: ermite.JobAnnotation.annotation:type_name -> ermite.Annotation
2696	16, // 31: ermite.GetStepSummariesResponse.summaries:type_name -> ermite.StepSummary
2697	19, // 32: ermite.GetJobLogResponse.lines:type_name -> ermite.JobLogLine
2698	32, // 33: ermite.JobLogLine.time:type_name -> google.protobuf.Timestamp
2699	0,  // 34: ermite.CancelRunResponse.run:type_name -> ermite.Run
2700	0,  // 35: ermite.RerunRunResponse.run:type_name -> ermite.Run
2701	3,  // 36: ermite.ListChecksResponse.checks:type_name -> ermite.Check
2702	4,  // 37: ermite.ListRunnersResponse.runners:type_name -> ermite.Runner
2703	5,  // 38: ermite.RunService.ListRuns:input_type -> ermite.ListRunsRequest
2704	7,  // 39: ermite.RunService.GetRun:input_type -> ermite.GetRunRequest
2705	9,  // 40: ermite.RunService.GetJob:input_type -> ermite.GetJobRequest
2706	11, // 41: ermite.RunService.ListAnnotations:input_type -> ermite.ListAnnotationsRequest
2707	14, // 42: ermite.RunService.GetStepSummaries:input_type -> ermite.GetStepSummariesRequest
2708	17, // 43: ermite.RunService.GetJobLog:input_type -> ermite.GetJobLogRequest
2709	20, // 44: ermite.RunService.CancelRun:input_type -> ermite.CancelRunRequest
2710	22, // 45: ermite.RunService.RerunRun:input_type -> ermite.RerunRunRequest
2711	24, // 46: ermite.RunService.ListChecks:input_type -> ermite.ListChecksRequest
2712	26, // 47: ermite.RunService.ListRunners:input_type -> ermite.ListRunnersRequest
2713	28, // 48: ermite.RunService.RemoveRunner:input_type -> ermite.RemoveRunnerRequest
2714	6,  // 49: ermite.RunService.ListRuns:output_type -> ermite.ListRunsResponse
2715	8,  // 50: ermite.RunService.GetRun:output_type -> ermite.GetRunResponse
2716	10, // 51: ermite.RunService.GetJob:output_type -> ermite.GetJobResponse
2717	12, // 52: ermite.RunService.ListAnnotations:output_type -> ermite.ListAnnotationsResponse
2718	15, // 53: ermite.RunService.GetStepSummaries:output_type -> ermite.GetStepSummariesResponse
2719	18, // 54: ermite.RunService.GetJobLog:output_type -> ermite.GetJobLogResponse
2720	21, // 55: ermite.RunService.CancelRun:output_type -> ermite.CancelRunResponse
2721	23, // 56: ermite.RunService.RerunRun:output_type -> ermite.RerunRunResponse
2722	25, // 57: ermite.RunService.ListChecks:output_type -> ermite.ListChecksResponse
2723	27, // 58: ermite.RunService.ListRunners:output_type -> ermite.ListRunnersResponse
2724	29, // 59: ermite.RunService.RemoveRunner:output_type -> ermite.RemoveRunnerResponse
2725	49, // [49:60] is the sub-list for method output_type
2726	38, // [38:49] is the sub-list for method input_type
2727	38, // [38:38] is the sub-list for extension type_name
2728	38, // [38:38] is the sub-list for extension extendee
2729	0,  // [0:38] is the sub-list for field type_name
2730}
2731
2732func init() { file_ermite_run_proto_init() }
2733func file_ermite_run_proto_init() {
2734	if File_ermite_run_proto != nil {
2735		return
2736	}
2737	file_ermite_runner_proto_init()
2738	type x struct{}
2739	out := protoimpl.TypeBuilder{
2740		File: protoimpl.DescBuilder{
2741			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
2742			RawDescriptor: unsafe.Slice(unsafe.StringData(file_ermite_run_proto_rawDesc), len(file_ermite_run_proto_rawDesc)),
2743			NumEnums:      0,
2744			NumMessages:   30,
2745			NumExtensions: 0,
2746			NumServices:   1,
2747		},
2748		GoTypes:           file_ermite_run_proto_goTypes,
2749		DependencyIndexes: file_ermite_run_proto_depIdxs,
2750		MessageInfos:      file_ermite_run_proto_msgTypes,
2751	}.Build()
2752	File_ermite_run_proto = out.File
2753	file_ermite_run_proto_goTypes = nil
2754	file_ermite_run_proto_depIdxs = nil
2755}

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