v0.11.0 94ffd87

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

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