v0.2.0 43088fd

exec.pb.go RawHistoryFolder

1// SPDX-License-Identifier: MIT
2
3// Internal wire format between the host process of ermite-runner and the
4// executor running inside a sandbox (vsock in a micro-VM, Unix socket in a
5// container). Frames are length-prefixed on the stream (see frame.go); this file
6// defines the payload. It is internal to ermite-runner: no compatibility is
7// promised between runner versions, which is safe because the host attaches its
8// own executable to every sandbox.
9
10// Code generated by protoc-gen-go. DO NOT EDIT.
11// versions:
12// 	protoc-gen-go v1.36.12
13// 	protoc        (unknown)
14// source: exec.proto
15
16package execpb
17
18import (
19	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
20	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
21	reflect "reflect"
22	sync "sync"
23	unsafe "unsafe"
24)
25
26const (
27	// Verify that this generated code is sufficiently up-to-date.
28	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
29	// Verify that runtime/protoimpl is sufficiently up-to-date.
30	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
31)
32
33type StreamKind int32
34
35const (
36	StreamKind_STREAM_KIND_UNSPECIFIED StreamKind = 0
37	StreamKind_STREAM_KIND_STDOUT      StreamKind = 1
38	StreamKind_STREAM_KIND_STDERR      StreamKind = 2
39)
40
41// Enum value maps for StreamKind.
42var (
43	StreamKind_name = map[int32]string{
44		0: "STREAM_KIND_UNSPECIFIED",
45		1: "STREAM_KIND_STDOUT",
46		2: "STREAM_KIND_STDERR",
47	}
48	StreamKind_value = map[string]int32{
49		"STREAM_KIND_UNSPECIFIED": 0,
50		"STREAM_KIND_STDOUT":      1,
51		"STREAM_KIND_STDERR":      2,
52	}
53)
54
55func (x StreamKind) Enum() *StreamKind {
56	p := new(StreamKind)
57	*p = x
58	return p
59}
60
61func (x StreamKind) String() string {
62	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
63}
64
65func (StreamKind) Descriptor() protoreflect.EnumDescriptor {
66	return file_exec_proto_enumTypes[0].Descriptor()
67}
68
69func (StreamKind) Type() protoreflect.EnumType {
70	return &file_exec_proto_enumTypes[0]
71}
72
73func (x StreamKind) Number() protoreflect.EnumNumber {
74	return protoreflect.EnumNumber(x)
75}
76
77// Deprecated: Use StreamKind.Descriptor instead.
78func (StreamKind) EnumDescriptor() ([]byte, []int) {
79	return file_exec_proto_rawDescGZIP(), []int{0}
80}
81
82type CancelKind int32
83
84const (
85	CancelKind_CANCEL_KIND_UNSPECIFIED CancelKind = 0 // same as USER
86	CancelKind_CANCEL_KIND_USER        CancelKind = 1
87	CancelKind_CANCEL_KIND_TIMEOUT     CancelKind = 2
88	CancelKind_CANCEL_KIND_SHUTDOWN    CancelKind = 3
89)
90
91// Enum value maps for CancelKind.
92var (
93	CancelKind_name = map[int32]string{
94		0: "CANCEL_KIND_UNSPECIFIED",
95		1: "CANCEL_KIND_USER",
96		2: "CANCEL_KIND_TIMEOUT",
97		3: "CANCEL_KIND_SHUTDOWN",
98	}
99	CancelKind_value = map[string]int32{
100		"CANCEL_KIND_UNSPECIFIED": 0,
101		"CANCEL_KIND_USER":        1,
102		"CANCEL_KIND_TIMEOUT":     2,
103		"CANCEL_KIND_SHUTDOWN":    3,
104	}
105)
106
107func (x CancelKind) Enum() *CancelKind {
108	p := new(CancelKind)
109	*p = x
110	return p
111}
112
113func (x CancelKind) String() string {
114	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
115}
116
117func (CancelKind) Descriptor() protoreflect.EnumDescriptor {
118	return file_exec_proto_enumTypes[1].Descriptor()
119}
120
121func (CancelKind) Type() protoreflect.EnumType {
122	return &file_exec_proto_enumTypes[1]
123}
124
125func (x CancelKind) Number() protoreflect.EnumNumber {
126	return protoreflect.EnumNumber(x)
127}
128
129// Deprecated: Use CancelKind.Descriptor instead.
130func (CancelKind) EnumDescriptor() ([]byte, []int) {
131	return file_exec_proto_rawDescGZIP(), []int{1}
132}
133
134type AnnotationLevel int32
135
136const (
137	AnnotationLevel_ANNOTATION_LEVEL_UNSPECIFIED AnnotationLevel = 0
138	AnnotationLevel_ANNOTATION_LEVEL_NOTICE      AnnotationLevel = 1
139	AnnotationLevel_ANNOTATION_LEVEL_WARNING     AnnotationLevel = 2
140	AnnotationLevel_ANNOTATION_LEVEL_FAILURE     AnnotationLevel = 3
141)
142
143// Enum value maps for AnnotationLevel.
144var (
145	AnnotationLevel_name = map[int32]string{
146		0: "ANNOTATION_LEVEL_UNSPECIFIED",
147		1: "ANNOTATION_LEVEL_NOTICE",
148		2: "ANNOTATION_LEVEL_WARNING",
149		3: "ANNOTATION_LEVEL_FAILURE",
150	}
151	AnnotationLevel_value = map[string]int32{
152		"ANNOTATION_LEVEL_UNSPECIFIED": 0,
153		"ANNOTATION_LEVEL_NOTICE":      1,
154		"ANNOTATION_LEVEL_WARNING":     2,
155		"ANNOTATION_LEVEL_FAILURE":     3,
156	}
157)
158
159func (x AnnotationLevel) Enum() *AnnotationLevel {
160	p := new(AnnotationLevel)
161	*p = x
162	return p
163}
164
165func (x AnnotationLevel) String() string {
166	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
167}
168
169func (AnnotationLevel) Descriptor() protoreflect.EnumDescriptor {
170	return file_exec_proto_enumTypes[2].Descriptor()
171}
172
173func (AnnotationLevel) Type() protoreflect.EnumType {
174	return &file_exec_proto_enumTypes[2]
175}
176
177func (x AnnotationLevel) Number() protoreflect.EnumNumber {
178	return protoreflect.EnumNumber(x)
179}
180
181// Deprecated: Use AnnotationLevel.Descriptor instead.
182func (AnnotationLevel) EnumDescriptor() ([]byte, []int) {
183	return file_exec_proto_rawDescGZIP(), []int{2}
184}
185
186type StepConclusion int32
187
188const (
189	StepConclusion_STEP_CONCLUSION_UNSPECIFIED StepConclusion = 0
190	StepConclusion_STEP_CONCLUSION_SUCCESS     StepConclusion = 1
191	StepConclusion_STEP_CONCLUSION_FAILURE     StepConclusion = 2
192	StepConclusion_STEP_CONCLUSION_CANCELLED   StepConclusion = 3
193	StepConclusion_STEP_CONCLUSION_SKIPPED     StepConclusion = 4
194	StepConclusion_STEP_CONCLUSION_TIMED_OUT   StepConclusion = 5 // jobs only
195)
196
197// Enum value maps for StepConclusion.
198var (
199	StepConclusion_name = map[int32]string{
200		0: "STEP_CONCLUSION_UNSPECIFIED",
201		1: "STEP_CONCLUSION_SUCCESS",
202		2: "STEP_CONCLUSION_FAILURE",
203		3: "STEP_CONCLUSION_CANCELLED",
204		4: "STEP_CONCLUSION_SKIPPED",
205		5: "STEP_CONCLUSION_TIMED_OUT",
206	}
207	StepConclusion_value = map[string]int32{
208		"STEP_CONCLUSION_UNSPECIFIED": 0,
209		"STEP_CONCLUSION_SUCCESS":     1,
210		"STEP_CONCLUSION_FAILURE":     2,
211		"STEP_CONCLUSION_CANCELLED":   3,
212		"STEP_CONCLUSION_SKIPPED":     4,
213		"STEP_CONCLUSION_TIMED_OUT":   5,
214	}
215)
216
217func (x StepConclusion) Enum() *StepConclusion {
218	p := new(StepConclusion)
219	*p = x
220	return p
221}
222
223func (x StepConclusion) String() string {
224	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
225}
226
227func (StepConclusion) Descriptor() protoreflect.EnumDescriptor {
228	return file_exec_proto_enumTypes[3].Descriptor()
229}
230
231func (StepConclusion) Type() protoreflect.EnumType {
232	return &file_exec_proto_enumTypes[3]
233}
234
235func (x StepConclusion) Number() protoreflect.EnumNumber {
236	return protoreflect.EnumNumber(x)
237}
238
239// Deprecated: Use StepConclusion.Descriptor instead.
240func (StepConclusion) EnumDescriptor() ([]byte, []int) {
241	return file_exec_proto_rawDescGZIP(), []int{3}
242}
243
244// Frame is the only message on the stream.
245type Frame struct {
246	state protoimpl.MessageState `protogen:"open.v1"`
247	// Types that are valid to be assigned to Body:
248	//
249	//	*Frame_Hello
250	//	*Frame_Run
251	//	*Frame_Output
252	//	*Frame_Exit
253	//	*Frame_Cancel
254	//	*Frame_StepStarted
255	//	*Frame_StepCompleted
256	//	*Frame_Log
257	//	*Frame_JobResult
258	//	*Frame_StepAnnotations
259	//	*Frame_StepSummary
260	//	*Frame_ResolveRequest
261	//	*Frame_ResolveResponse
262	Body          isFrame_Body `protobuf_oneof:"body"`
263	unknownFields protoimpl.UnknownFields
264	sizeCache     protoimpl.SizeCache
265}
266
267func (x *Frame) Reset() {
268	*x = Frame{}
269	mi := &file_exec_proto_msgTypes[0]
270	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
271	ms.StoreMessageInfo(mi)
272}
273
274func (x *Frame) String() string {
275	return protoimpl.X.MessageStringOf(x)
276}
277
278func (*Frame) ProtoMessage() {}
279
280func (x *Frame) ProtoReflect() protoreflect.Message {
281	mi := &file_exec_proto_msgTypes[0]
282	if x != nil {
283		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
284		if ms.LoadMessageInfo() == nil {
285			ms.StoreMessageInfo(mi)
286		}
287		return ms
288	}
289	return mi.MessageOf(x)
290}
291
292// Deprecated: Use Frame.ProtoReflect.Descriptor instead.
293func (*Frame) Descriptor() ([]byte, []int) {
294	return file_exec_proto_rawDescGZIP(), []int{0}
295}
296
297func (x *Frame) GetBody() isFrame_Body {
298	if x != nil {
299		return x.Body
300	}
301	return nil
302}
303
304func (x *Frame) GetHello() *Hello {
305	if x != nil {
306		if x, ok := x.Body.(*Frame_Hello); ok {
307			return x.Hello
308		}
309	}
310	return nil
311}
312
313func (x *Frame) GetRun() *Run {
314	if x != nil {
315		if x, ok := x.Body.(*Frame_Run); ok {
316			return x.Run
317		}
318	}
319	return nil
320}
321
322func (x *Frame) GetOutput() *Output {
323	if x != nil {
324		if x, ok := x.Body.(*Frame_Output); ok {
325			return x.Output
326		}
327	}
328	return nil
329}
330
331func (x *Frame) GetExit() *Exit {
332	if x != nil {
333		if x, ok := x.Body.(*Frame_Exit); ok {
334			return x.Exit
335		}
336	}
337	return nil
338}
339
340func (x *Frame) GetCancel() *Cancel {
341	if x != nil {
342		if x, ok := x.Body.(*Frame_Cancel); ok {
343			return x.Cancel
344		}
345	}
346	return nil
347}
348
349func (x *Frame) GetStepStarted() *StepStarted {
350	if x != nil {
351		if x, ok := x.Body.(*Frame_StepStarted); ok {
352			return x.StepStarted
353		}
354	}
355	return nil
356}
357
358func (x *Frame) GetStepCompleted() *StepCompleted {
359	if x != nil {
360		if x, ok := x.Body.(*Frame_StepCompleted); ok {
361			return x.StepCompleted
362		}
363	}
364	return nil
365}
366
367func (x *Frame) GetLog() *Log {
368	if x != nil {
369		if x, ok := x.Body.(*Frame_Log); ok {
370			return x.Log
371		}
372	}
373	return nil
374}
375
376func (x *Frame) GetJobResult() *JobResult {
377	if x != nil {
378		if x, ok := x.Body.(*Frame_JobResult); ok {
379			return x.JobResult
380		}
381	}
382	return nil
383}
384
385func (x *Frame) GetStepAnnotations() *StepAnnotations {
386	if x != nil {
387		if x, ok := x.Body.(*Frame_StepAnnotations); ok {
388			return x.StepAnnotations
389		}
390	}
391	return nil
392}
393
394func (x *Frame) GetStepSummary() *StepSummary {
395	if x != nil {
396		if x, ok := x.Body.(*Frame_StepSummary); ok {
397			return x.StepSummary
398		}
399	}
400	return nil
401}
402
403func (x *Frame) GetResolveRequest() *ResolveRequest {
404	if x != nil {
405		if x, ok := x.Body.(*Frame_ResolveRequest); ok {
406			return x.ResolveRequest
407		}
408	}
409	return nil
410}
411
412func (x *Frame) GetResolveResponse() *ResolveResponse {
413	if x != nil {
414		if x, ok := x.Body.(*Frame_ResolveResponse); ok {
415			return x.ResolveResponse
416		}
417	}
418	return nil
419}
420
421type isFrame_Body interface {
422	isFrame_Body()
423}
424
425type Frame_Hello struct {
426	Hello *Hello `protobuf:"bytes,1,opt,name=hello,proto3,oneof"` // executor -> host, first frame
427}
428
429type Frame_Run struct {
430	Run *Run `protobuf:"bytes,2,opt,name=run,proto3,oneof"` // host -> executor, after Hello
431}
432
433type Frame_Output struct {
434	Output *Output `protobuf:"bytes,3,opt,name=output,proto3,oneof"` // executor -> host
435}
436
437type Frame_Exit struct {
438	Exit *Exit `protobuf:"bytes,4,opt,name=exit,proto3,oneof"` // executor -> host, last frame
439}
440
441type Frame_Cancel struct {
442	Cancel *Cancel `protobuf:"bytes,5,opt,name=cancel,proto3,oneof"` // host -> executor
443}
444
445type Frame_StepStarted struct {
446	StepStarted *StepStarted `protobuf:"bytes,6,opt,name=step_started,json=stepStarted,proto3,oneof"` // executor -> host
447}
448
449type Frame_StepCompleted struct {
450	StepCompleted *StepCompleted `protobuf:"bytes,7,opt,name=step_completed,json=stepCompleted,proto3,oneof"` // executor -> host
451}
452
453type Frame_Log struct {
454	Log *Log `protobuf:"bytes,8,opt,name=log,proto3,oneof"` // executor -> host
455}
456
457type Frame_JobResult struct {
458	JobResult *JobResult `protobuf:"bytes,9,opt,name=job_result,json=jobResult,proto3,oneof"` // executor -> host, before Exit
459}
460
461type Frame_StepAnnotations struct {
462	StepAnnotations *StepAnnotations `protobuf:"bytes,10,opt,name=step_annotations,json=stepAnnotations,proto3,oneof"` // executor -> host, before the StepCompleted of the step
463}
464
465type Frame_StepSummary struct {
466	StepSummary *StepSummary `protobuf:"bytes,11,opt,name=step_summary,json=stepSummary,proto3,oneof"` // executor -> host, before the StepCompleted of the step
467}
468
469type Frame_ResolveRequest struct {
470	ResolveRequest *ResolveRequest `protobuf:"bytes,12,opt,name=resolve_request,json=resolveRequest,proto3,oneof"` // executor -> host
471}
472
473type Frame_ResolveResponse struct {
474	ResolveResponse *ResolveResponse `protobuf:"bytes,13,opt,name=resolve_response,json=resolveResponse,proto3,oneof"` // host -> executor, answers a ResolveRequest
475}
476
477func (*Frame_Hello) isFrame_Body() {}
478
479func (*Frame_Run) isFrame_Body() {}
480
481func (*Frame_Output) isFrame_Body() {}
482
483func (*Frame_Exit) isFrame_Body() {}
484
485func (*Frame_Cancel) isFrame_Body() {}
486
487func (*Frame_StepStarted) isFrame_Body() {}
488
489func (*Frame_StepCompleted) isFrame_Body() {}
490
491func (*Frame_Log) isFrame_Body() {}
492
493func (*Frame_JobResult) isFrame_Body() {}
494
495func (*Frame_StepAnnotations) isFrame_Body() {}
496
497func (*Frame_StepSummary) isFrame_Body() {}
498
499func (*Frame_ResolveRequest) isFrame_Body() {}
500
501func (*Frame_ResolveResponse) isFrame_Body() {}
502
503type Hello struct {
504	state         protoimpl.MessageState `protogen:"open.v1"`
505	Version       string                 `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"` // runner version of the executor
506	Sandbox       string                 `protobuf:"bytes,2,opt,name=sandbox,proto3" json:"sandbox,omitempty"` // "vm" or "container"
507	Hostname      string                 `protobuf:"bytes,3,opt,name=hostname,proto3" json:"hostname,omitempty"`
508	unknownFields protoimpl.UnknownFields
509	sizeCache     protoimpl.SizeCache
510}
511
512func (x *Hello) Reset() {
513	*x = Hello{}
514	mi := &file_exec_proto_msgTypes[1]
515	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
516	ms.StoreMessageInfo(mi)
517}
518
519func (x *Hello) String() string {
520	return protoimpl.X.MessageStringOf(x)
521}
522
523func (*Hello) ProtoMessage() {}
524
525func (x *Hello) ProtoReflect() protoreflect.Message {
526	mi := &file_exec_proto_msgTypes[1]
527	if x != nil {
528		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
529		if ms.LoadMessageInfo() == nil {
530			ms.StoreMessageInfo(mi)
531		}
532		return ms
533	}
534	return mi.MessageOf(x)
535}
536
537// Deprecated: Use Hello.ProtoReflect.Descriptor instead.
538func (*Hello) Descriptor() ([]byte, []int) {
539	return file_exec_proto_rawDescGZIP(), []int{1}
540}
541
542func (x *Hello) GetVersion() string {
543	if x != nil {
544		return x.Version
545	}
546	return ""
547}
548
549func (x *Hello) GetSandbox() string {
550	if x != nil {
551		return x.Sandbox
552	}
553	return ""
554}
555
556func (x *Hello) GetHostname() string {
557	if x != nil {
558		return x.Hostname
559	}
560	return ""
561}
562
563// Run asks the executor to run a script or a job. Without job it is the stub
564// executor of sandbox-check: the script is run with `sh -c`; an empty script
565// means the built-in diagnostics script. With job the executor runs the job
566// like a GitHub Actions runner and reports it with StepStarted, Log,
567// StepCompleted and JobResult frames, then Exit.
568type Run struct {
569	state         protoimpl.MessageState `protogen:"open.v1"`
570	Script        string                 `protobuf:"bytes,1,opt,name=script,proto3" json:"script,omitempty"`
571	Env           map[string]string      `protobuf:"bytes,2,rep,name=env,proto3" json:"env,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
572	Job           *JobSpec               `protobuf:"bytes,3,opt,name=job,proto3" json:"job,omitempty"`
573	unknownFields protoimpl.UnknownFields
574	sizeCache     protoimpl.SizeCache
575}
576
577func (x *Run) Reset() {
578	*x = Run{}
579	mi := &file_exec_proto_msgTypes[2]
580	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
581	ms.StoreMessageInfo(mi)
582}
583
584func (x *Run) String() string {
585	return protoimpl.X.MessageStringOf(x)
586}
587
588func (*Run) ProtoMessage() {}
589
590func (x *Run) ProtoReflect() protoreflect.Message {
591	mi := &file_exec_proto_msgTypes[2]
592	if x != nil {
593		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
594		if ms.LoadMessageInfo() == nil {
595			ms.StoreMessageInfo(mi)
596		}
597		return ms
598	}
599	return mi.MessageOf(x)
600}
601
602// Deprecated: Use Run.ProtoReflect.Descriptor instead.
603func (*Run) Descriptor() ([]byte, []int) {
604	return file_exec_proto_rawDescGZIP(), []int{2}
605}
606
607func (x *Run) GetScript() string {
608	if x != nil {
609		return x.Script
610	}
611	return ""
612}
613
614func (x *Run) GetEnv() map[string]string {
615	if x != nil {
616		return x.Env
617	}
618	return nil
619}
620
621func (x *Run) GetJob() *JobSpec {
622	if x != nil {
623		return x.Job
624	}
625	return nil
626}
627
628// JobSpec is the job to run: the fields of the job that ermite handed to the
629// host process, minus the tokens (the sandbox never sees them).
630type JobSpec struct {
631	state          protoimpl.MessageState `protogen:"open.v1"`
632	WorkflowPath   string                 `protobuf:"bytes,1,opt,name=workflow_path,json=workflowPath,proto3" json:"workflow_path,omitempty"`
633	WorkflowYaml   string                 `protobuf:"bytes,2,opt,name=workflow_yaml,json=workflowYaml,proto3" json:"workflow_yaml,omitempty"`
634	JobKey         string                 `protobuf:"bytes,3,opt,name=job_key,json=jobKey,proto3" json:"job_key,omitempty"`
635	Matrix         string                 `protobuf:"bytes,4,opt,name=matrix,proto3" json:"matrix,omitempty"`     // JSON object
636	Contexts       string                 `protobuf:"bytes,5,opt,name=contexts,proto3" json:"contexts,omitempty"` // JSON object
637	Repo           string                 `protobuf:"bytes,6,opt,name=repo,proto3" json:"repo,omitempty"`         // repository name
638	TimeoutMinutes int32                  `protobuf:"varint,7,opt,name=timeout_minutes,json=timeoutMinutes,proto3" json:"timeout_minutes,omitempty"`
639	RunnerName     string                 `protobuf:"bytes,8,opt,name=runner_name,json=runnerName,proto3" json:"runner_name,omitempty"`
640	RunnerVersion  string                 `protobuf:"bytes,9,opt,name=runner_version,json=runnerVersion,proto3" json:"runner_version,omitempty"`
641	// runner_environment is the runner.environment value ("github-hosted" or "self-hosted").
642	RunnerEnvironment string `protobuf:"bytes,10,opt,name=runner_environment,json=runnerEnvironment,proto3" json:"runner_environment,omitempty"`
643	Debug             bool   `protobuf:"varint,11,opt,name=debug,proto3" json:"debug,omitempty"` // ACTIONS_STEP_DEBUG
644	// deadline_ms is what is left of the job timeout when the host sends this
645	// Run, in milliseconds: the timeout counts from the moment the host received
646	// the job (runner.proto: Job.timeout_minutes), not from the start of the
647	// executor, and booting the sandbox takes time. 0 means "use
648	// timeout_minutes from now".
649	DeadlineMs int64 `protobuf:"varint,12,opt,name=deadline_ms,json=deadlineMs,proto3" json:"deadline_ms,omitempty"`
650	// send_annotations and send_summaries say that the server keeps annotations
651	// (feature ci.annotations) and step summaries (ci.summaries). The executor
652	// sends StepAnnotations and StepSummary frames only when they are set.
653	SendAnnotations bool `protobuf:"varint,13,opt,name=send_annotations,json=sendAnnotations,proto3" json:"send_annotations,omitempty"`
654	SendSummaries   bool `protobuf:"varint,14,opt,name=send_summaries,json=sendSummaries,proto3" json:"send_summaries,omitempty"`
655	unknownFields   protoimpl.UnknownFields
656	sizeCache       protoimpl.SizeCache
657}
658
659func (x *JobSpec) Reset() {
660	*x = JobSpec{}
661	mi := &file_exec_proto_msgTypes[3]
662	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
663	ms.StoreMessageInfo(mi)
664}
665
666func (x *JobSpec) String() string {
667	return protoimpl.X.MessageStringOf(x)
668}
669
670func (*JobSpec) ProtoMessage() {}
671
672func (x *JobSpec) ProtoReflect() protoreflect.Message {
673	mi := &file_exec_proto_msgTypes[3]
674	if x != nil {
675		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
676		if ms.LoadMessageInfo() == nil {
677			ms.StoreMessageInfo(mi)
678		}
679		return ms
680	}
681	return mi.MessageOf(x)
682}
683
684// Deprecated: Use JobSpec.ProtoReflect.Descriptor instead.
685func (*JobSpec) Descriptor() ([]byte, []int) {
686	return file_exec_proto_rawDescGZIP(), []int{3}
687}
688
689func (x *JobSpec) GetWorkflowPath() string {
690	if x != nil {
691		return x.WorkflowPath
692	}
693	return ""
694}
695
696func (x *JobSpec) GetWorkflowYaml() string {
697	if x != nil {
698		return x.WorkflowYaml
699	}
700	return ""
701}
702
703func (x *JobSpec) GetJobKey() string {
704	if x != nil {
705		return x.JobKey
706	}
707	return ""
708}
709
710func (x *JobSpec) GetMatrix() string {
711	if x != nil {
712		return x.Matrix
713	}
714	return ""
715}
716
717func (x *JobSpec) GetContexts() string {
718	if x != nil {
719		return x.Contexts
720	}
721	return ""
722}
723
724func (x *JobSpec) GetRepo() string {
725	if x != nil {
726		return x.Repo
727	}
728	return ""
729}
730
731func (x *JobSpec) GetTimeoutMinutes() int32 {
732	if x != nil {
733		return x.TimeoutMinutes
734	}
735	return 0
736}
737
738func (x *JobSpec) GetRunnerName() string {
739	if x != nil {
740		return x.RunnerName
741	}
742	return ""
743}
744
745func (x *JobSpec) GetRunnerVersion() string {
746	if x != nil {
747		return x.RunnerVersion
748	}
749	return ""
750}
751
752func (x *JobSpec) GetRunnerEnvironment() string {
753	if x != nil {
754		return x.RunnerEnvironment
755	}
756	return ""
757}
758
759func (x *JobSpec) GetDebug() bool {
760	if x != nil {
761		return x.Debug
762	}
763	return false
764}
765
766func (x *JobSpec) GetDeadlineMs() int64 {
767	if x != nil {
768		return x.DeadlineMs
769	}
770	return 0
771}
772
773func (x *JobSpec) GetSendAnnotations() bool {
774	if x != nil {
775		return x.SendAnnotations
776	}
777	return false
778}
779
780func (x *JobSpec) GetSendSummaries() bool {
781	if x != nil {
782		return x.SendSummaries
783	}
784	return false
785}
786
787type Output struct {
788	state         protoimpl.MessageState `protogen:"open.v1"`
789	Stream        StreamKind             `protobuf:"varint,1,opt,name=stream,proto3,enum=ermite.runner.exec.v1.StreamKind" json:"stream,omitempty"`
790	Data          []byte                 `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
791	UnixNano      int64                  `protobuf:"varint,3,opt,name=unix_nano,json=unixNano,proto3" json:"unix_nano,omitempty"`
792	unknownFields protoimpl.UnknownFields
793	sizeCache     protoimpl.SizeCache
794}
795
796func (x *Output) Reset() {
797	*x = Output{}
798	mi := &file_exec_proto_msgTypes[4]
799	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
800	ms.StoreMessageInfo(mi)
801}
802
803func (x *Output) String() string {
804	return protoimpl.X.MessageStringOf(x)
805}
806
807func (*Output) ProtoMessage() {}
808
809func (x *Output) ProtoReflect() protoreflect.Message {
810	mi := &file_exec_proto_msgTypes[4]
811	if x != nil {
812		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
813		if ms.LoadMessageInfo() == nil {
814			ms.StoreMessageInfo(mi)
815		}
816		return ms
817	}
818	return mi.MessageOf(x)
819}
820
821// Deprecated: Use Output.ProtoReflect.Descriptor instead.
822func (*Output) Descriptor() ([]byte, []int) {
823	return file_exec_proto_rawDescGZIP(), []int{4}
824}
825
826func (x *Output) GetStream() StreamKind {
827	if x != nil {
828		return x.Stream
829	}
830	return StreamKind_STREAM_KIND_UNSPECIFIED
831}
832
833func (x *Output) GetData() []byte {
834	if x != nil {
835		return x.Data
836	}
837	return nil
838}
839
840func (x *Output) GetUnixNano() int64 {
841	if x != nil {
842		return x.UnixNano
843	}
844	return 0
845}
846
847type Exit struct {
848	state         protoimpl.MessageState `protogen:"open.v1"`
849	Code          int32                  `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`
850	Error         string                 `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"` // set when the executor failed to run the script at all
851	unknownFields protoimpl.UnknownFields
852	sizeCache     protoimpl.SizeCache
853}
854
855func (x *Exit) Reset() {
856	*x = Exit{}
857	mi := &file_exec_proto_msgTypes[5]
858	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
859	ms.StoreMessageInfo(mi)
860}
861
862func (x *Exit) String() string {
863	return protoimpl.X.MessageStringOf(x)
864}
865
866func (*Exit) ProtoMessage() {}
867
868func (x *Exit) ProtoReflect() protoreflect.Message {
869	mi := &file_exec_proto_msgTypes[5]
870	if x != nil {
871		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
872		if ms.LoadMessageInfo() == nil {
873			ms.StoreMessageInfo(mi)
874		}
875		return ms
876	}
877	return mi.MessageOf(x)
878}
879
880// Deprecated: Use Exit.ProtoReflect.Descriptor instead.
881func (*Exit) Descriptor() ([]byte, []int) {
882	return file_exec_proto_rawDescGZIP(), []int{5}
883}
884
885func (x *Exit) GetCode() int32 {
886	if x != nil {
887		return x.Code
888	}
889	return 0
890}
891
892func (x *Exit) GetError() string {
893	if x != nil {
894		return x.Error
895	}
896	return ""
897}
898
899// Cancel asks the executor to stop the running script. The executor escalates
900// like the official runner: SIGINT to the script's process group at once,
901// SIGTERM 7.5 s later, SIGKILL 2.5 s after that.
902type Cancel struct {
903	state protoimpl.MessageState `protogen:"open.v1"`
904	// reason is for the job log and diagnostics ("cancelled by the user",
905	// "job timeout", ...); it never changes the behaviour.
906	Reason string `protobuf:"bytes,1,opt,name=reason,proto3" json:"reason,omitempty"`
907	// kind tells the job executor how the job ends: cancelled, timed out, or
908	// cancelled because the runner shuts down. The stub executor ignores it.
909	Kind          CancelKind `protobuf:"varint,2,opt,name=kind,proto3,enum=ermite.runner.exec.v1.CancelKind" json:"kind,omitempty"`
910	unknownFields protoimpl.UnknownFields
911	sizeCache     protoimpl.SizeCache
912}
913
914func (x *Cancel) Reset() {
915	*x = Cancel{}
916	mi := &file_exec_proto_msgTypes[6]
917	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
918	ms.StoreMessageInfo(mi)
919}
920
921func (x *Cancel) String() string {
922	return protoimpl.X.MessageStringOf(x)
923}
924
925func (*Cancel) ProtoMessage() {}
926
927func (x *Cancel) ProtoReflect() protoreflect.Message {
928	mi := &file_exec_proto_msgTypes[6]
929	if x != nil {
930		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
931		if ms.LoadMessageInfo() == nil {
932			ms.StoreMessageInfo(mi)
933		}
934		return ms
935	}
936	return mi.MessageOf(x)
937}
938
939// Deprecated: Use Cancel.ProtoReflect.Descriptor instead.
940func (*Cancel) Descriptor() ([]byte, []int) {
941	return file_exec_proto_rawDescGZIP(), []int{6}
942}
943
944func (x *Cancel) GetReason() string {
945	if x != nil {
946		return x.Reason
947	}
948	return ""
949}
950
951func (x *Cancel) GetKind() CancelKind {
952	if x != nil {
953		return x.Kind
954	}
955	return CancelKind_CANCEL_KIND_UNSPECIFIED
956}
957
958// Steps are numbered like GitHub's log: "Set up job" is 1, the steps of the
959// workflow follow, "Complete job" is last.
960type StepStarted struct {
961	state         protoimpl.MessageState `protogen:"open.v1"`
962	Number        int32                  `protobuf:"varint,1,opt,name=number,proto3" json:"number,omitempty"`
963	Name          string                 `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
964	UnixNano      int64                  `protobuf:"varint,3,opt,name=unix_nano,json=unixNano,proto3" json:"unix_nano,omitempty"`
965	unknownFields protoimpl.UnknownFields
966	sizeCache     protoimpl.SizeCache
967}
968
969func (x *StepStarted) Reset() {
970	*x = StepStarted{}
971	mi := &file_exec_proto_msgTypes[7]
972	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
973	ms.StoreMessageInfo(mi)
974}
975
976func (x *StepStarted) String() string {
977	return protoimpl.X.MessageStringOf(x)
978}
979
980func (*StepStarted) ProtoMessage() {}
981
982func (x *StepStarted) ProtoReflect() protoreflect.Message {
983	mi := &file_exec_proto_msgTypes[7]
984	if x != nil {
985		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
986		if ms.LoadMessageInfo() == nil {
987			ms.StoreMessageInfo(mi)
988		}
989		return ms
990	}
991	return mi.MessageOf(x)
992}
993
994// Deprecated: Use StepStarted.ProtoReflect.Descriptor instead.
995func (*StepStarted) Descriptor() ([]byte, []int) {
996	return file_exec_proto_rawDescGZIP(), []int{7}
997}
998
999func (x *StepStarted) GetNumber() int32 {
1000	if x != nil {
1001		return x.Number
1002	}
1003	return 0
1004}
1005
1006func (x *StepStarted) GetName() string {
1007	if x != nil {
1008		return x.Name
1009	}
1010	return ""
1011}
1012
1013func (x *StepStarted) GetUnixNano() int64 {
1014	if x != nil {
1015		return x.UnixNano
1016	}
1017	return 0
1018}
1019
1020type StepCompleted struct {
1021	state      protoimpl.MessageState `protogen:"open.v1"`
1022	Number     int32                  `protobuf:"varint,1,opt,name=number,proto3" json:"number,omitempty"`
1023	Name       string                 `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
1024	Conclusion StepConclusion         `protobuf:"varint,3,opt,name=conclusion,proto3,enum=ermite.runner.exec.v1.StepConclusion" json:"conclusion,omitempty"`
1025	UnixNano   int64                  `protobuf:"varint,4,opt,name=unix_nano,json=unixNano,proto3" json:"unix_nano,omitempty"`
1026	// outcome is steps.<id>.outcome: the result before continue-on-error. It
1027	// differs from conclusion only for a failed step with continue-on-error.
1028	// UNSPECIFIED means the same as conclusion.
1029	Outcome       StepConclusion `protobuf:"varint,5,opt,name=outcome,proto3,enum=ermite.runner.exec.v1.StepConclusion" json:"outcome,omitempty"`
1030	unknownFields protoimpl.UnknownFields
1031	sizeCache     protoimpl.SizeCache
1032}
1033
1034func (x *StepCompleted) Reset() {
1035	*x = StepCompleted{}
1036	mi := &file_exec_proto_msgTypes[8]
1037	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1038	ms.StoreMessageInfo(mi)
1039}
1040
1041func (x *StepCompleted) String() string {
1042	return protoimpl.X.MessageStringOf(x)
1043}
1044
1045func (*StepCompleted) ProtoMessage() {}
1046
1047func (x *StepCompleted) ProtoReflect() protoreflect.Message {
1048	mi := &file_exec_proto_msgTypes[8]
1049	if x != nil {
1050		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1051		if ms.LoadMessageInfo() == nil {
1052			ms.StoreMessageInfo(mi)
1053		}
1054		return ms
1055	}
1056	return mi.MessageOf(x)
1057}
1058
1059// Deprecated: Use StepCompleted.ProtoReflect.Descriptor instead.
1060func (*StepCompleted) Descriptor() ([]byte, []int) {
1061	return file_exec_proto_rawDescGZIP(), []int{8}
1062}
1063
1064func (x *StepCompleted) GetNumber() int32 {
1065	if x != nil {
1066		return x.Number
1067	}
1068	return 0
1069}
1070
1071func (x *StepCompleted) GetName() string {
1072	if x != nil {
1073		return x.Name
1074	}
1075	return ""
1076}
1077
1078func (x *StepCompleted) GetConclusion() StepConclusion {
1079	if x != nil {
1080		return x.Conclusion
1081	}
1082	return StepConclusion_STEP_CONCLUSION_UNSPECIFIED
1083}
1084
1085func (x *StepCompleted) GetUnixNano() int64 {
1086	if x != nil {
1087		return x.UnixNano
1088	}
1089	return 0
1090}
1091
1092func (x *StepCompleted) GetOutcome() StepConclusion {
1093	if x != nil {
1094		return x.Outcome
1095	}
1096	return StepConclusion_STEP_CONCLUSION_UNSPECIFIED
1097}
1098
1099// Annotation is one ::notice, ::warning or ::error (or a problem matcher
1100// match), masked. The host validates every field again before it sends them.
1101type Annotation struct {
1102	state         protoimpl.MessageState `protogen:"open.v1"`
1103	Level         AnnotationLevel        `protobuf:"varint,1,opt,name=level,proto3,enum=ermite.runner.exec.v1.AnnotationLevel" json:"level,omitempty"`
1104	Title         string                 `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"`
1105	Message       string                 `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"`
1106	File          string                 `protobuf:"bytes,4,opt,name=file,proto3" json:"file,omitempty"` // relative to the repository when the file is in it
1107	StartLine     int32                  `protobuf:"varint,5,opt,name=start_line,json=startLine,proto3" json:"start_line,omitempty"`
1108	EndLine       int32                  `protobuf:"varint,6,opt,name=end_line,json=endLine,proto3" json:"end_line,omitempty"`
1109	StartColumn   int32                  `protobuf:"varint,7,opt,name=start_column,json=startColumn,proto3" json:"start_column,omitempty"`
1110	EndColumn     int32                  `protobuf:"varint,8,opt,name=end_column,json=endColumn,proto3" json:"end_column,omitempty"`
1111	unknownFields protoimpl.UnknownFields
1112	sizeCache     protoimpl.SizeCache
1113}
1114
1115func (x *Annotation) Reset() {
1116	*x = Annotation{}
1117	mi := &file_exec_proto_msgTypes[9]
1118	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1119	ms.StoreMessageInfo(mi)
1120}
1121
1122func (x *Annotation) String() string {
1123	return protoimpl.X.MessageStringOf(x)
1124}
1125
1126func (*Annotation) ProtoMessage() {}
1127
1128func (x *Annotation) ProtoReflect() protoreflect.Message {
1129	mi := &file_exec_proto_msgTypes[9]
1130	if x != nil {
1131		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1132		if ms.LoadMessageInfo() == nil {
1133			ms.StoreMessageInfo(mi)
1134		}
1135		return ms
1136	}
1137	return mi.MessageOf(x)
1138}
1139
1140// Deprecated: Use Annotation.ProtoReflect.Descriptor instead.
1141func (*Annotation) Descriptor() ([]byte, []int) {
1142	return file_exec_proto_rawDescGZIP(), []int{9}
1143}
1144
1145func (x *Annotation) GetLevel() AnnotationLevel {
1146	if x != nil {
1147		return x.Level
1148	}
1149	return AnnotationLevel_ANNOTATION_LEVEL_UNSPECIFIED
1150}
1151
1152func (x *Annotation) GetTitle() string {
1153	if x != nil {
1154		return x.Title
1155	}
1156	return ""
1157}
1158
1159func (x *Annotation) GetMessage() string {
1160	if x != nil {
1161		return x.Message
1162	}
1163	return ""
1164}
1165
1166func (x *Annotation) GetFile() string {
1167	if x != nil {
1168		return x.File
1169	}
1170	return ""
1171}
1172
1173func (x *Annotation) GetStartLine() int32 {
1174	if x != nil {
1175		return x.StartLine
1176	}
1177	return 0
1178}
1179
1180func (x *Annotation) GetEndLine() int32 {
1181	if x != nil {
1182		return x.EndLine
1183	}
1184	return 0
1185}
1186
1187func (x *Annotation) GetStartColumn() int32 {
1188	if x != nil {
1189		return x.StartColumn
1190	}
1191	return 0
1192}
1193
1194func (x *Annotation) GetEndColumn() int32 {
1195	if x != nil {
1196		return x.EndColumn
1197	}
1198	return 0
1199}
1200
1201// StepAnnotations is the complete list of the annotations of a step (the ones
1202// the runner keeps: at most 10 per level), replacing any earlier list of that
1203// step. Annotations of the steps inside a composite action are those of the
1204// step of the workflow that uses it.
1205type StepAnnotations struct {
1206	state         protoimpl.MessageState `protogen:"open.v1"`
1207	Step          int32                  `protobuf:"varint,1,opt,name=step,proto3" json:"step,omitempty"`
1208	Annotations   []*Annotation          `protobuf:"bytes,2,rep,name=annotations,proto3" json:"annotations,omitempty"`
1209	unknownFields protoimpl.UnknownFields
1210	sizeCache     protoimpl.SizeCache
1211}
1212
1213func (x *StepAnnotations) Reset() {
1214	*x = StepAnnotations{}
1215	mi := &file_exec_proto_msgTypes[10]
1216	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1217	ms.StoreMessageInfo(mi)
1218}
1219
1220func (x *StepAnnotations) String() string {
1221	return protoimpl.X.MessageStringOf(x)
1222}
1223
1224func (*StepAnnotations) ProtoMessage() {}
1225
1226func (x *StepAnnotations) ProtoReflect() protoreflect.Message {
1227	mi := &file_exec_proto_msgTypes[10]
1228	if x != nil {
1229		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1230		if ms.LoadMessageInfo() == nil {
1231			ms.StoreMessageInfo(mi)
1232		}
1233		return ms
1234	}
1235	return mi.MessageOf(x)
1236}
1237
1238// Deprecated: Use StepAnnotations.ProtoReflect.Descriptor instead.
1239func (*StepAnnotations) Descriptor() ([]byte, []int) {
1240	return file_exec_proto_rawDescGZIP(), []int{10}
1241}
1242
1243func (x *StepAnnotations) GetStep() int32 {
1244	if x != nil {
1245		return x.Step
1246	}
1247	return 0
1248}
1249
1250func (x *StepAnnotations) GetAnnotations() []*Annotation {
1251	if x != nil {
1252		return x.Annotations
1253	}
1254	return nil
1255}
1256
1257// StepSummary is the masked content of GITHUB_STEP_SUMMARY after a step, at
1258// most 1 MiB.
1259type StepSummary struct {
1260	state         protoimpl.MessageState `protogen:"open.v1"`
1261	Step          int32                  `protobuf:"varint,1,opt,name=step,proto3" json:"step,omitempty"`
1262	Markdown      string                 `protobuf:"bytes,2,opt,name=markdown,proto3" json:"markdown,omitempty"`
1263	unknownFields protoimpl.UnknownFields
1264	sizeCache     protoimpl.SizeCache
1265}
1266
1267func (x *StepSummary) Reset() {
1268	*x = StepSummary{}
1269	mi := &file_exec_proto_msgTypes[11]
1270	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1271	ms.StoreMessageInfo(mi)
1272}
1273
1274func (x *StepSummary) String() string {
1275	return protoimpl.X.MessageStringOf(x)
1276}
1277
1278func (*StepSummary) ProtoMessage() {}
1279
1280func (x *StepSummary) ProtoReflect() protoreflect.Message {
1281	mi := &file_exec_proto_msgTypes[11]
1282	if x != nil {
1283		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1284		if ms.LoadMessageInfo() == nil {
1285			ms.StoreMessageInfo(mi)
1286		}
1287		return ms
1288	}
1289	return mi.MessageOf(x)
1290}
1291
1292// Deprecated: Use StepSummary.ProtoReflect.Descriptor instead.
1293func (*StepSummary) Descriptor() ([]byte, []int) {
1294	return file_exec_proto_rawDescGZIP(), []int{11}
1295}
1296
1297func (x *StepSummary) GetStep() int32 {
1298	if x != nil {
1299		return x.Step
1300	}
1301	return 0
1302}
1303
1304func (x *StepSummary) GetMarkdown() string {
1305	if x != nil {
1306		return x.Markdown
1307	}
1308	return ""
1309}
1310
1311// Log is one line of the job log, without terminator, valid UTF-8. A line of
1312// more than 64 KiB is cut by the executor into pieces at character boundaries;
1313// every piece but the first has continued set (the AppendLog rule).
1314type Log struct {
1315	state         protoimpl.MessageState `protogen:"open.v1"`
1316	Step          int32                  `protobuf:"varint,1,opt,name=step,proto3" json:"step,omitempty"`
1317	UnixNano      int64                  `protobuf:"varint,2,opt,name=unix_nano,json=unixNano,proto3" json:"unix_nano,omitempty"`
1318	Text          string                 `protobuf:"bytes,3,opt,name=text,proto3" json:"text,omitempty"`
1319	Continued     bool                   `protobuf:"varint,4,opt,name=continued,proto3" json:"continued,omitempty"`
1320	unknownFields protoimpl.UnknownFields
1321	sizeCache     protoimpl.SizeCache
1322}
1323
1324func (x *Log) Reset() {
1325	*x = Log{}
1326	mi := &file_exec_proto_msgTypes[12]
1327	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1328	ms.StoreMessageInfo(mi)
1329}
1330
1331func (x *Log) String() string {
1332	return protoimpl.X.MessageStringOf(x)
1333}
1334
1335func (*Log) ProtoMessage() {}
1336
1337func (x *Log) ProtoReflect() protoreflect.Message {
1338	mi := &file_exec_proto_msgTypes[12]
1339	if x != nil {
1340		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1341		if ms.LoadMessageInfo() == nil {
1342			ms.StoreMessageInfo(mi)
1343		}
1344		return ms
1345	}
1346	return mi.MessageOf(x)
1347}
1348
1349// Deprecated: Use Log.ProtoReflect.Descriptor instead.
1350func (*Log) Descriptor() ([]byte, []int) {
1351	return file_exec_proto_rawDescGZIP(), []int{12}
1352}
1353
1354func (x *Log) GetStep() int32 {
1355	if x != nil {
1356		return x.Step
1357	}
1358	return 0
1359}
1360
1361func (x *Log) GetUnixNano() int64 {
1362	if x != nil {
1363		return x.UnixNano
1364	}
1365	return 0
1366}
1367
1368func (x *Log) GetText() string {
1369	if x != nil {
1370		return x.Text
1371	}
1372	return ""
1373}
1374
1375func (x *Log) GetContinued() bool {
1376	if x != nil {
1377		return x.Continued
1378	}
1379	return false
1380}
1381
1382// JobResult is the outcome of the job; Exit follows.
1383type JobResult struct {
1384	state          protoimpl.MessageState `protogen:"open.v1"`
1385	Conclusion     StepConclusion         `protobuf:"varint,1,opt,name=conclusion,proto3,enum=ermite.runner.exec.v1.StepConclusion" json:"conclusion,omitempty"`
1386	Outputs        map[string]string      `protobuf:"bytes,2,rep,name=outputs,proto3" json:"outputs,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
1387	Error          string                 `protobuf:"bytes,3,opt,name=error,proto3" json:"error,omitempty"`
1388	RunnerShutdown bool                   `protobuf:"varint,4,opt,name=runner_shutdown,json=runnerShutdown,proto3" json:"runner_shutdown,omitempty"`
1389	unknownFields  protoimpl.UnknownFields
1390	sizeCache      protoimpl.SizeCache
1391}
1392
1393func (x *JobResult) Reset() {
1394	*x = JobResult{}
1395	mi := &file_exec_proto_msgTypes[13]
1396	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1397	ms.StoreMessageInfo(mi)
1398}
1399
1400func (x *JobResult) String() string {
1401	return protoimpl.X.MessageStringOf(x)
1402}
1403
1404func (*JobResult) ProtoMessage() {}
1405
1406func (x *JobResult) ProtoReflect() protoreflect.Message {
1407	mi := &file_exec_proto_msgTypes[13]
1408	if x != nil {
1409		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1410		if ms.LoadMessageInfo() == nil {
1411			ms.StoreMessageInfo(mi)
1412		}
1413		return ms
1414	}
1415	return mi.MessageOf(x)
1416}
1417
1418// Deprecated: Use JobResult.ProtoReflect.Descriptor instead.
1419func (*JobResult) Descriptor() ([]byte, []int) {
1420	return file_exec_proto_rawDescGZIP(), []int{13}
1421}
1422
1423func (x *JobResult) GetConclusion() StepConclusion {
1424	if x != nil {
1425		return x.Conclusion
1426	}
1427	return StepConclusion_STEP_CONCLUSION_UNSPECIFIED
1428}
1429
1430func (x *JobResult) GetOutputs() map[string]string {
1431	if x != nil {
1432		return x.Outputs
1433	}
1434	return nil
1435}
1436
1437func (x *JobResult) GetError() string {
1438	if x != nil {
1439		return x.Error
1440	}
1441	return ""
1442}
1443
1444func (x *JobResult) GetRunnerShutdown() bool {
1445	if x != nil {
1446		return x.RunnerShutdown
1447	}
1448	return false
1449}
1450
1451// ResolveRequest asks the host to resolve actions with RunnerService.
1452// ResolveActions: the job token stays in the host, so the executor cannot call
1453// it. The executor sends one per level of composite actions (the runner's own
1454// "one more round per level") and waits for the ResolveResponse with the same id.
1455type ResolveRequest struct {
1456	state         protoimpl.MessageState `protogen:"open.v1"`
1457	Id            int64                  `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
1458	Uses          []string               `protobuf:"bytes,2,rep,name=uses,proto3" json:"uses,omitempty"` // "owner/repo[/path]@ref", at most 100
1459	unknownFields protoimpl.UnknownFields
1460	sizeCache     protoimpl.SizeCache
1461}
1462
1463func (x *ResolveRequest) Reset() {
1464	*x = ResolveRequest{}
1465	mi := &file_exec_proto_msgTypes[14]
1466	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1467	ms.StoreMessageInfo(mi)
1468}
1469
1470func (x *ResolveRequest) String() string {
1471	return protoimpl.X.MessageStringOf(x)
1472}
1473
1474func (*ResolveRequest) ProtoMessage() {}
1475
1476func (x *ResolveRequest) ProtoReflect() protoreflect.Message {
1477	mi := &file_exec_proto_msgTypes[14]
1478	if x != nil {
1479		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1480		if ms.LoadMessageInfo() == nil {
1481			ms.StoreMessageInfo(mi)
1482		}
1483		return ms
1484	}
1485	return mi.MessageOf(x)
1486}
1487
1488// Deprecated: Use ResolveRequest.ProtoReflect.Descriptor instead.
1489func (*ResolveRequest) Descriptor() ([]byte, []int) {
1490	return file_exec_proto_rawDescGZIP(), []int{14}
1491}
1492
1493func (x *ResolveRequest) GetId() int64 {
1494	if x != nil {
1495		return x.Id
1496	}
1497	return 0
1498}
1499
1500func (x *ResolveRequest) GetUses() []string {
1501	if x != nil {
1502		return x.Uses
1503	}
1504	return nil
1505}
1506
1507// ResolveResponse answers a ResolveRequest. error is set when the call itself
1508// failed (the executor fails the job); actions has one entry per uses otherwise.
1509type ResolveResponse struct {
1510	state         protoimpl.MessageState `protogen:"open.v1"`
1511	Id            int64                  `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
1512	Error         string                 `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"`
1513	Actions       []*ResolvedAction      `protobuf:"bytes,3,rep,name=actions,proto3" json:"actions,omitempty"`
1514	unknownFields protoimpl.UnknownFields
1515	sizeCache     protoimpl.SizeCache
1516}
1517
1518func (x *ResolveResponse) Reset() {
1519	*x = ResolveResponse{}
1520	mi := &file_exec_proto_msgTypes[15]
1521	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1522	ms.StoreMessageInfo(mi)
1523}
1524
1525func (x *ResolveResponse) String() string {
1526	return protoimpl.X.MessageStringOf(x)
1527}
1528
1529func (*ResolveResponse) ProtoMessage() {}
1530
1531func (x *ResolveResponse) ProtoReflect() protoreflect.Message {
1532	mi := &file_exec_proto_msgTypes[15]
1533	if x != nil {
1534		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1535		if ms.LoadMessageInfo() == nil {
1536			ms.StoreMessageInfo(mi)
1537		}
1538		return ms
1539	}
1540	return mi.MessageOf(x)
1541}
1542
1543// Deprecated: Use ResolveResponse.ProtoReflect.Descriptor instead.
1544func (*ResolveResponse) Descriptor() ([]byte, []int) {
1545	return file_exec_proto_rawDescGZIP(), []int{15}
1546}
1547
1548func (x *ResolveResponse) GetId() int64 {
1549	if x != nil {
1550		return x.Id
1551	}
1552	return 0
1553}
1554
1555func (x *ResolveResponse) GetError() string {
1556	if x != nil {
1557		return x.Error
1558	}
1559	return ""
1560}
1561
1562func (x *ResolveResponse) GetActions() []*ResolvedAction {
1563	if x != nil {
1564		return x.Actions
1565	}
1566	return nil
1567}
1568
1569// ResolvedAction mirrors ermite.ResolvedAction (the token is a secret: the
1570// executor masks it).
1571type ResolvedAction struct {
1572	state         protoimpl.MessageState `protogen:"open.v1"`
1573	Ref           string                 `protobuf:"bytes,1,opt,name=ref,proto3" json:"ref,omitempty"`
1574	NameWithOwner string                 `protobuf:"bytes,2,opt,name=name_with_owner,json=nameWithOwner,proto3" json:"name_with_owner,omitempty"`
1575	Path          string                 `protobuf:"bytes,3,opt,name=path,proto3" json:"path,omitempty"`
1576	ResolvedSha   string                 `protobuf:"bytes,4,opt,name=resolved_sha,json=resolvedSha,proto3" json:"resolved_sha,omitempty"`
1577	TarballUrl    string                 `protobuf:"bytes,5,opt,name=tarball_url,json=tarballUrl,proto3" json:"tarball_url,omitempty"`
1578	Token         string                 `protobuf:"bytes,6,opt,name=token,proto3" json:"token,omitempty"`
1579	Source        string                 `protobuf:"bytes,7,opt,name=source,proto3" json:"source,omitempty"`
1580	Error         string                 `protobuf:"bytes,8,opt,name=error,proto3" json:"error,omitempty"`
1581	// auth_origin (scheme://host[:port], as the sandbox reaches it) is the only
1582	// origin the token may be sent to; empty means the token is never sent. The
1583	// host sets it for archives served by the ermite server, from its own
1584	// configuration, never from the URL alone.
1585	AuthOrigin    string `protobuf:"bytes,9,opt,name=auth_origin,json=authOrigin,proto3" json:"auth_origin,omitempty"`
1586	unknownFields protoimpl.UnknownFields
1587	sizeCache     protoimpl.SizeCache
1588}
1589
1590func (x *ResolvedAction) Reset() {
1591	*x = ResolvedAction{}
1592	mi := &file_exec_proto_msgTypes[16]
1593	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1594	ms.StoreMessageInfo(mi)
1595}
1596
1597func (x *ResolvedAction) String() string {
1598	return protoimpl.X.MessageStringOf(x)
1599}
1600
1601func (*ResolvedAction) ProtoMessage() {}
1602
1603func (x *ResolvedAction) ProtoReflect() protoreflect.Message {
1604	mi := &file_exec_proto_msgTypes[16]
1605	if x != nil {
1606		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1607		if ms.LoadMessageInfo() == nil {
1608			ms.StoreMessageInfo(mi)
1609		}
1610		return ms
1611	}
1612	return mi.MessageOf(x)
1613}
1614
1615// Deprecated: Use ResolvedAction.ProtoReflect.Descriptor instead.
1616func (*ResolvedAction) Descriptor() ([]byte, []int) {
1617	return file_exec_proto_rawDescGZIP(), []int{16}
1618}
1619
1620func (x *ResolvedAction) GetRef() string {
1621	if x != nil {
1622		return x.Ref
1623	}
1624	return ""
1625}
1626
1627func (x *ResolvedAction) GetNameWithOwner() string {
1628	if x != nil {
1629		return x.NameWithOwner
1630	}
1631	return ""
1632}
1633
1634func (x *ResolvedAction) GetPath() string {
1635	if x != nil {
1636		return x.Path
1637	}
1638	return ""
1639}
1640
1641func (x *ResolvedAction) GetResolvedSha() string {
1642	if x != nil {
1643		return x.ResolvedSha
1644	}
1645	return ""
1646}
1647
1648func (x *ResolvedAction) GetTarballUrl() string {
1649	if x != nil {
1650		return x.TarballUrl
1651	}
1652	return ""
1653}
1654
1655func (x *ResolvedAction) GetToken() string {
1656	if x != nil {
1657		return x.Token
1658	}
1659	return ""
1660}
1661
1662func (x *ResolvedAction) GetSource() string {
1663	if x != nil {
1664		return x.Source
1665	}
1666	return ""
1667}
1668
1669func (x *ResolvedAction) GetError() string {
1670	if x != nil {
1671		return x.Error
1672	}
1673	return ""
1674}
1675
1676func (x *ResolvedAction) GetAuthOrigin() string {
1677	if x != nil {
1678		return x.AuthOrigin
1679	}
1680	return ""
1681}
1682
1683var File_exec_proto protoreflect.FileDescriptor
1684
1685const file_exec_proto_rawDesc = "" +
1686	"\n" +
1687	"\n" +
1688	"exec.proto\x12\x15ermite.runner.exec.v1\"\xea\x06\n" +
1689	"\x05Frame\x124\n" +
1690	"\x05hello\x18\x01 \x01(\v2\x1c.ermite.runner.exec.v1.HelloH\x00R\x05hello\x12.\n" +
1691	"\x03run\x18\x02 \x01(\v2\x1a.ermite.runner.exec.v1.RunH\x00R\x03run\x127\n" +
1692	"\x06output\x18\x03 \x01(\v2\x1d.ermite.runner.exec.v1.OutputH\x00R\x06output\x121\n" +
1693	"\x04exit\x18\x04 \x01(\v2\x1b.ermite.runner.exec.v1.ExitH\x00R\x04exit\x127\n" +
1694	"\x06cancel\x18\x05 \x01(\v2\x1d.ermite.runner.exec.v1.CancelH\x00R\x06cancel\x12G\n" +
1695	"\fstep_started\x18\x06 \x01(\v2\".ermite.runner.exec.v1.StepStartedH\x00R\vstepStarted\x12M\n" +
1696	"\x0estep_completed\x18\a \x01(\v2$.ermite.runner.exec.v1.StepCompletedH\x00R\rstepCompleted\x12.\n" +
1697	"\x03log\x18\b \x01(\v2\x1a.ermite.runner.exec.v1.LogH\x00R\x03log\x12A\n" +
1698	"\n" +
1699	"job_result\x18\t \x01(\v2 .ermite.runner.exec.v1.JobResultH\x00R\tjobResult\x12S\n" +
1700	"\x10step_annotations\x18\n" +
1701	" \x01(\v2&.ermite.runner.exec.v1.StepAnnotationsH\x00R\x0fstepAnnotations\x12G\n" +
1702	"\fstep_summary\x18\v \x01(\v2\".ermite.runner.exec.v1.StepSummaryH\x00R\vstepSummary\x12P\n" +
1703	"\x0fresolve_request\x18\f \x01(\v2%.ermite.runner.exec.v1.ResolveRequestH\x00R\x0eresolveRequest\x12S\n" +
1704	"\x10resolve_response\x18\r \x01(\v2&.ermite.runner.exec.v1.ResolveResponseH\x00R\x0fresolveResponseB\x06\n" +
1705	"\x04body\"W\n" +
1706	"\x05Hello\x12\x18\n" +
1707	"\aversion\x18\x01 \x01(\tR\aversion\x12\x18\n" +
1708	"\asandbox\x18\x02 \x01(\tR\asandbox\x12\x1a\n" +
1709	"\bhostname\x18\x03 \x01(\tR\bhostname\"\xbe\x01\n" +
1710	"\x03Run\x12\x16\n" +
1711	"\x06script\x18\x01 \x01(\tR\x06script\x125\n" +
1712	"\x03env\x18\x02 \x03(\v2#.ermite.runner.exec.v1.Run.EnvEntryR\x03env\x120\n" +
1713	"\x03job\x18\x03 \x01(\v2\x1e.ermite.runner.exec.v1.JobSpecR\x03job\x1a6\n" +
1714	"\bEnvEntry\x12\x10\n" +
1715	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
1716	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xdd\x03\n" +
1717	"\aJobSpec\x12#\n" +
1718	"\rworkflow_path\x18\x01 \x01(\tR\fworkflowPath\x12#\n" +
1719	"\rworkflow_yaml\x18\x02 \x01(\tR\fworkflowYaml\x12\x17\n" +
1720	"\ajob_key\x18\x03 \x01(\tR\x06jobKey\x12\x16\n" +
1721	"\x06matrix\x18\x04 \x01(\tR\x06matrix\x12\x1a\n" +
1722	"\bcontexts\x18\x05 \x01(\tR\bcontexts\x12\x12\n" +
1723	"\x04repo\x18\x06 \x01(\tR\x04repo\x12'\n" +
1724	"\x0ftimeout_minutes\x18\a \x01(\x05R\x0etimeoutMinutes\x12\x1f\n" +
1725	"\vrunner_name\x18\b \x01(\tR\n" +
1726	"runnerName\x12%\n" +
1727	"\x0erunner_version\x18\t \x01(\tR\rrunnerVersion\x12-\n" +
1728	"\x12runner_environment\x18\n" +
1729	" \x01(\tR\x11runnerEnvironment\x12\x14\n" +
1730	"\x05debug\x18\v \x01(\bR\x05debug\x12\x1f\n" +
1731	"\vdeadline_ms\x18\f \x01(\x03R\n" +
1732	"deadlineMs\x12)\n" +
1733	"\x10send_annotations\x18\r \x01(\bR\x0fsendAnnotations\x12%\n" +
1734	"\x0esend_summaries\x18\x0e \x01(\bR\rsendSummaries\"t\n" +
1735	"\x06Output\x129\n" +
1736	"\x06stream\x18\x01 \x01(\x0e2!.ermite.runner.exec.v1.StreamKindR\x06stream\x12\x12\n" +
1737	"\x04data\x18\x02 \x01(\fR\x04data\x12\x1b\n" +
1738	"\tunix_nano\x18\x03 \x01(\x03R\bunixNano\"0\n" +
1739	"\x04Exit\x12\x12\n" +
1740	"\x04code\x18\x01 \x01(\x05R\x04code\x12\x14\n" +
1741	"\x05error\x18\x02 \x01(\tR\x05error\"W\n" +
1742	"\x06Cancel\x12\x16\n" +
1743	"\x06reason\x18\x01 \x01(\tR\x06reason\x125\n" +
1744	"\x04kind\x18\x02 \x01(\x0e2!.ermite.runner.exec.v1.CancelKindR\x04kind\"V\n" +
1745	"\vStepStarted\x12\x16\n" +
1746	"\x06number\x18\x01 \x01(\x05R\x06number\x12\x12\n" +
1747	"\x04name\x18\x02 \x01(\tR\x04name\x12\x1b\n" +
1748	"\tunix_nano\x18\x03 \x01(\x03R\bunixNano\"\xe0\x01\n" +
1749	"\rStepCompleted\x12\x16\n" +
1750	"\x06number\x18\x01 \x01(\x05R\x06number\x12\x12\n" +
1751	"\x04name\x18\x02 \x01(\tR\x04name\x12E\n" +
1752	"\n" +
1753	"conclusion\x18\x03 \x01(\x0e2%.ermite.runner.exec.v1.StepConclusionR\n" +
1754	"conclusion\x12\x1b\n" +
1755	"\tunix_nano\x18\x04 \x01(\x03R\bunixNano\x12?\n" +
1756	"\aoutcome\x18\x05 \x01(\x0e2%.ermite.runner.exec.v1.StepConclusionR\aoutcome\"\x8a\x02\n" +
1757	"\n" +
1758	"Annotation\x12<\n" +
1759	"\x05level\x18\x01 \x01(\x0e2&.ermite.runner.exec.v1.AnnotationLevelR\x05level\x12\x14\n" +
1760	"\x05title\x18\x02 \x01(\tR\x05title\x12\x18\n" +
1761	"\amessage\x18\x03 \x01(\tR\amessage\x12\x12\n" +
1762	"\x04file\x18\x04 \x01(\tR\x04file\x12\x1d\n" +
1763	"\n" +
1764	"start_line\x18\x05 \x01(\x05R\tstartLine\x12\x19\n" +
1765	"\bend_line\x18\x06 \x01(\x05R\aendLine\x12!\n" +
1766	"\fstart_column\x18\a \x01(\x05R\vstartColumn\x12\x1d\n" +
1767	"\n" +
1768	"end_column\x18\b \x01(\x05R\tendColumn\"j\n" +
1769	"\x0fStepAnnotations\x12\x12\n" +
1770	"\x04step\x18\x01 \x01(\x05R\x04step\x12C\n" +
1771	"\vannotations\x18\x02 \x03(\v2!.ermite.runner.exec.v1.AnnotationR\vannotations\"=\n" +
1772	"\vStepSummary\x12\x12\n" +
1773	"\x04step\x18\x01 \x01(\x05R\x04step\x12\x1a\n" +
1774	"\bmarkdown\x18\x02 \x01(\tR\bmarkdown\"h\n" +
1775	"\x03Log\x12\x12\n" +
1776	"\x04step\x18\x01 \x01(\x05R\x04step\x12\x1b\n" +
1777	"\tunix_nano\x18\x02 \x01(\x03R\bunixNano\x12\x12\n" +
1778	"\x04text\x18\x03 \x01(\tR\x04text\x12\x1c\n" +
1779	"\tcontinued\x18\x04 \x01(\bR\tcontinued\"\x96\x02\n" +
1780	"\tJobResult\x12E\n" +
1781	"\n" +
1782	"conclusion\x18\x01 \x01(\x0e2%.ermite.runner.exec.v1.StepConclusionR\n" +
1783	"conclusion\x12G\n" +
1784	"\aoutputs\x18\x02 \x03(\v2-.ermite.runner.exec.v1.JobResult.OutputsEntryR\aoutputs\x12\x14\n" +
1785	"\x05error\x18\x03 \x01(\tR\x05error\x12'\n" +
1786	"\x0frunner_shutdown\x18\x04 \x01(\bR\x0erunnerShutdown\x1a:\n" +
1787	"\fOutputsEntry\x12\x10\n" +
1788	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
1789	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"4\n" +
1790	"\x0eResolveRequest\x12\x0e\n" +
1791	"\x02id\x18\x01 \x01(\x03R\x02id\x12\x12\n" +
1792	"\x04uses\x18\x02 \x03(\tR\x04uses\"x\n" +
1793	"\x0fResolveResponse\x12\x0e\n" +
1794	"\x02id\x18\x01 \x01(\x03R\x02id\x12\x14\n" +
1795	"\x05error\x18\x02 \x01(\tR\x05error\x12?\n" +
1796	"\aactions\x18\x03 \x03(\v2%.ermite.runner.exec.v1.ResolvedActionR\aactions\"\x87\x02\n" +
1797	"\x0eResolvedAction\x12\x10\n" +
1798	"\x03ref\x18\x01 \x01(\tR\x03ref\x12&\n" +
1799	"\x0fname_with_owner\x18\x02 \x01(\tR\rnameWithOwner\x12\x12\n" +
1800	"\x04path\x18\x03 \x01(\tR\x04path\x12!\n" +
1801	"\fresolved_sha\x18\x04 \x01(\tR\vresolvedSha\x12\x1f\n" +
1802	"\vtarball_url\x18\x05 \x01(\tR\n" +
1803	"tarballUrl\x12\x14\n" +
1804	"\x05token\x18\x06 \x01(\tR\x05token\x12\x16\n" +
1805	"\x06source\x18\a \x01(\tR\x06source\x12\x14\n" +
1806	"\x05error\x18\b \x01(\tR\x05error\x12\x1f\n" +
1807	"\vauth_origin\x18\t \x01(\tR\n" +
1808	"authOrigin*Y\n" +
1809	"\n" +
1810	"StreamKind\x12\x1b\n" +
1811	"\x17STREAM_KIND_UNSPECIFIED\x10\x00\x12\x16\n" +
1812	"\x12STREAM_KIND_STDOUT\x10\x01\x12\x16\n" +
1813	"\x12STREAM_KIND_STDERR\x10\x02*r\n" +
1814	"\n" +
1815	"CancelKind\x12\x1b\n" +
1816	"\x17CANCEL_KIND_UNSPECIFIED\x10\x00\x12\x14\n" +
1817	"\x10CANCEL_KIND_USER\x10\x01\x12\x17\n" +
1818	"\x13CANCEL_KIND_TIMEOUT\x10\x02\x12\x18\n" +
1819	"\x14CANCEL_KIND_SHUTDOWN\x10\x03*\x8c\x01\n" +
1820	"\x0fAnnotationLevel\x12 \n" +
1821	"\x1cANNOTATION_LEVEL_UNSPECIFIED\x10\x00\x12\x1b\n" +
1822	"\x17ANNOTATION_LEVEL_NOTICE\x10\x01\x12\x1c\n" +
1823	"\x18ANNOTATION_LEVEL_WARNING\x10\x02\x12\x1c\n" +
1824	"\x18ANNOTATION_LEVEL_FAILURE\x10\x03*\xc6\x01\n" +
1825	"\x0eStepConclusion\x12\x1f\n" +
1826	"\x1bSTEP_CONCLUSION_UNSPECIFIED\x10\x00\x12\x1b\n" +
1827	"\x17STEP_CONCLUSION_SUCCESS\x10\x01\x12\x1b\n" +
1828	"\x17STEP_CONCLUSION_FAILURE\x10\x02\x12\x1d\n" +
1829	"\x19STEP_CONCLUSION_CANCELLED\x10\x03\x12\x1b\n" +
1830	"\x17STEP_CONCLUSION_SKIPPED\x10\x04\x12\x1d\n" +
1831	"\x19STEP_CONCLUSION_TIMED_OUT\x10\x05B4Z2bnema.dev/ermite-runner/internal/execstream/execpbb\x06proto3"
1832
1833var (
1834	file_exec_proto_rawDescOnce sync.Once
1835	file_exec_proto_rawDescData []byte
1836)
1837
1838func file_exec_proto_rawDescGZIP() []byte {
1839	file_exec_proto_rawDescOnce.Do(func() {
1840		file_exec_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_exec_proto_rawDesc), len(file_exec_proto_rawDesc)))
1841	})
1842	return file_exec_proto_rawDescData
1843}
1844
1845var file_exec_proto_enumTypes = make([]protoimpl.EnumInfo, 4)
1846var file_exec_proto_msgTypes = make([]protoimpl.MessageInfo, 19)
1847var file_exec_proto_goTypes = []any{
1848	(StreamKind)(0),         // 0: ermite.runner.exec.v1.StreamKind
1849	(CancelKind)(0),         // 1: ermite.runner.exec.v1.CancelKind
1850	(AnnotationLevel)(0),    // 2: ermite.runner.exec.v1.AnnotationLevel
1851	(StepConclusion)(0),     // 3: ermite.runner.exec.v1.StepConclusion
1852	(*Frame)(nil),           // 4: ermite.runner.exec.v1.Frame
1853	(*Hello)(nil),           // 5: ermite.runner.exec.v1.Hello
1854	(*Run)(nil),             // 6: ermite.runner.exec.v1.Run
1855	(*JobSpec)(nil),         // 7: ermite.runner.exec.v1.JobSpec
1856	(*Output)(nil),          // 8: ermite.runner.exec.v1.Output
1857	(*Exit)(nil),            // 9: ermite.runner.exec.v1.Exit
1858	(*Cancel)(nil),          // 10: ermite.runner.exec.v1.Cancel
1859	(*StepStarted)(nil),     // 11: ermite.runner.exec.v1.StepStarted
1860	(*StepCompleted)(nil),   // 12: ermite.runner.exec.v1.StepCompleted
1861	(*Annotation)(nil),      // 13: ermite.runner.exec.v1.Annotation
1862	(*StepAnnotations)(nil), // 14: ermite.runner.exec.v1.StepAnnotations
1863	(*StepSummary)(nil),     // 15: ermite.runner.exec.v1.StepSummary
1864	(*Log)(nil),             // 16: ermite.runner.exec.v1.Log
1865	(*JobResult)(nil),       // 17: ermite.runner.exec.v1.JobResult
1866	(*ResolveRequest)(nil),  // 18: ermite.runner.exec.v1.ResolveRequest
1867	(*ResolveResponse)(nil), // 19: ermite.runner.exec.v1.ResolveResponse
1868	(*ResolvedAction)(nil),  // 20: ermite.runner.exec.v1.ResolvedAction
1869	nil,                     // 21: ermite.runner.exec.v1.Run.EnvEntry
1870	nil,                     // 22: ermite.runner.exec.v1.JobResult.OutputsEntry
1871}
1872var file_exec_proto_depIdxs = []int32{
1873	5,  // 0: ermite.runner.exec.v1.Frame.hello:type_name -> ermite.runner.exec.v1.Hello
1874	6,  // 1: ermite.runner.exec.v1.Frame.run:type_name -> ermite.runner.exec.v1.Run
1875	8,  // 2: ermite.runner.exec.v1.Frame.output:type_name -> ermite.runner.exec.v1.Output
1876	9,  // 3: ermite.runner.exec.v1.Frame.exit:type_name -> ermite.runner.exec.v1.Exit
1877	10, // 4: ermite.runner.exec.v1.Frame.cancel:type_name -> ermite.runner.exec.v1.Cancel
1878	11, // 5: ermite.runner.exec.v1.Frame.step_started:type_name -> ermite.runner.exec.v1.StepStarted
1879	12, // 6: ermite.runner.exec.v1.Frame.step_completed:type_name -> ermite.runner.exec.v1.StepCompleted
1880	16, // 7: ermite.runner.exec.v1.Frame.log:type_name -> ermite.runner.exec.v1.Log
1881	17, // 8: ermite.runner.exec.v1.Frame.job_result:type_name -> ermite.runner.exec.v1.JobResult
1882	14, // 9: ermite.runner.exec.v1.Frame.step_annotations:type_name -> ermite.runner.exec.v1.StepAnnotations
1883	15, // 10: ermite.runner.exec.v1.Frame.step_summary:type_name -> ermite.runner.exec.v1.StepSummary
1884	18, // 11: ermite.runner.exec.v1.Frame.resolve_request:type_name -> ermite.runner.exec.v1.ResolveRequest
1885	19, // 12: ermite.runner.exec.v1.Frame.resolve_response:type_name -> ermite.runner.exec.v1.ResolveResponse
1886	21, // 13: ermite.runner.exec.v1.Run.env:type_name -> ermite.runner.exec.v1.Run.EnvEntry
1887	7,  // 14: ermite.runner.exec.v1.Run.job:type_name -> ermite.runner.exec.v1.JobSpec
1888	0,  // 15: ermite.runner.exec.v1.Output.stream:type_name -> ermite.runner.exec.v1.StreamKind
1889	1,  // 16: ermite.runner.exec.v1.Cancel.kind:type_name -> ermite.runner.exec.v1.CancelKind
1890	3,  // 17: ermite.runner.exec.v1.StepCompleted.conclusion:type_name -> ermite.runner.exec.v1.StepConclusion
1891	3,  // 18: ermite.runner.exec.v1.StepCompleted.outcome:type_name -> ermite.runner.exec.v1.StepConclusion
1892	2,  // 19: ermite.runner.exec.v1.Annotation.level:type_name -> ermite.runner.exec.v1.AnnotationLevel
1893	13, // 20: ermite.runner.exec.v1.StepAnnotations.annotations:type_name -> ermite.runner.exec.v1.Annotation
1894	3,  // 21: ermite.runner.exec.v1.JobResult.conclusion:type_name -> ermite.runner.exec.v1.StepConclusion
1895	22, // 22: ermite.runner.exec.v1.JobResult.outputs:type_name -> ermite.runner.exec.v1.JobResult.OutputsEntry
1896	20, // 23: ermite.runner.exec.v1.ResolveResponse.actions:type_name -> ermite.runner.exec.v1.ResolvedAction
1897	24, // [24:24] is the sub-list for method output_type
1898	24, // [24:24] is the sub-list for method input_type
1899	24, // [24:24] is the sub-list for extension type_name
1900	24, // [24:24] is the sub-list for extension extendee
1901	0,  // [0:24] is the sub-list for field type_name
1902}
1903
1904func init() { file_exec_proto_init() }
1905func file_exec_proto_init() {
1906	if File_exec_proto != nil {
1907		return
1908	}
1909	file_exec_proto_msgTypes[0].OneofWrappers = []any{
1910		(*Frame_Hello)(nil),
1911		(*Frame_Run)(nil),
1912		(*Frame_Output)(nil),
1913		(*Frame_Exit)(nil),
1914		(*Frame_Cancel)(nil),
1915		(*Frame_StepStarted)(nil),
1916		(*Frame_StepCompleted)(nil),
1917		(*Frame_Log)(nil),
1918		(*Frame_JobResult)(nil),
1919		(*Frame_StepAnnotations)(nil),
1920		(*Frame_StepSummary)(nil),
1921		(*Frame_ResolveRequest)(nil),
1922		(*Frame_ResolveResponse)(nil),
1923	}
1924	type x struct{}
1925	out := protoimpl.TypeBuilder{
1926		File: protoimpl.DescBuilder{
1927			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
1928			RawDescriptor: unsafe.Slice(unsafe.StringData(file_exec_proto_rawDesc), len(file_exec_proto_rawDesc)),
1929			NumEnums:      4,
1930			NumMessages:   19,
1931			NumExtensions: 0,
1932			NumServices:   0,
1933		},
1934		GoTypes:           file_exec_proto_goTypes,
1935		DependencyIndexes: file_exec_proto_depIdxs,
1936		EnumInfos:         file_exec_proto_enumTypes,
1937		MessageInfos:      file_exec_proto_msgTypes,
1938	}.Build()
1939	File_exec_proto = out.File
1940	file_exec_proto_goTypes = nil
1941	file_exec_proto_depIdxs = nil
1942}

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 4

Tags 11

↑↓ moveenter openesc close