v0.6.0 aba298d

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	//	*Frame_Secret
263	//	*Frame_Var
264	Body          isFrame_Body `protobuf_oneof:"body"`
265	unknownFields protoimpl.UnknownFields
266	sizeCache     protoimpl.SizeCache
267}
268
269func (x *Frame) Reset() {
270	*x = Frame{}
271	mi := &file_exec_proto_msgTypes[0]
272	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
273	ms.StoreMessageInfo(mi)
274}
275
276func (x *Frame) String() string {
277	return protoimpl.X.MessageStringOf(x)
278}
279
280func (*Frame) ProtoMessage() {}
281
282func (x *Frame) ProtoReflect() protoreflect.Message {
283	mi := &file_exec_proto_msgTypes[0]
284	if x != nil {
285		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
286		if ms.LoadMessageInfo() == nil {
287			ms.StoreMessageInfo(mi)
288		}
289		return ms
290	}
291	return mi.MessageOf(x)
292}
293
294// Deprecated: Use Frame.ProtoReflect.Descriptor instead.
295func (*Frame) Descriptor() ([]byte, []int) {
296	return file_exec_proto_rawDescGZIP(), []int{0}
297}
298
299func (x *Frame) GetBody() isFrame_Body {
300	if x != nil {
301		return x.Body
302	}
303	return nil
304}
305
306func (x *Frame) GetHello() *Hello {
307	if x != nil {
308		if x, ok := x.Body.(*Frame_Hello); ok {
309			return x.Hello
310		}
311	}
312	return nil
313}
314
315func (x *Frame) GetRun() *Run {
316	if x != nil {
317		if x, ok := x.Body.(*Frame_Run); ok {
318			return x.Run
319		}
320	}
321	return nil
322}
323
324func (x *Frame) GetOutput() *Output {
325	if x != nil {
326		if x, ok := x.Body.(*Frame_Output); ok {
327			return x.Output
328		}
329	}
330	return nil
331}
332
333func (x *Frame) GetExit() *Exit {
334	if x != nil {
335		if x, ok := x.Body.(*Frame_Exit); ok {
336			return x.Exit
337		}
338	}
339	return nil
340}
341
342func (x *Frame) GetCancel() *Cancel {
343	if x != nil {
344		if x, ok := x.Body.(*Frame_Cancel); ok {
345			return x.Cancel
346		}
347	}
348	return nil
349}
350
351func (x *Frame) GetStepStarted() *StepStarted {
352	if x != nil {
353		if x, ok := x.Body.(*Frame_StepStarted); ok {
354			return x.StepStarted
355		}
356	}
357	return nil
358}
359
360func (x *Frame) GetStepCompleted() *StepCompleted {
361	if x != nil {
362		if x, ok := x.Body.(*Frame_StepCompleted); ok {
363			return x.StepCompleted
364		}
365	}
366	return nil
367}
368
369func (x *Frame) GetLog() *Log {
370	if x != nil {
371		if x, ok := x.Body.(*Frame_Log); ok {
372			return x.Log
373		}
374	}
375	return nil
376}
377
378func (x *Frame) GetJobResult() *JobResult {
379	if x != nil {
380		if x, ok := x.Body.(*Frame_JobResult); ok {
381			return x.JobResult
382		}
383	}
384	return nil
385}
386
387func (x *Frame) GetStepAnnotations() *StepAnnotations {
388	if x != nil {
389		if x, ok := x.Body.(*Frame_StepAnnotations); ok {
390			return x.StepAnnotations
391		}
392	}
393	return nil
394}
395
396func (x *Frame) GetStepSummary() *StepSummary {
397	if x != nil {
398		if x, ok := x.Body.(*Frame_StepSummary); ok {
399			return x.StepSummary
400		}
401	}
402	return nil
403}
404
405func (x *Frame) GetResolveRequest() *ResolveRequest {
406	if x != nil {
407		if x, ok := x.Body.(*Frame_ResolveRequest); ok {
408			return x.ResolveRequest
409		}
410	}
411	return nil
412}
413
414func (x *Frame) GetResolveResponse() *ResolveResponse {
415	if x != nil {
416		if x, ok := x.Body.(*Frame_ResolveResponse); ok {
417			return x.ResolveResponse
418		}
419	}
420	return nil
421}
422
423func (x *Frame) GetSecret() *NamedValue {
424	if x != nil {
425		if x, ok := x.Body.(*Frame_Secret); ok {
426			return x.Secret
427		}
428	}
429	return nil
430}
431
432func (x *Frame) GetVar() *NamedValue {
433	if x != nil {
434		if x, ok := x.Body.(*Frame_Var); ok {
435			return x.Var
436		}
437	}
438	return nil
439}
440
441type isFrame_Body interface {
442	isFrame_Body()
443}
444
445type Frame_Hello struct {
446	Hello *Hello `protobuf:"bytes,1,opt,name=hello,proto3,oneof"` // executor -> host, first frame
447}
448
449type Frame_Run struct {
450	Run *Run `protobuf:"bytes,2,opt,name=run,proto3,oneof"` // host -> executor, after Hello
451}
452
453type Frame_Output struct {
454	Output *Output `protobuf:"bytes,3,opt,name=output,proto3,oneof"` // executor -> host
455}
456
457type Frame_Exit struct {
458	Exit *Exit `protobuf:"bytes,4,opt,name=exit,proto3,oneof"` // executor -> host, last frame
459}
460
461type Frame_Cancel struct {
462	Cancel *Cancel `protobuf:"bytes,5,opt,name=cancel,proto3,oneof"` // host -> executor
463}
464
465type Frame_StepStarted struct {
466	StepStarted *StepStarted `protobuf:"bytes,6,opt,name=step_started,json=stepStarted,proto3,oneof"` // executor -> host
467}
468
469type Frame_StepCompleted struct {
470	StepCompleted *StepCompleted `protobuf:"bytes,7,opt,name=step_completed,json=stepCompleted,proto3,oneof"` // executor -> host
471}
472
473type Frame_Log struct {
474	Log *Log `protobuf:"bytes,8,opt,name=log,proto3,oneof"` // executor -> host
475}
476
477type Frame_JobResult struct {
478	JobResult *JobResult `protobuf:"bytes,9,opt,name=job_result,json=jobResult,proto3,oneof"` // executor -> host, before Exit
479}
480
481type Frame_StepAnnotations struct {
482	StepAnnotations *StepAnnotations `protobuf:"bytes,10,opt,name=step_annotations,json=stepAnnotations,proto3,oneof"` // executor -> host, before the StepCompleted of the step
483}
484
485type Frame_StepSummary struct {
486	StepSummary *StepSummary `protobuf:"bytes,11,opt,name=step_summary,json=stepSummary,proto3,oneof"` // executor -> host, before the StepCompleted of the step
487}
488
489type Frame_ResolveRequest struct {
490	ResolveRequest *ResolveRequest `protobuf:"bytes,12,opt,name=resolve_request,json=resolveRequest,proto3,oneof"` // executor -> host
491}
492
493type Frame_ResolveResponse struct {
494	ResolveResponse *ResolveResponse `protobuf:"bytes,13,opt,name=resolve_response,json=resolveResponse,proto3,oneof"` // host -> executor, answers a ResolveRequest
495}
496
497type Frame_Secret struct {
498	Secret *NamedValue `protobuf:"bytes,14,opt,name=secret,proto3,oneof"` // host -> executor, one per secret, before Run
499}
500
501type Frame_Var struct {
502	Var *NamedValue `protobuf:"bytes,15,opt,name=var,proto3,oneof"` // host -> executor, one per variable, before Run
503}
504
505func (*Frame_Hello) isFrame_Body() {}
506
507func (*Frame_Run) isFrame_Body() {}
508
509func (*Frame_Output) isFrame_Body() {}
510
511func (*Frame_Exit) isFrame_Body() {}
512
513func (*Frame_Cancel) isFrame_Body() {}
514
515func (*Frame_StepStarted) isFrame_Body() {}
516
517func (*Frame_StepCompleted) isFrame_Body() {}
518
519func (*Frame_Log) isFrame_Body() {}
520
521func (*Frame_JobResult) isFrame_Body() {}
522
523func (*Frame_StepAnnotations) isFrame_Body() {}
524
525func (*Frame_StepSummary) isFrame_Body() {}
526
527func (*Frame_ResolveRequest) isFrame_Body() {}
528
529func (*Frame_ResolveResponse) isFrame_Body() {}
530
531func (*Frame_Secret) isFrame_Body() {}
532
533func (*Frame_Var) isFrame_Body() {}
534
535// NamedValue is one secret (Job.secrets) or one variable (Job.vars) of the job.
536// They travel in frames of their own, before Run, rather than in JobSpec: a
537// frame is at most 2 MiB (execstream.MaxFrame) and ermite allows many secrets of
538// 48 KiB, so a map in Run could not carry them. The executor keeps them until
539// Run arrives. Secrets are never logged nor written to disk.
540type NamedValue struct {
541	state         protoimpl.MessageState `protogen:"open.v1"`
542	Name          string                 `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
543	Value         string                 `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
544	unknownFields protoimpl.UnknownFields
545	sizeCache     protoimpl.SizeCache
546}
547
548func (x *NamedValue) Reset() {
549	*x = NamedValue{}
550	mi := &file_exec_proto_msgTypes[1]
551	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
552	ms.StoreMessageInfo(mi)
553}
554
555func (x *NamedValue) String() string {
556	return protoimpl.X.MessageStringOf(x)
557}
558
559func (*NamedValue) ProtoMessage() {}
560
561func (x *NamedValue) ProtoReflect() protoreflect.Message {
562	mi := &file_exec_proto_msgTypes[1]
563	if x != nil {
564		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
565		if ms.LoadMessageInfo() == nil {
566			ms.StoreMessageInfo(mi)
567		}
568		return ms
569	}
570	return mi.MessageOf(x)
571}
572
573// Deprecated: Use NamedValue.ProtoReflect.Descriptor instead.
574func (*NamedValue) Descriptor() ([]byte, []int) {
575	return file_exec_proto_rawDescGZIP(), []int{1}
576}
577
578func (x *NamedValue) GetName() string {
579	if x != nil {
580		return x.Name
581	}
582	return ""
583}
584
585func (x *NamedValue) GetValue() string {
586	if x != nil {
587		return x.Value
588	}
589	return ""
590}
591
592type Hello struct {
593	state         protoimpl.MessageState `protogen:"open.v1"`
594	Version       string                 `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"` // runner version of the executor
595	Sandbox       string                 `protobuf:"bytes,2,opt,name=sandbox,proto3" json:"sandbox,omitempty"` // "vm" or "container"
596	Hostname      string                 `protobuf:"bytes,3,opt,name=hostname,proto3" json:"hostname,omitempty"`
597	BootMs        map[string]int64       `protobuf:"bytes,4,rep,name=boot_ms,json=bootMs,proto3" json:"boot_ms,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
598	unknownFields protoimpl.UnknownFields
599	sizeCache     protoimpl.SizeCache
600}
601
602func (x *Hello) Reset() {
603	*x = Hello{}
604	mi := &file_exec_proto_msgTypes[2]
605	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
606	ms.StoreMessageInfo(mi)
607}
608
609func (x *Hello) String() string {
610	return protoimpl.X.MessageStringOf(x)
611}
612
613func (*Hello) ProtoMessage() {}
614
615func (x *Hello) ProtoReflect() protoreflect.Message {
616	mi := &file_exec_proto_msgTypes[2]
617	if x != nil {
618		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
619		if ms.LoadMessageInfo() == nil {
620			ms.StoreMessageInfo(mi)
621		}
622		return ms
623	}
624	return mi.MessageOf(x)
625}
626
627// Deprecated: Use Hello.ProtoReflect.Descriptor instead.
628func (*Hello) Descriptor() ([]byte, []int) {
629	return file_exec_proto_rawDescGZIP(), []int{2}
630}
631
632func (x *Hello) GetVersion() string {
633	if x != nil {
634		return x.Version
635	}
636	return ""
637}
638
639func (x *Hello) GetSandbox() string {
640	if x != nil {
641		return x.Sandbox
642	}
643	return ""
644}
645
646func (x *Hello) GetHostname() string {
647	if x != nil {
648		return x.Hostname
649	}
650	return ""
651}
652
653func (x *Hello) GetBootMs() map[string]int64 {
654	if x != nil {
655		return x.BootMs
656	}
657	return nil
658}
659
660// Run asks the executor to run a script or a job. Without job it is the stub
661// executor of sandbox-check: the script is run with `sh -c`; an empty script
662// means the built-in diagnostics script. With job the executor runs the job
663// like a GitHub Actions runner and reports it with StepStarted, Log,
664// StepCompleted and JobResult frames, then Exit.
665type Run struct {
666	state         protoimpl.MessageState `protogen:"open.v1"`
667	Script        string                 `protobuf:"bytes,1,opt,name=script,proto3" json:"script,omitempty"`
668	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"`
669	Job           *JobSpec               `protobuf:"bytes,3,opt,name=job,proto3" json:"job,omitempty"`
670	unknownFields protoimpl.UnknownFields
671	sizeCache     protoimpl.SizeCache
672}
673
674func (x *Run) Reset() {
675	*x = Run{}
676	mi := &file_exec_proto_msgTypes[3]
677	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
678	ms.StoreMessageInfo(mi)
679}
680
681func (x *Run) String() string {
682	return protoimpl.X.MessageStringOf(x)
683}
684
685func (*Run) ProtoMessage() {}
686
687func (x *Run) ProtoReflect() protoreflect.Message {
688	mi := &file_exec_proto_msgTypes[3]
689	if x != nil {
690		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
691		if ms.LoadMessageInfo() == nil {
692			ms.StoreMessageInfo(mi)
693		}
694		return ms
695	}
696	return mi.MessageOf(x)
697}
698
699// Deprecated: Use Run.ProtoReflect.Descriptor instead.
700func (*Run) Descriptor() ([]byte, []int) {
701	return file_exec_proto_rawDescGZIP(), []int{3}
702}
703
704func (x *Run) GetScript() string {
705	if x != nil {
706		return x.Script
707	}
708	return ""
709}
710
711func (x *Run) GetEnv() map[string]string {
712	if x != nil {
713		return x.Env
714	}
715	return nil
716}
717
718func (x *Run) GetJob() *JobSpec {
719	if x != nil {
720		return x.Job
721	}
722	return nil
723}
724
725// JobSpec is the job to run: the fields of the job that ermite handed to the
726// host process, minus the tokens (the sandbox never sees them).
727type JobSpec struct {
728	state          protoimpl.MessageState `protogen:"open.v1"`
729	WorkflowPath   string                 `protobuf:"bytes,1,opt,name=workflow_path,json=workflowPath,proto3" json:"workflow_path,omitempty"`
730	WorkflowYaml   string                 `protobuf:"bytes,2,opt,name=workflow_yaml,json=workflowYaml,proto3" json:"workflow_yaml,omitempty"`
731	JobKey         string                 `protobuf:"bytes,3,opt,name=job_key,json=jobKey,proto3" json:"job_key,omitempty"`
732	Matrix         string                 `protobuf:"bytes,4,opt,name=matrix,proto3" json:"matrix,omitempty"`     // JSON object
733	Contexts       string                 `protobuf:"bytes,5,opt,name=contexts,proto3" json:"contexts,omitempty"` // JSON object
734	Repo           string                 `protobuf:"bytes,6,opt,name=repo,proto3" json:"repo,omitempty"`         // repository name
735	TimeoutMinutes int32                  `protobuf:"varint,7,opt,name=timeout_minutes,json=timeoutMinutes,proto3" json:"timeout_minutes,omitempty"`
736	RunnerName     string                 `protobuf:"bytes,8,opt,name=runner_name,json=runnerName,proto3" json:"runner_name,omitempty"`
737	RunnerVersion  string                 `protobuf:"bytes,9,opt,name=runner_version,json=runnerVersion,proto3" json:"runner_version,omitempty"`
738	// runner_environment is the runner.environment value ("github-hosted" or "self-hosted").
739	RunnerEnvironment string `protobuf:"bytes,10,opt,name=runner_environment,json=runnerEnvironment,proto3" json:"runner_environment,omitempty"`
740	Debug             bool   `protobuf:"varint,11,opt,name=debug,proto3" json:"debug,omitempty"` // ACTIONS_STEP_DEBUG
741	// deadline_ms is what is left of the job timeout when the host sends this
742	// Run, in milliseconds: the timeout counts from the moment the host received
743	// the job (runner.proto: Job.timeout_minutes), not from the start of the
744	// executor, and booting the sandbox takes time. 0 means "use
745	// timeout_minutes from now".
746	DeadlineMs int64 `protobuf:"varint,12,opt,name=deadline_ms,json=deadlineMs,proto3" json:"deadline_ms,omitempty"`
747	// send_annotations and send_summaries say that the server keeps annotations
748	// (feature ci.annotations) and step summaries (ci.summaries). The executor
749	// sends StepAnnotations and StepSummary frames only when they are set.
750	SendAnnotations bool `protobuf:"varint,13,opt,name=send_annotations,json=sendAnnotations,proto3" json:"send_annotations,omitempty"`
751	SendSummaries   bool `protobuf:"varint,14,opt,name=send_summaries,json=sendSummaries,proto3" json:"send_summaries,omitempty"`
752	// cache_port and cache_token, when set, are the runner's cache service for
753	// this job. The service is not on the network: the executor starts a relay
754	// on the sandbox's own loopback, 127.0.0.1:<cache_port>, that carries each
755	// connection over the host channel (a vsock port, or a Unix socket next to
756	// the executor's) to the service. The executor gives
757	// ACTIONS_CACHE_URL=http://127.0.0.1:<port>/ and the token as
758	// ACTIONS_RUNTIME_TOKEN to node and docker actions only, as the official
759	// runner does, and masks the token. The token is not an ermite credential: it
760	// is a JWT (HS256) that only the runner's runtime services accept, scoped to
761	// this job's repository and refs (and its run, see results).
762	CachePort  uint32 `protobuf:"varint,15,opt,name=cache_port,json=cachePort,proto3" json:"cache_port,omitempty"`
763	CacheToken string `protobuf:"bytes,16,opt,name=cache_token,json=cacheToken,proto3" json:"cache_token,omitempty"`
764	// secrets_withheld is set by the host when the server sends Job.trusted and
765	// the job is not trusted (feature ci.secrets): "Set up job" then says that
766	// secrets are not available. Never set for servers without the feature, for
767	// which an absent Job.trusted only means "not sent".
768	SecretsWithheld bool `protobuf:"varint,19,opt,name=secrets_withheld,json=secretsWithheld,proto3" json:"secrets_withheld,omitempty"`
769	// id_token_url and id_token_request_token are Job.id_token_url and
770	// Job.id_token_request_token: the OIDC token endpoint of the server, its
771	// origin rewritten as for github.server_url, and the bearer for it. The
772	// executor gives them as ACTIONS_ID_TOKEN_REQUEST_URL and
773	// ACTIONS_ID_TOKEN_REQUEST_TOKEN to run steps, node actions and docker
774	// actions (ScriptHandler.cs:315-319, NodeScriptActionHandler.cs:66-70,
775	// ContainerActionHandler.cs:232-236), and masks the token before anything
776	// runs. Both are set or neither. (21 and 22 are taken by the artifacts
777	// branch.)
778	IdTokenUrl          string `protobuf:"bytes,23,opt,name=id_token_url,json=idTokenUrl,proto3" json:"id_token_url,omitempty"`
779	IdTokenRequestToken string `protobuf:"bytes,24,opt,name=id_token_request_token,json=idTokenRequestToken,proto3" json:"id_token_request_token,omitempty"`
780	// token_permissions are the effective permissions of the job's GITHUB_TOKEN
781	// as the server sent them (Job.permissions, feature ci.secrets): "Set up job"
782	// prints them instead of working them out from the workflow. Unset when the
783	// server sent none (an older server): the executor then reads them from the
784	// workflow.
785	TokenPermissions *TokenPermissions `protobuf:"bytes,20,opt,name=token_permissions,json=tokenPermissions,proto3" json:"token_permissions,omitempty"`
786	// cache_mode is ACTIONS_CACHE_MODE of the node and docker actions: "write"
787	// when the job's cache scope has a write ref, "read" when it has none. Unset
788	// without a cache service, and unset when the channel serves the results
789	// service only (results set, no cache scope): no ACTIONS_CACHE_URL then.
790	CacheMode string `protobuf:"bytes,21,opt,name=cache_mode,json=cacheMode,proto3" json:"cache_mode,omitempty"`
791	// results says that the service behind cache_port also serves artifacts
792	// (Twirp github.actions.results.api.v1.ArtifactService and its blobs) and
793	// that cache_token carries the job's Actions.Results scope. The executor
794	// then gives node and docker actions ACTIONS_RESULTS_URL (the same origin as
795	// ACTIONS_CACHE_URL) and sets GITHUB_SERVER_URL to a *.ghe.localhost host in
796	// the process of the node steps of the artifact actions only (README,
797	// "Artifacts"). Set only when the server has the feature ci.artifacts.
798	Results       bool `protobuf:"varint,22,opt,name=results,proto3" json:"results,omitempty"`
799	unknownFields protoimpl.UnknownFields
800	sizeCache     protoimpl.SizeCache
801}
802
803func (x *JobSpec) Reset() {
804	*x = JobSpec{}
805	mi := &file_exec_proto_msgTypes[4]
806	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
807	ms.StoreMessageInfo(mi)
808}
809
810func (x *JobSpec) String() string {
811	return protoimpl.X.MessageStringOf(x)
812}
813
814func (*JobSpec) ProtoMessage() {}
815
816func (x *JobSpec) ProtoReflect() protoreflect.Message {
817	mi := &file_exec_proto_msgTypes[4]
818	if x != nil {
819		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
820		if ms.LoadMessageInfo() == nil {
821			ms.StoreMessageInfo(mi)
822		}
823		return ms
824	}
825	return mi.MessageOf(x)
826}
827
828// Deprecated: Use JobSpec.ProtoReflect.Descriptor instead.
829func (*JobSpec) Descriptor() ([]byte, []int) {
830	return file_exec_proto_rawDescGZIP(), []int{4}
831}
832
833func (x *JobSpec) GetWorkflowPath() string {
834	if x != nil {
835		return x.WorkflowPath
836	}
837	return ""
838}
839
840func (x *JobSpec) GetWorkflowYaml() string {
841	if x != nil {
842		return x.WorkflowYaml
843	}
844	return ""
845}
846
847func (x *JobSpec) GetJobKey() string {
848	if x != nil {
849		return x.JobKey
850	}
851	return ""
852}
853
854func (x *JobSpec) GetMatrix() string {
855	if x != nil {
856		return x.Matrix
857	}
858	return ""
859}
860
861func (x *JobSpec) GetContexts() string {
862	if x != nil {
863		return x.Contexts
864	}
865	return ""
866}
867
868func (x *JobSpec) GetRepo() string {
869	if x != nil {
870		return x.Repo
871	}
872	return ""
873}
874
875func (x *JobSpec) GetTimeoutMinutes() int32 {
876	if x != nil {
877		return x.TimeoutMinutes
878	}
879	return 0
880}
881
882func (x *JobSpec) GetRunnerName() string {
883	if x != nil {
884		return x.RunnerName
885	}
886	return ""
887}
888
889func (x *JobSpec) GetRunnerVersion() string {
890	if x != nil {
891		return x.RunnerVersion
892	}
893	return ""
894}
895
896func (x *JobSpec) GetRunnerEnvironment() string {
897	if x != nil {
898		return x.RunnerEnvironment
899	}
900	return ""
901}
902
903func (x *JobSpec) GetDebug() bool {
904	if x != nil {
905		return x.Debug
906	}
907	return false
908}
909
910func (x *JobSpec) GetDeadlineMs() int64 {
911	if x != nil {
912		return x.DeadlineMs
913	}
914	return 0
915}
916
917func (x *JobSpec) GetSendAnnotations() bool {
918	if x != nil {
919		return x.SendAnnotations
920	}
921	return false
922}
923
924func (x *JobSpec) GetSendSummaries() bool {
925	if x != nil {
926		return x.SendSummaries
927	}
928	return false
929}
930
931func (x *JobSpec) GetCachePort() uint32 {
932	if x != nil {
933		return x.CachePort
934	}
935	return 0
936}
937
938func (x *JobSpec) GetCacheToken() string {
939	if x != nil {
940		return x.CacheToken
941	}
942	return ""
943}
944
945func (x *JobSpec) GetSecretsWithheld() bool {
946	if x != nil {
947		return x.SecretsWithheld
948	}
949	return false
950}
951
952func (x *JobSpec) GetIdTokenUrl() string {
953	if x != nil {
954		return x.IdTokenUrl
955	}
956	return ""
957}
958
959func (x *JobSpec) GetIdTokenRequestToken() string {
960	if x != nil {
961		return x.IdTokenRequestToken
962	}
963	return ""
964}
965
966func (x *JobSpec) GetTokenPermissions() *TokenPermissions {
967	if x != nil {
968		return x.TokenPermissions
969	}
970	return nil
971}
972
973func (x *JobSpec) GetCacheMode() string {
974	if x != nil {
975		return x.CacheMode
976	}
977	return ""
978}
979
980func (x *JobSpec) GetResults() bool {
981	if x != nil {
982		return x.Results
983	}
984	return false
985}
986
987// TokenPermissions maps a permission key ("contents", "pull-requests", ...) to
988// "read", "write" or "none"; a key that is absent is none.
989type TokenPermissions struct {
990	state         protoimpl.MessageState `protogen:"open.v1"`
991	Levels        map[string]string      `protobuf:"bytes,1,rep,name=levels,proto3" json:"levels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
992	unknownFields protoimpl.UnknownFields
993	sizeCache     protoimpl.SizeCache
994}
995
996func (x *TokenPermissions) Reset() {
997	*x = TokenPermissions{}
998	mi := &file_exec_proto_msgTypes[5]
999	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1000	ms.StoreMessageInfo(mi)
1001}
1002
1003func (x *TokenPermissions) String() string {
1004	return protoimpl.X.MessageStringOf(x)
1005}
1006
1007func (*TokenPermissions) ProtoMessage() {}
1008
1009func (x *TokenPermissions) ProtoReflect() protoreflect.Message {
1010	mi := &file_exec_proto_msgTypes[5]
1011	if x != nil {
1012		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1013		if ms.LoadMessageInfo() == nil {
1014			ms.StoreMessageInfo(mi)
1015		}
1016		return ms
1017	}
1018	return mi.MessageOf(x)
1019}
1020
1021// Deprecated: Use TokenPermissions.ProtoReflect.Descriptor instead.
1022func (*TokenPermissions) Descriptor() ([]byte, []int) {
1023	return file_exec_proto_rawDescGZIP(), []int{5}
1024}
1025
1026func (x *TokenPermissions) GetLevels() map[string]string {
1027	if x != nil {
1028		return x.Levels
1029	}
1030	return nil
1031}
1032
1033type Output struct {
1034	state         protoimpl.MessageState `protogen:"open.v1"`
1035	Stream        StreamKind             `protobuf:"varint,1,opt,name=stream,proto3,enum=ermite.runner.exec.v1.StreamKind" json:"stream,omitempty"`
1036	Data          []byte                 `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
1037	UnixNano      int64                  `protobuf:"varint,3,opt,name=unix_nano,json=unixNano,proto3" json:"unix_nano,omitempty"`
1038	unknownFields protoimpl.UnknownFields
1039	sizeCache     protoimpl.SizeCache
1040}
1041
1042func (x *Output) Reset() {
1043	*x = Output{}
1044	mi := &file_exec_proto_msgTypes[6]
1045	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1046	ms.StoreMessageInfo(mi)
1047}
1048
1049func (x *Output) String() string {
1050	return protoimpl.X.MessageStringOf(x)
1051}
1052
1053func (*Output) ProtoMessage() {}
1054
1055func (x *Output) ProtoReflect() protoreflect.Message {
1056	mi := &file_exec_proto_msgTypes[6]
1057	if x != nil {
1058		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1059		if ms.LoadMessageInfo() == nil {
1060			ms.StoreMessageInfo(mi)
1061		}
1062		return ms
1063	}
1064	return mi.MessageOf(x)
1065}
1066
1067// Deprecated: Use Output.ProtoReflect.Descriptor instead.
1068func (*Output) Descriptor() ([]byte, []int) {
1069	return file_exec_proto_rawDescGZIP(), []int{6}
1070}
1071
1072func (x *Output) GetStream() StreamKind {
1073	if x != nil {
1074		return x.Stream
1075	}
1076	return StreamKind_STREAM_KIND_UNSPECIFIED
1077}
1078
1079func (x *Output) GetData() []byte {
1080	if x != nil {
1081		return x.Data
1082	}
1083	return nil
1084}
1085
1086func (x *Output) GetUnixNano() int64 {
1087	if x != nil {
1088		return x.UnixNano
1089	}
1090	return 0
1091}
1092
1093type Exit struct {
1094	state         protoimpl.MessageState `protogen:"open.v1"`
1095	Code          int32                  `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`
1096	Error         string                 `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"` // set when the executor failed to run the script at all
1097	unknownFields protoimpl.UnknownFields
1098	sizeCache     protoimpl.SizeCache
1099}
1100
1101func (x *Exit) Reset() {
1102	*x = Exit{}
1103	mi := &file_exec_proto_msgTypes[7]
1104	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1105	ms.StoreMessageInfo(mi)
1106}
1107
1108func (x *Exit) String() string {
1109	return protoimpl.X.MessageStringOf(x)
1110}
1111
1112func (*Exit) ProtoMessage() {}
1113
1114func (x *Exit) ProtoReflect() protoreflect.Message {
1115	mi := &file_exec_proto_msgTypes[7]
1116	if x != nil {
1117		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1118		if ms.LoadMessageInfo() == nil {
1119			ms.StoreMessageInfo(mi)
1120		}
1121		return ms
1122	}
1123	return mi.MessageOf(x)
1124}
1125
1126// Deprecated: Use Exit.ProtoReflect.Descriptor instead.
1127func (*Exit) Descriptor() ([]byte, []int) {
1128	return file_exec_proto_rawDescGZIP(), []int{7}
1129}
1130
1131func (x *Exit) GetCode() int32 {
1132	if x != nil {
1133		return x.Code
1134	}
1135	return 0
1136}
1137
1138func (x *Exit) GetError() string {
1139	if x != nil {
1140		return x.Error
1141	}
1142	return ""
1143}
1144
1145// Cancel asks the executor to stop the running script. The executor escalates
1146// like the official runner: SIGINT to the script's process group at once,
1147// SIGTERM 7.5 s later, SIGKILL 2.5 s after that.
1148type Cancel struct {
1149	state protoimpl.MessageState `protogen:"open.v1"`
1150	// reason is for the job log and diagnostics ("cancelled by the user",
1151	// "job timeout", ...); it never changes the behaviour.
1152	Reason string `protobuf:"bytes,1,opt,name=reason,proto3" json:"reason,omitempty"`
1153	// kind tells the job executor how the job ends: cancelled, timed out, or
1154	// cancelled because the runner shuts down. The stub executor ignores it.
1155	Kind          CancelKind `protobuf:"varint,2,opt,name=kind,proto3,enum=ermite.runner.exec.v1.CancelKind" json:"kind,omitempty"`
1156	unknownFields protoimpl.UnknownFields
1157	sizeCache     protoimpl.SizeCache
1158}
1159
1160func (x *Cancel) Reset() {
1161	*x = Cancel{}
1162	mi := &file_exec_proto_msgTypes[8]
1163	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1164	ms.StoreMessageInfo(mi)
1165}
1166
1167func (x *Cancel) String() string {
1168	return protoimpl.X.MessageStringOf(x)
1169}
1170
1171func (*Cancel) ProtoMessage() {}
1172
1173func (x *Cancel) ProtoReflect() protoreflect.Message {
1174	mi := &file_exec_proto_msgTypes[8]
1175	if x != nil {
1176		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1177		if ms.LoadMessageInfo() == nil {
1178			ms.StoreMessageInfo(mi)
1179		}
1180		return ms
1181	}
1182	return mi.MessageOf(x)
1183}
1184
1185// Deprecated: Use Cancel.ProtoReflect.Descriptor instead.
1186func (*Cancel) Descriptor() ([]byte, []int) {
1187	return file_exec_proto_rawDescGZIP(), []int{8}
1188}
1189
1190func (x *Cancel) GetReason() string {
1191	if x != nil {
1192		return x.Reason
1193	}
1194	return ""
1195}
1196
1197func (x *Cancel) GetKind() CancelKind {
1198	if x != nil {
1199		return x.Kind
1200	}
1201	return CancelKind_CANCEL_KIND_UNSPECIFIED
1202}
1203
1204// Steps are numbered like GitHub's log: "Set up job" is 1, the steps of the
1205// workflow follow, "Complete job" is last.
1206type StepStarted struct {
1207	state         protoimpl.MessageState `protogen:"open.v1"`
1208	Number        int32                  `protobuf:"varint,1,opt,name=number,proto3" json:"number,omitempty"`
1209	Name          string                 `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
1210	UnixNano      int64                  `protobuf:"varint,3,opt,name=unix_nano,json=unixNano,proto3" json:"unix_nano,omitempty"`
1211	unknownFields protoimpl.UnknownFields
1212	sizeCache     protoimpl.SizeCache
1213}
1214
1215func (x *StepStarted) Reset() {
1216	*x = StepStarted{}
1217	mi := &file_exec_proto_msgTypes[9]
1218	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1219	ms.StoreMessageInfo(mi)
1220}
1221
1222func (x *StepStarted) String() string {
1223	return protoimpl.X.MessageStringOf(x)
1224}
1225
1226func (*StepStarted) ProtoMessage() {}
1227
1228func (x *StepStarted) ProtoReflect() protoreflect.Message {
1229	mi := &file_exec_proto_msgTypes[9]
1230	if x != nil {
1231		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1232		if ms.LoadMessageInfo() == nil {
1233			ms.StoreMessageInfo(mi)
1234		}
1235		return ms
1236	}
1237	return mi.MessageOf(x)
1238}
1239
1240// Deprecated: Use StepStarted.ProtoReflect.Descriptor instead.
1241func (*StepStarted) Descriptor() ([]byte, []int) {
1242	return file_exec_proto_rawDescGZIP(), []int{9}
1243}
1244
1245func (x *StepStarted) GetNumber() int32 {
1246	if x != nil {
1247		return x.Number
1248	}
1249	return 0
1250}
1251
1252func (x *StepStarted) GetName() string {
1253	if x != nil {
1254		return x.Name
1255	}
1256	return ""
1257}
1258
1259func (x *StepStarted) GetUnixNano() int64 {
1260	if x != nil {
1261		return x.UnixNano
1262	}
1263	return 0
1264}
1265
1266type StepCompleted struct {
1267	state      protoimpl.MessageState `protogen:"open.v1"`
1268	Number     int32                  `protobuf:"varint,1,opt,name=number,proto3" json:"number,omitempty"`
1269	Name       string                 `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
1270	Conclusion StepConclusion         `protobuf:"varint,3,opt,name=conclusion,proto3,enum=ermite.runner.exec.v1.StepConclusion" json:"conclusion,omitempty"`
1271	UnixNano   int64                  `protobuf:"varint,4,opt,name=unix_nano,json=unixNano,proto3" json:"unix_nano,omitempty"`
1272	// outcome is steps.<id>.outcome: the result before continue-on-error. It
1273	// differs from conclusion only for a failed step with continue-on-error.
1274	// UNSPECIFIED means the same as conclusion.
1275	Outcome       StepConclusion `protobuf:"varint,5,opt,name=outcome,proto3,enum=ermite.runner.exec.v1.StepConclusion" json:"outcome,omitempty"`
1276	unknownFields protoimpl.UnknownFields
1277	sizeCache     protoimpl.SizeCache
1278}
1279
1280func (x *StepCompleted) Reset() {
1281	*x = StepCompleted{}
1282	mi := &file_exec_proto_msgTypes[10]
1283	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1284	ms.StoreMessageInfo(mi)
1285}
1286
1287func (x *StepCompleted) String() string {
1288	return protoimpl.X.MessageStringOf(x)
1289}
1290
1291func (*StepCompleted) ProtoMessage() {}
1292
1293func (x *StepCompleted) ProtoReflect() protoreflect.Message {
1294	mi := &file_exec_proto_msgTypes[10]
1295	if x != nil {
1296		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1297		if ms.LoadMessageInfo() == nil {
1298			ms.StoreMessageInfo(mi)
1299		}
1300		return ms
1301	}
1302	return mi.MessageOf(x)
1303}
1304
1305// Deprecated: Use StepCompleted.ProtoReflect.Descriptor instead.
1306func (*StepCompleted) Descriptor() ([]byte, []int) {
1307	return file_exec_proto_rawDescGZIP(), []int{10}
1308}
1309
1310func (x *StepCompleted) GetNumber() int32 {
1311	if x != nil {
1312		return x.Number
1313	}
1314	return 0
1315}
1316
1317func (x *StepCompleted) GetName() string {
1318	if x != nil {
1319		return x.Name
1320	}
1321	return ""
1322}
1323
1324func (x *StepCompleted) GetConclusion() StepConclusion {
1325	if x != nil {
1326		return x.Conclusion
1327	}
1328	return StepConclusion_STEP_CONCLUSION_UNSPECIFIED
1329}
1330
1331func (x *StepCompleted) GetUnixNano() int64 {
1332	if x != nil {
1333		return x.UnixNano
1334	}
1335	return 0
1336}
1337
1338func (x *StepCompleted) GetOutcome() StepConclusion {
1339	if x != nil {
1340		return x.Outcome
1341	}
1342	return StepConclusion_STEP_CONCLUSION_UNSPECIFIED
1343}
1344
1345// Annotation is one ::notice, ::warning or ::error (or a problem matcher
1346// match), masked. The host validates every field again before it sends them.
1347type Annotation struct {
1348	state         protoimpl.MessageState `protogen:"open.v1"`
1349	Level         AnnotationLevel        `protobuf:"varint,1,opt,name=level,proto3,enum=ermite.runner.exec.v1.AnnotationLevel" json:"level,omitempty"`
1350	Title         string                 `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"`
1351	Message       string                 `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"`
1352	File          string                 `protobuf:"bytes,4,opt,name=file,proto3" json:"file,omitempty"` // relative to the repository when the file is in it
1353	StartLine     int32                  `protobuf:"varint,5,opt,name=start_line,json=startLine,proto3" json:"start_line,omitempty"`
1354	EndLine       int32                  `protobuf:"varint,6,opt,name=end_line,json=endLine,proto3" json:"end_line,omitempty"`
1355	StartColumn   int32                  `protobuf:"varint,7,opt,name=start_column,json=startColumn,proto3" json:"start_column,omitempty"`
1356	EndColumn     int32                  `protobuf:"varint,8,opt,name=end_column,json=endColumn,proto3" json:"end_column,omitempty"`
1357	unknownFields protoimpl.UnknownFields
1358	sizeCache     protoimpl.SizeCache
1359}
1360
1361func (x *Annotation) Reset() {
1362	*x = Annotation{}
1363	mi := &file_exec_proto_msgTypes[11]
1364	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1365	ms.StoreMessageInfo(mi)
1366}
1367
1368func (x *Annotation) String() string {
1369	return protoimpl.X.MessageStringOf(x)
1370}
1371
1372func (*Annotation) ProtoMessage() {}
1373
1374func (x *Annotation) ProtoReflect() protoreflect.Message {
1375	mi := &file_exec_proto_msgTypes[11]
1376	if x != nil {
1377		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1378		if ms.LoadMessageInfo() == nil {
1379			ms.StoreMessageInfo(mi)
1380		}
1381		return ms
1382	}
1383	return mi.MessageOf(x)
1384}
1385
1386// Deprecated: Use Annotation.ProtoReflect.Descriptor instead.
1387func (*Annotation) Descriptor() ([]byte, []int) {
1388	return file_exec_proto_rawDescGZIP(), []int{11}
1389}
1390
1391func (x *Annotation) GetLevel() AnnotationLevel {
1392	if x != nil {
1393		return x.Level
1394	}
1395	return AnnotationLevel_ANNOTATION_LEVEL_UNSPECIFIED
1396}
1397
1398func (x *Annotation) GetTitle() string {
1399	if x != nil {
1400		return x.Title
1401	}
1402	return ""
1403}
1404
1405func (x *Annotation) GetMessage() string {
1406	if x != nil {
1407		return x.Message
1408	}
1409	return ""
1410}
1411
1412func (x *Annotation) GetFile() string {
1413	if x != nil {
1414		return x.File
1415	}
1416	return ""
1417}
1418
1419func (x *Annotation) GetStartLine() int32 {
1420	if x != nil {
1421		return x.StartLine
1422	}
1423	return 0
1424}
1425
1426func (x *Annotation) GetEndLine() int32 {
1427	if x != nil {
1428		return x.EndLine
1429	}
1430	return 0
1431}
1432
1433func (x *Annotation) GetStartColumn() int32 {
1434	if x != nil {
1435		return x.StartColumn
1436	}
1437	return 0
1438}
1439
1440func (x *Annotation) GetEndColumn() int32 {
1441	if x != nil {
1442		return x.EndColumn
1443	}
1444	return 0
1445}
1446
1447// StepAnnotations is the complete list of the annotations of a step (the ones
1448// the runner keeps: at most 10 per level), replacing any earlier list of that
1449// step. Annotations of the steps inside a composite action are those of the
1450// step of the workflow that uses it.
1451type StepAnnotations struct {
1452	state         protoimpl.MessageState `protogen:"open.v1"`
1453	Step          int32                  `protobuf:"varint,1,opt,name=step,proto3" json:"step,omitempty"`
1454	Annotations   []*Annotation          `protobuf:"bytes,2,rep,name=annotations,proto3" json:"annotations,omitempty"`
1455	unknownFields protoimpl.UnknownFields
1456	sizeCache     protoimpl.SizeCache
1457}
1458
1459func (x *StepAnnotations) Reset() {
1460	*x = StepAnnotations{}
1461	mi := &file_exec_proto_msgTypes[12]
1462	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1463	ms.StoreMessageInfo(mi)
1464}
1465
1466func (x *StepAnnotations) String() string {
1467	return protoimpl.X.MessageStringOf(x)
1468}
1469
1470func (*StepAnnotations) ProtoMessage() {}
1471
1472func (x *StepAnnotations) ProtoReflect() protoreflect.Message {
1473	mi := &file_exec_proto_msgTypes[12]
1474	if x != nil {
1475		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1476		if ms.LoadMessageInfo() == nil {
1477			ms.StoreMessageInfo(mi)
1478		}
1479		return ms
1480	}
1481	return mi.MessageOf(x)
1482}
1483
1484// Deprecated: Use StepAnnotations.ProtoReflect.Descriptor instead.
1485func (*StepAnnotations) Descriptor() ([]byte, []int) {
1486	return file_exec_proto_rawDescGZIP(), []int{12}
1487}
1488
1489func (x *StepAnnotations) GetStep() int32 {
1490	if x != nil {
1491		return x.Step
1492	}
1493	return 0
1494}
1495
1496func (x *StepAnnotations) GetAnnotations() []*Annotation {
1497	if x != nil {
1498		return x.Annotations
1499	}
1500	return nil
1501}
1502
1503// StepSummary is the masked content of GITHUB_STEP_SUMMARY after a step, at
1504// most 1 MiB.
1505type StepSummary struct {
1506	state         protoimpl.MessageState `protogen:"open.v1"`
1507	Step          int32                  `protobuf:"varint,1,opt,name=step,proto3" json:"step,omitempty"`
1508	Markdown      string                 `protobuf:"bytes,2,opt,name=markdown,proto3" json:"markdown,omitempty"`
1509	unknownFields protoimpl.UnknownFields
1510	sizeCache     protoimpl.SizeCache
1511}
1512
1513func (x *StepSummary) Reset() {
1514	*x = StepSummary{}
1515	mi := &file_exec_proto_msgTypes[13]
1516	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1517	ms.StoreMessageInfo(mi)
1518}
1519
1520func (x *StepSummary) String() string {
1521	return protoimpl.X.MessageStringOf(x)
1522}
1523
1524func (*StepSummary) ProtoMessage() {}
1525
1526func (x *StepSummary) ProtoReflect() protoreflect.Message {
1527	mi := &file_exec_proto_msgTypes[13]
1528	if x != nil {
1529		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1530		if ms.LoadMessageInfo() == nil {
1531			ms.StoreMessageInfo(mi)
1532		}
1533		return ms
1534	}
1535	return mi.MessageOf(x)
1536}
1537
1538// Deprecated: Use StepSummary.ProtoReflect.Descriptor instead.
1539func (*StepSummary) Descriptor() ([]byte, []int) {
1540	return file_exec_proto_rawDescGZIP(), []int{13}
1541}
1542
1543func (x *StepSummary) GetStep() int32 {
1544	if x != nil {
1545		return x.Step
1546	}
1547	return 0
1548}
1549
1550func (x *StepSummary) GetMarkdown() string {
1551	if x != nil {
1552		return x.Markdown
1553	}
1554	return ""
1555}
1556
1557// Log is one line of the job log, without terminator, valid UTF-8. A line of
1558// more than 64 KiB is cut by the executor into pieces at character boundaries;
1559// every piece but the first has continued set (the AppendLog rule).
1560type Log struct {
1561	state         protoimpl.MessageState `protogen:"open.v1"`
1562	Step          int32                  `protobuf:"varint,1,opt,name=step,proto3" json:"step,omitempty"`
1563	UnixNano      int64                  `protobuf:"varint,2,opt,name=unix_nano,json=unixNano,proto3" json:"unix_nano,omitempty"`
1564	Text          string                 `protobuf:"bytes,3,opt,name=text,proto3" json:"text,omitempty"`
1565	Continued     bool                   `protobuf:"varint,4,opt,name=continued,proto3" json:"continued,omitempty"`
1566	unknownFields protoimpl.UnknownFields
1567	sizeCache     protoimpl.SizeCache
1568}
1569
1570func (x *Log) Reset() {
1571	*x = Log{}
1572	mi := &file_exec_proto_msgTypes[14]
1573	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1574	ms.StoreMessageInfo(mi)
1575}
1576
1577func (x *Log) String() string {
1578	return protoimpl.X.MessageStringOf(x)
1579}
1580
1581func (*Log) ProtoMessage() {}
1582
1583func (x *Log) ProtoReflect() protoreflect.Message {
1584	mi := &file_exec_proto_msgTypes[14]
1585	if x != nil {
1586		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1587		if ms.LoadMessageInfo() == nil {
1588			ms.StoreMessageInfo(mi)
1589		}
1590		return ms
1591	}
1592	return mi.MessageOf(x)
1593}
1594
1595// Deprecated: Use Log.ProtoReflect.Descriptor instead.
1596func (*Log) Descriptor() ([]byte, []int) {
1597	return file_exec_proto_rawDescGZIP(), []int{14}
1598}
1599
1600func (x *Log) GetStep() int32 {
1601	if x != nil {
1602		return x.Step
1603	}
1604	return 0
1605}
1606
1607func (x *Log) GetUnixNano() int64 {
1608	if x != nil {
1609		return x.UnixNano
1610	}
1611	return 0
1612}
1613
1614func (x *Log) GetText() string {
1615	if x != nil {
1616		return x.Text
1617	}
1618	return ""
1619}
1620
1621func (x *Log) GetContinued() bool {
1622	if x != nil {
1623		return x.Continued
1624	}
1625	return false
1626}
1627
1628// JobResult is the outcome of the job; Exit follows.
1629type JobResult struct {
1630	state          protoimpl.MessageState `protogen:"open.v1"`
1631	Conclusion     StepConclusion         `protobuf:"varint,1,opt,name=conclusion,proto3,enum=ermite.runner.exec.v1.StepConclusion" json:"conclusion,omitempty"`
1632	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"`
1633	Error          string                 `protobuf:"bytes,3,opt,name=error,proto3" json:"error,omitempty"`
1634	RunnerShutdown bool                   `protobuf:"varint,4,opt,name=runner_shutdown,json=runnerShutdown,proto3" json:"runner_shutdown,omitempty"`
1635	unknownFields  protoimpl.UnknownFields
1636	sizeCache      protoimpl.SizeCache
1637}
1638
1639func (x *JobResult) Reset() {
1640	*x = JobResult{}
1641	mi := &file_exec_proto_msgTypes[15]
1642	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1643	ms.StoreMessageInfo(mi)
1644}
1645
1646func (x *JobResult) String() string {
1647	return protoimpl.X.MessageStringOf(x)
1648}
1649
1650func (*JobResult) ProtoMessage() {}
1651
1652func (x *JobResult) ProtoReflect() protoreflect.Message {
1653	mi := &file_exec_proto_msgTypes[15]
1654	if x != nil {
1655		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1656		if ms.LoadMessageInfo() == nil {
1657			ms.StoreMessageInfo(mi)
1658		}
1659		return ms
1660	}
1661	return mi.MessageOf(x)
1662}
1663
1664// Deprecated: Use JobResult.ProtoReflect.Descriptor instead.
1665func (*JobResult) Descriptor() ([]byte, []int) {
1666	return file_exec_proto_rawDescGZIP(), []int{15}
1667}
1668
1669func (x *JobResult) GetConclusion() StepConclusion {
1670	if x != nil {
1671		return x.Conclusion
1672	}
1673	return StepConclusion_STEP_CONCLUSION_UNSPECIFIED
1674}
1675
1676func (x *JobResult) GetOutputs() map[string]string {
1677	if x != nil {
1678		return x.Outputs
1679	}
1680	return nil
1681}
1682
1683func (x *JobResult) GetError() string {
1684	if x != nil {
1685		return x.Error
1686	}
1687	return ""
1688}
1689
1690func (x *JobResult) GetRunnerShutdown() bool {
1691	if x != nil {
1692		return x.RunnerShutdown
1693	}
1694	return false
1695}
1696
1697// ResolveRequest asks the host to resolve actions with RunnerService.
1698// ResolveActions: the job token stays in the host, so the executor cannot call
1699// it. The executor sends one per level of composite actions (the runner's own
1700// "one more round per level") and waits for the ResolveResponse with the same id.
1701type ResolveRequest struct {
1702	state         protoimpl.MessageState `protogen:"open.v1"`
1703	Id            int64                  `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
1704	Uses          []string               `protobuf:"bytes,2,rep,name=uses,proto3" json:"uses,omitempty"` // "owner/repo[/path]@ref", at most 100
1705	unknownFields protoimpl.UnknownFields
1706	sizeCache     protoimpl.SizeCache
1707}
1708
1709func (x *ResolveRequest) Reset() {
1710	*x = ResolveRequest{}
1711	mi := &file_exec_proto_msgTypes[16]
1712	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1713	ms.StoreMessageInfo(mi)
1714}
1715
1716func (x *ResolveRequest) String() string {
1717	return protoimpl.X.MessageStringOf(x)
1718}
1719
1720func (*ResolveRequest) ProtoMessage() {}
1721
1722func (x *ResolveRequest) ProtoReflect() protoreflect.Message {
1723	mi := &file_exec_proto_msgTypes[16]
1724	if x != nil {
1725		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1726		if ms.LoadMessageInfo() == nil {
1727			ms.StoreMessageInfo(mi)
1728		}
1729		return ms
1730	}
1731	return mi.MessageOf(x)
1732}
1733
1734// Deprecated: Use ResolveRequest.ProtoReflect.Descriptor instead.
1735func (*ResolveRequest) Descriptor() ([]byte, []int) {
1736	return file_exec_proto_rawDescGZIP(), []int{16}
1737}
1738
1739func (x *ResolveRequest) GetId() int64 {
1740	if x != nil {
1741		return x.Id
1742	}
1743	return 0
1744}
1745
1746func (x *ResolveRequest) GetUses() []string {
1747	if x != nil {
1748		return x.Uses
1749	}
1750	return nil
1751}
1752
1753// ResolveResponse answers a ResolveRequest. error is set when the call itself
1754// failed (the executor fails the job); actions has one entry per uses otherwise.
1755type ResolveResponse struct {
1756	state         protoimpl.MessageState `protogen:"open.v1"`
1757	Id            int64                  `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
1758	Error         string                 `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"`
1759	Actions       []*ResolvedAction      `protobuf:"bytes,3,rep,name=actions,proto3" json:"actions,omitempty"`
1760	unknownFields protoimpl.UnknownFields
1761	sizeCache     protoimpl.SizeCache
1762}
1763
1764func (x *ResolveResponse) Reset() {
1765	*x = ResolveResponse{}
1766	mi := &file_exec_proto_msgTypes[17]
1767	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1768	ms.StoreMessageInfo(mi)
1769}
1770
1771func (x *ResolveResponse) String() string {
1772	return protoimpl.X.MessageStringOf(x)
1773}
1774
1775func (*ResolveResponse) ProtoMessage() {}
1776
1777func (x *ResolveResponse) ProtoReflect() protoreflect.Message {
1778	mi := &file_exec_proto_msgTypes[17]
1779	if x != nil {
1780		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1781		if ms.LoadMessageInfo() == nil {
1782			ms.StoreMessageInfo(mi)
1783		}
1784		return ms
1785	}
1786	return mi.MessageOf(x)
1787}
1788
1789// Deprecated: Use ResolveResponse.ProtoReflect.Descriptor instead.
1790func (*ResolveResponse) Descriptor() ([]byte, []int) {
1791	return file_exec_proto_rawDescGZIP(), []int{17}
1792}
1793
1794func (x *ResolveResponse) GetId() int64 {
1795	if x != nil {
1796		return x.Id
1797	}
1798	return 0
1799}
1800
1801func (x *ResolveResponse) GetError() string {
1802	if x != nil {
1803		return x.Error
1804	}
1805	return ""
1806}
1807
1808func (x *ResolveResponse) GetActions() []*ResolvedAction {
1809	if x != nil {
1810		return x.Actions
1811	}
1812	return nil
1813}
1814
1815// ResolvedAction mirrors ermite.ResolvedAction (the token is a secret: the
1816// executor masks it).
1817type ResolvedAction struct {
1818	state         protoimpl.MessageState `protogen:"open.v1"`
1819	Ref           string                 `protobuf:"bytes,1,opt,name=ref,proto3" json:"ref,omitempty"`
1820	NameWithOwner string                 `protobuf:"bytes,2,opt,name=name_with_owner,json=nameWithOwner,proto3" json:"name_with_owner,omitempty"`
1821	Path          string                 `protobuf:"bytes,3,opt,name=path,proto3" json:"path,omitempty"`
1822	ResolvedSha   string                 `protobuf:"bytes,4,opt,name=resolved_sha,json=resolvedSha,proto3" json:"resolved_sha,omitempty"`
1823	TarballUrl    string                 `protobuf:"bytes,5,opt,name=tarball_url,json=tarballUrl,proto3" json:"tarball_url,omitempty"`
1824	Token         string                 `protobuf:"bytes,6,opt,name=token,proto3" json:"token,omitempty"`
1825	Source        string                 `protobuf:"bytes,7,opt,name=source,proto3" json:"source,omitempty"`
1826	Error         string                 `protobuf:"bytes,8,opt,name=error,proto3" json:"error,omitempty"`
1827	// auth_origin (scheme://host[:port], as the sandbox reaches it) is the only
1828	// origin the token may be sent to; empty means the token is never sent. The
1829	// host sets it for archives served by the ermite server, from its own
1830	// configuration, never from the URL alone.
1831	AuthOrigin    string `protobuf:"bytes,9,opt,name=auth_origin,json=authOrigin,proto3" json:"auth_origin,omitempty"`
1832	unknownFields protoimpl.UnknownFields
1833	sizeCache     protoimpl.SizeCache
1834}
1835
1836func (x *ResolvedAction) Reset() {
1837	*x = ResolvedAction{}
1838	mi := &file_exec_proto_msgTypes[18]
1839	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1840	ms.StoreMessageInfo(mi)
1841}
1842
1843func (x *ResolvedAction) String() string {
1844	return protoimpl.X.MessageStringOf(x)
1845}
1846
1847func (*ResolvedAction) ProtoMessage() {}
1848
1849func (x *ResolvedAction) ProtoReflect() protoreflect.Message {
1850	mi := &file_exec_proto_msgTypes[18]
1851	if x != nil {
1852		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1853		if ms.LoadMessageInfo() == nil {
1854			ms.StoreMessageInfo(mi)
1855		}
1856		return ms
1857	}
1858	return mi.MessageOf(x)
1859}
1860
1861// Deprecated: Use ResolvedAction.ProtoReflect.Descriptor instead.
1862func (*ResolvedAction) Descriptor() ([]byte, []int) {
1863	return file_exec_proto_rawDescGZIP(), []int{18}
1864}
1865
1866func (x *ResolvedAction) GetRef() string {
1867	if x != nil {
1868		return x.Ref
1869	}
1870	return ""
1871}
1872
1873func (x *ResolvedAction) GetNameWithOwner() string {
1874	if x != nil {
1875		return x.NameWithOwner
1876	}
1877	return ""
1878}
1879
1880func (x *ResolvedAction) GetPath() string {
1881	if x != nil {
1882		return x.Path
1883	}
1884	return ""
1885}
1886
1887func (x *ResolvedAction) GetResolvedSha() string {
1888	if x != nil {
1889		return x.ResolvedSha
1890	}
1891	return ""
1892}
1893
1894func (x *ResolvedAction) GetTarballUrl() string {
1895	if x != nil {
1896		return x.TarballUrl
1897	}
1898	return ""
1899}
1900
1901func (x *ResolvedAction) GetToken() string {
1902	if x != nil {
1903		return x.Token
1904	}
1905	return ""
1906}
1907
1908func (x *ResolvedAction) GetSource() string {
1909	if x != nil {
1910		return x.Source
1911	}
1912	return ""
1913}
1914
1915func (x *ResolvedAction) GetError() string {
1916	if x != nil {
1917		return x.Error
1918	}
1919	return ""
1920}
1921
1922func (x *ResolvedAction) GetAuthOrigin() string {
1923	if x != nil {
1924		return x.AuthOrigin
1925	}
1926	return ""
1927}
1928
1929var File_exec_proto protoreflect.FileDescriptor
1930
1931const file_exec_proto_rawDesc = "" +
1932	"\n" +
1933	"\n" +
1934	"exec.proto\x12\x15ermite.runner.exec.v1\"\xde\a\n" +
1935	"\x05Frame\x124\n" +
1936	"\x05hello\x18\x01 \x01(\v2\x1c.ermite.runner.exec.v1.HelloH\x00R\x05hello\x12.\n" +
1937	"\x03run\x18\x02 \x01(\v2\x1a.ermite.runner.exec.v1.RunH\x00R\x03run\x127\n" +
1938	"\x06output\x18\x03 \x01(\v2\x1d.ermite.runner.exec.v1.OutputH\x00R\x06output\x121\n" +
1939	"\x04exit\x18\x04 \x01(\v2\x1b.ermite.runner.exec.v1.ExitH\x00R\x04exit\x127\n" +
1940	"\x06cancel\x18\x05 \x01(\v2\x1d.ermite.runner.exec.v1.CancelH\x00R\x06cancel\x12G\n" +
1941	"\fstep_started\x18\x06 \x01(\v2\".ermite.runner.exec.v1.StepStartedH\x00R\vstepStarted\x12M\n" +
1942	"\x0estep_completed\x18\a \x01(\v2$.ermite.runner.exec.v1.StepCompletedH\x00R\rstepCompleted\x12.\n" +
1943	"\x03log\x18\b \x01(\v2\x1a.ermite.runner.exec.v1.LogH\x00R\x03log\x12A\n" +
1944	"\n" +
1945	"job_result\x18\t \x01(\v2 .ermite.runner.exec.v1.JobResultH\x00R\tjobResult\x12S\n" +
1946	"\x10step_annotations\x18\n" +
1947	" \x01(\v2&.ermite.runner.exec.v1.StepAnnotationsH\x00R\x0fstepAnnotations\x12G\n" +
1948	"\fstep_summary\x18\v \x01(\v2\".ermite.runner.exec.v1.StepSummaryH\x00R\vstepSummary\x12P\n" +
1949	"\x0fresolve_request\x18\f \x01(\v2%.ermite.runner.exec.v1.ResolveRequestH\x00R\x0eresolveRequest\x12S\n" +
1950	"\x10resolve_response\x18\r \x01(\v2&.ermite.runner.exec.v1.ResolveResponseH\x00R\x0fresolveResponse\x12;\n" +
1951	"\x06secret\x18\x0e \x01(\v2!.ermite.runner.exec.v1.NamedValueH\x00R\x06secret\x125\n" +
1952	"\x03var\x18\x0f \x01(\v2!.ermite.runner.exec.v1.NamedValueH\x00R\x03varB\x06\n" +
1953	"\x04body\"6\n" +
1954	"\n" +
1955	"NamedValue\x12\x12\n" +
1956	"\x04name\x18\x01 \x01(\tR\x04name\x12\x14\n" +
1957	"\x05value\x18\x02 \x01(\tR\x05value\"\xd5\x01\n" +
1958	"\x05Hello\x12\x18\n" +
1959	"\aversion\x18\x01 \x01(\tR\aversion\x12\x18\n" +
1960	"\asandbox\x18\x02 \x01(\tR\asandbox\x12\x1a\n" +
1961	"\bhostname\x18\x03 \x01(\tR\bhostname\x12A\n" +
1962	"\aboot_ms\x18\x04 \x03(\v2(.ermite.runner.exec.v1.Hello.BootMsEntryR\x06bootMs\x1a9\n" +
1963	"\vBootMsEntry\x12\x10\n" +
1964	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
1965	"\x05value\x18\x02 \x01(\x03R\x05value:\x028\x01\"\xbe\x01\n" +
1966	"\x03Run\x12\x16\n" +
1967	"\x06script\x18\x01 \x01(\tR\x06script\x125\n" +
1968	"\x03env\x18\x02 \x03(\v2#.ermite.runner.exec.v1.Run.EnvEntryR\x03env\x120\n" +
1969	"\x03job\x18\x03 \x01(\v2\x1e.ermite.runner.exec.v1.JobSpecR\x03job\x1a6\n" +
1970	"\bEnvEntry\x12\x10\n" +
1971	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
1972	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xc9\x06\n" +
1973	"\aJobSpec\x12#\n" +
1974	"\rworkflow_path\x18\x01 \x01(\tR\fworkflowPath\x12#\n" +
1975	"\rworkflow_yaml\x18\x02 \x01(\tR\fworkflowYaml\x12\x17\n" +
1976	"\ajob_key\x18\x03 \x01(\tR\x06jobKey\x12\x16\n" +
1977	"\x06matrix\x18\x04 \x01(\tR\x06matrix\x12\x1a\n" +
1978	"\bcontexts\x18\x05 \x01(\tR\bcontexts\x12\x12\n" +
1979	"\x04repo\x18\x06 \x01(\tR\x04repo\x12'\n" +
1980	"\x0ftimeout_minutes\x18\a \x01(\x05R\x0etimeoutMinutes\x12\x1f\n" +
1981	"\vrunner_name\x18\b \x01(\tR\n" +
1982	"runnerName\x12%\n" +
1983	"\x0erunner_version\x18\t \x01(\tR\rrunnerVersion\x12-\n" +
1984	"\x12runner_environment\x18\n" +
1985	" \x01(\tR\x11runnerEnvironment\x12\x14\n" +
1986	"\x05debug\x18\v \x01(\bR\x05debug\x12\x1f\n" +
1987	"\vdeadline_ms\x18\f \x01(\x03R\n" +
1988	"deadlineMs\x12)\n" +
1989	"\x10send_annotations\x18\r \x01(\bR\x0fsendAnnotations\x12%\n" +
1990	"\x0esend_summaries\x18\x0e \x01(\bR\rsendSummaries\x12\x1d\n" +
1991	"\n" +
1992	"cache_port\x18\x0f \x01(\rR\tcachePort\x12\x1f\n" +
1993	"\vcache_token\x18\x10 \x01(\tR\n" +
1994	"cacheToken\x12)\n" +
1995	"\x10secrets_withheld\x18\x13 \x01(\bR\x0fsecretsWithheld\x12 \n" +
1996	"\fid_token_url\x18\x17 \x01(\tR\n" +
1997	"idTokenUrl\x123\n" +
1998	"\x16id_token_request_token\x18\x18 \x01(\tR\x13idTokenRequestToken\x12T\n" +
1999	"\x11token_permissions\x18\x14 \x01(\v2'.ermite.runner.exec.v1.TokenPermissionsR\x10tokenPermissions\x12\x1d\n" +
2000	"\n" +
2001	"cache_mode\x18\x15 \x01(\tR\tcacheMode\x12\x18\n" +
2002	"\aresults\x18\x16 \x01(\bR\aresultsJ\x04\b\x11\x10\x12J\x04\b\x12\x10\x13R\asecretsR\x04vars\"\x9a\x01\n" +
2003	"\x10TokenPermissions\x12K\n" +
2004	"\x06levels\x18\x01 \x03(\v23.ermite.runner.exec.v1.TokenPermissions.LevelsEntryR\x06levels\x1a9\n" +
2005	"\vLevelsEntry\x12\x10\n" +
2006	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
2007	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"t\n" +
2008	"\x06Output\x129\n" +
2009	"\x06stream\x18\x01 \x01(\x0e2!.ermite.runner.exec.v1.StreamKindR\x06stream\x12\x12\n" +
2010	"\x04data\x18\x02 \x01(\fR\x04data\x12\x1b\n" +
2011	"\tunix_nano\x18\x03 \x01(\x03R\bunixNano\"0\n" +
2012	"\x04Exit\x12\x12\n" +
2013	"\x04code\x18\x01 \x01(\x05R\x04code\x12\x14\n" +
2014	"\x05error\x18\x02 \x01(\tR\x05error\"W\n" +
2015	"\x06Cancel\x12\x16\n" +
2016	"\x06reason\x18\x01 \x01(\tR\x06reason\x125\n" +
2017	"\x04kind\x18\x02 \x01(\x0e2!.ermite.runner.exec.v1.CancelKindR\x04kind\"V\n" +
2018	"\vStepStarted\x12\x16\n" +
2019	"\x06number\x18\x01 \x01(\x05R\x06number\x12\x12\n" +
2020	"\x04name\x18\x02 \x01(\tR\x04name\x12\x1b\n" +
2021	"\tunix_nano\x18\x03 \x01(\x03R\bunixNano\"\xe0\x01\n" +
2022	"\rStepCompleted\x12\x16\n" +
2023	"\x06number\x18\x01 \x01(\x05R\x06number\x12\x12\n" +
2024	"\x04name\x18\x02 \x01(\tR\x04name\x12E\n" +
2025	"\n" +
2026	"conclusion\x18\x03 \x01(\x0e2%.ermite.runner.exec.v1.StepConclusionR\n" +
2027	"conclusion\x12\x1b\n" +
2028	"\tunix_nano\x18\x04 \x01(\x03R\bunixNano\x12?\n" +
2029	"\aoutcome\x18\x05 \x01(\x0e2%.ermite.runner.exec.v1.StepConclusionR\aoutcome\"\x8a\x02\n" +
2030	"\n" +
2031	"Annotation\x12<\n" +
2032	"\x05level\x18\x01 \x01(\x0e2&.ermite.runner.exec.v1.AnnotationLevelR\x05level\x12\x14\n" +
2033	"\x05title\x18\x02 \x01(\tR\x05title\x12\x18\n" +
2034	"\amessage\x18\x03 \x01(\tR\amessage\x12\x12\n" +
2035	"\x04file\x18\x04 \x01(\tR\x04file\x12\x1d\n" +
2036	"\n" +
2037	"start_line\x18\x05 \x01(\x05R\tstartLine\x12\x19\n" +
2038	"\bend_line\x18\x06 \x01(\x05R\aendLine\x12!\n" +
2039	"\fstart_column\x18\a \x01(\x05R\vstartColumn\x12\x1d\n" +
2040	"\n" +
2041	"end_column\x18\b \x01(\x05R\tendColumn\"j\n" +
2042	"\x0fStepAnnotations\x12\x12\n" +
2043	"\x04step\x18\x01 \x01(\x05R\x04step\x12C\n" +
2044	"\vannotations\x18\x02 \x03(\v2!.ermite.runner.exec.v1.AnnotationR\vannotations\"=\n" +
2045	"\vStepSummary\x12\x12\n" +
2046	"\x04step\x18\x01 \x01(\x05R\x04step\x12\x1a\n" +
2047	"\bmarkdown\x18\x02 \x01(\tR\bmarkdown\"h\n" +
2048	"\x03Log\x12\x12\n" +
2049	"\x04step\x18\x01 \x01(\x05R\x04step\x12\x1b\n" +
2050	"\tunix_nano\x18\x02 \x01(\x03R\bunixNano\x12\x12\n" +
2051	"\x04text\x18\x03 \x01(\tR\x04text\x12\x1c\n" +
2052	"\tcontinued\x18\x04 \x01(\bR\tcontinued\"\x96\x02\n" +
2053	"\tJobResult\x12E\n" +
2054	"\n" +
2055	"conclusion\x18\x01 \x01(\x0e2%.ermite.runner.exec.v1.StepConclusionR\n" +
2056	"conclusion\x12G\n" +
2057	"\aoutputs\x18\x02 \x03(\v2-.ermite.runner.exec.v1.JobResult.OutputsEntryR\aoutputs\x12\x14\n" +
2058	"\x05error\x18\x03 \x01(\tR\x05error\x12'\n" +
2059	"\x0frunner_shutdown\x18\x04 \x01(\bR\x0erunnerShutdown\x1a:\n" +
2060	"\fOutputsEntry\x12\x10\n" +
2061	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
2062	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"4\n" +
2063	"\x0eResolveRequest\x12\x0e\n" +
2064	"\x02id\x18\x01 \x01(\x03R\x02id\x12\x12\n" +
2065	"\x04uses\x18\x02 \x03(\tR\x04uses\"x\n" +
2066	"\x0fResolveResponse\x12\x0e\n" +
2067	"\x02id\x18\x01 \x01(\x03R\x02id\x12\x14\n" +
2068	"\x05error\x18\x02 \x01(\tR\x05error\x12?\n" +
2069	"\aactions\x18\x03 \x03(\v2%.ermite.runner.exec.v1.ResolvedActionR\aactions\"\x87\x02\n" +
2070	"\x0eResolvedAction\x12\x10\n" +
2071	"\x03ref\x18\x01 \x01(\tR\x03ref\x12&\n" +
2072	"\x0fname_with_owner\x18\x02 \x01(\tR\rnameWithOwner\x12\x12\n" +
2073	"\x04path\x18\x03 \x01(\tR\x04path\x12!\n" +
2074	"\fresolved_sha\x18\x04 \x01(\tR\vresolvedSha\x12\x1f\n" +
2075	"\vtarball_url\x18\x05 \x01(\tR\n" +
2076	"tarballUrl\x12\x14\n" +
2077	"\x05token\x18\x06 \x01(\tR\x05token\x12\x16\n" +
2078	"\x06source\x18\a \x01(\tR\x06source\x12\x14\n" +
2079	"\x05error\x18\b \x01(\tR\x05error\x12\x1f\n" +
2080	"\vauth_origin\x18\t \x01(\tR\n" +
2081	"authOrigin*Y\n" +
2082	"\n" +
2083	"StreamKind\x12\x1b\n" +
2084	"\x17STREAM_KIND_UNSPECIFIED\x10\x00\x12\x16\n" +
2085	"\x12STREAM_KIND_STDOUT\x10\x01\x12\x16\n" +
2086	"\x12STREAM_KIND_STDERR\x10\x02*r\n" +
2087	"\n" +
2088	"CancelKind\x12\x1b\n" +
2089	"\x17CANCEL_KIND_UNSPECIFIED\x10\x00\x12\x14\n" +
2090	"\x10CANCEL_KIND_USER\x10\x01\x12\x17\n" +
2091	"\x13CANCEL_KIND_TIMEOUT\x10\x02\x12\x18\n" +
2092	"\x14CANCEL_KIND_SHUTDOWN\x10\x03*\x8c\x01\n" +
2093	"\x0fAnnotationLevel\x12 \n" +
2094	"\x1cANNOTATION_LEVEL_UNSPECIFIED\x10\x00\x12\x1b\n" +
2095	"\x17ANNOTATION_LEVEL_NOTICE\x10\x01\x12\x1c\n" +
2096	"\x18ANNOTATION_LEVEL_WARNING\x10\x02\x12\x1c\n" +
2097	"\x18ANNOTATION_LEVEL_FAILURE\x10\x03*\xc6\x01\n" +
2098	"\x0eStepConclusion\x12\x1f\n" +
2099	"\x1bSTEP_CONCLUSION_UNSPECIFIED\x10\x00\x12\x1b\n" +
2100	"\x17STEP_CONCLUSION_SUCCESS\x10\x01\x12\x1b\n" +
2101	"\x17STEP_CONCLUSION_FAILURE\x10\x02\x12\x1d\n" +
2102	"\x19STEP_CONCLUSION_CANCELLED\x10\x03\x12\x1b\n" +
2103	"\x17STEP_CONCLUSION_SKIPPED\x10\x04\x12\x1d\n" +
2104	"\x19STEP_CONCLUSION_TIMED_OUT\x10\x05B4Z2bnema.dev/ermite-runner/internal/execstream/execpbb\x06proto3"
2105
2106var (
2107	file_exec_proto_rawDescOnce sync.Once
2108	file_exec_proto_rawDescData []byte
2109)
2110
2111func file_exec_proto_rawDescGZIP() []byte {
2112	file_exec_proto_rawDescOnce.Do(func() {
2113		file_exec_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_exec_proto_rawDesc), len(file_exec_proto_rawDesc)))
2114	})
2115	return file_exec_proto_rawDescData
2116}
2117
2118var file_exec_proto_enumTypes = make([]protoimpl.EnumInfo, 4)
2119var file_exec_proto_msgTypes = make([]protoimpl.MessageInfo, 23)
2120var file_exec_proto_goTypes = []any{
2121	(StreamKind)(0),          // 0: ermite.runner.exec.v1.StreamKind
2122	(CancelKind)(0),          // 1: ermite.runner.exec.v1.CancelKind
2123	(AnnotationLevel)(0),     // 2: ermite.runner.exec.v1.AnnotationLevel
2124	(StepConclusion)(0),      // 3: ermite.runner.exec.v1.StepConclusion
2125	(*Frame)(nil),            // 4: ermite.runner.exec.v1.Frame
2126	(*NamedValue)(nil),       // 5: ermite.runner.exec.v1.NamedValue
2127	(*Hello)(nil),            // 6: ermite.runner.exec.v1.Hello
2128	(*Run)(nil),              // 7: ermite.runner.exec.v1.Run
2129	(*JobSpec)(nil),          // 8: ermite.runner.exec.v1.JobSpec
2130	(*TokenPermissions)(nil), // 9: ermite.runner.exec.v1.TokenPermissions
2131	(*Output)(nil),           // 10: ermite.runner.exec.v1.Output
2132	(*Exit)(nil),             // 11: ermite.runner.exec.v1.Exit
2133	(*Cancel)(nil),           // 12: ermite.runner.exec.v1.Cancel
2134	(*StepStarted)(nil),      // 13: ermite.runner.exec.v1.StepStarted
2135	(*StepCompleted)(nil),    // 14: ermite.runner.exec.v1.StepCompleted
2136	(*Annotation)(nil),       // 15: ermite.runner.exec.v1.Annotation
2137	(*StepAnnotations)(nil),  // 16: ermite.runner.exec.v1.StepAnnotations
2138	(*StepSummary)(nil),      // 17: ermite.runner.exec.v1.StepSummary
2139	(*Log)(nil),              // 18: ermite.runner.exec.v1.Log
2140	(*JobResult)(nil),        // 19: ermite.runner.exec.v1.JobResult
2141	(*ResolveRequest)(nil),   // 20: ermite.runner.exec.v1.ResolveRequest
2142	(*ResolveResponse)(nil),  // 21: ermite.runner.exec.v1.ResolveResponse
2143	(*ResolvedAction)(nil),   // 22: ermite.runner.exec.v1.ResolvedAction
2144	nil,                      // 23: ermite.runner.exec.v1.Hello.BootMsEntry
2145	nil,                      // 24: ermite.runner.exec.v1.Run.EnvEntry
2146	nil,                      // 25: ermite.runner.exec.v1.TokenPermissions.LevelsEntry
2147	nil,                      // 26: ermite.runner.exec.v1.JobResult.OutputsEntry
2148}
2149var file_exec_proto_depIdxs = []int32{
2150	6,  // 0: ermite.runner.exec.v1.Frame.hello:type_name -> ermite.runner.exec.v1.Hello
2151	7,  // 1: ermite.runner.exec.v1.Frame.run:type_name -> ermite.runner.exec.v1.Run
2152	10, // 2: ermite.runner.exec.v1.Frame.output:type_name -> ermite.runner.exec.v1.Output
2153	11, // 3: ermite.runner.exec.v1.Frame.exit:type_name -> ermite.runner.exec.v1.Exit
2154	12, // 4: ermite.runner.exec.v1.Frame.cancel:type_name -> ermite.runner.exec.v1.Cancel
2155	13, // 5: ermite.runner.exec.v1.Frame.step_started:type_name -> ermite.runner.exec.v1.StepStarted
2156	14, // 6: ermite.runner.exec.v1.Frame.step_completed:type_name -> ermite.runner.exec.v1.StepCompleted
2157	18, // 7: ermite.runner.exec.v1.Frame.log:type_name -> ermite.runner.exec.v1.Log
2158	19, // 8: ermite.runner.exec.v1.Frame.job_result:type_name -> ermite.runner.exec.v1.JobResult
2159	16, // 9: ermite.runner.exec.v1.Frame.step_annotations:type_name -> ermite.runner.exec.v1.StepAnnotations
2160	17, // 10: ermite.runner.exec.v1.Frame.step_summary:type_name -> ermite.runner.exec.v1.StepSummary
2161	20, // 11: ermite.runner.exec.v1.Frame.resolve_request:type_name -> ermite.runner.exec.v1.ResolveRequest
2162	21, // 12: ermite.runner.exec.v1.Frame.resolve_response:type_name -> ermite.runner.exec.v1.ResolveResponse
2163	5,  // 13: ermite.runner.exec.v1.Frame.secret:type_name -> ermite.runner.exec.v1.NamedValue
2164	5,  // 14: ermite.runner.exec.v1.Frame.var:type_name -> ermite.runner.exec.v1.NamedValue
2165	23, // 15: ermite.runner.exec.v1.Hello.boot_ms:type_name -> ermite.runner.exec.v1.Hello.BootMsEntry
2166	24, // 16: ermite.runner.exec.v1.Run.env:type_name -> ermite.runner.exec.v1.Run.EnvEntry
2167	8,  // 17: ermite.runner.exec.v1.Run.job:type_name -> ermite.runner.exec.v1.JobSpec
2168	9,  // 18: ermite.runner.exec.v1.JobSpec.token_permissions:type_name -> ermite.runner.exec.v1.TokenPermissions
2169	25, // 19: ermite.runner.exec.v1.TokenPermissions.levels:type_name -> ermite.runner.exec.v1.TokenPermissions.LevelsEntry
2170	0,  // 20: ermite.runner.exec.v1.Output.stream:type_name -> ermite.runner.exec.v1.StreamKind
2171	1,  // 21: ermite.runner.exec.v1.Cancel.kind:type_name -> ermite.runner.exec.v1.CancelKind
2172	3,  // 22: ermite.runner.exec.v1.StepCompleted.conclusion:type_name -> ermite.runner.exec.v1.StepConclusion
2173	3,  // 23: ermite.runner.exec.v1.StepCompleted.outcome:type_name -> ermite.runner.exec.v1.StepConclusion
2174	2,  // 24: ermite.runner.exec.v1.Annotation.level:type_name -> ermite.runner.exec.v1.AnnotationLevel
2175	15, // 25: ermite.runner.exec.v1.StepAnnotations.annotations:type_name -> ermite.runner.exec.v1.Annotation
2176	3,  // 26: ermite.runner.exec.v1.JobResult.conclusion:type_name -> ermite.runner.exec.v1.StepConclusion
2177	26, // 27: ermite.runner.exec.v1.JobResult.outputs:type_name -> ermite.runner.exec.v1.JobResult.OutputsEntry
2178	22, // 28: ermite.runner.exec.v1.ResolveResponse.actions:type_name -> ermite.runner.exec.v1.ResolvedAction
2179	29, // [29:29] is the sub-list for method output_type
2180	29, // [29:29] is the sub-list for method input_type
2181	29, // [29:29] is the sub-list for extension type_name
2182	29, // [29:29] is the sub-list for extension extendee
2183	0,  // [0:29] is the sub-list for field type_name
2184}
2185
2186func init() { file_exec_proto_init() }
2187func file_exec_proto_init() {
2188	if File_exec_proto != nil {
2189		return
2190	}
2191	file_exec_proto_msgTypes[0].OneofWrappers = []any{
2192		(*Frame_Hello)(nil),
2193		(*Frame_Run)(nil),
2194		(*Frame_Output)(nil),
2195		(*Frame_Exit)(nil),
2196		(*Frame_Cancel)(nil),
2197		(*Frame_StepStarted)(nil),
2198		(*Frame_StepCompleted)(nil),
2199		(*Frame_Log)(nil),
2200		(*Frame_JobResult)(nil),
2201		(*Frame_StepAnnotations)(nil),
2202		(*Frame_StepSummary)(nil),
2203		(*Frame_ResolveRequest)(nil),
2204		(*Frame_ResolveResponse)(nil),
2205		(*Frame_Secret)(nil),
2206		(*Frame_Var)(nil),
2207	}
2208	type x struct{}
2209	out := protoimpl.TypeBuilder{
2210		File: protoimpl.DescBuilder{
2211			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
2212			RawDescriptor: unsafe.Slice(unsafe.StringData(file_exec_proto_rawDesc), len(file_exec_proto_rawDesc)),
2213			NumEnums:      4,
2214			NumMessages:   23,
2215			NumExtensions: 0,
2216			NumServices:   0,
2217		},
2218		GoTypes:           file_exec_proto_goTypes,
2219		DependencyIndexes: file_exec_proto_depIdxs,
2220		EnumInfos:         file_exec_proto_enumTypes,
2221		MessageInfos:      file_exec_proto_msgTypes,
2222	}.Build()
2223	File_exec_proto = out.File
2224	file_exec_proto_goTypes = nil
2225	file_exec_proto_depIdxs = nil
2226}

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