v0.4.4 edcdd4c

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

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