detached cd77819

build(deps): bump ermite-api to the CI-2 protocol

Pseudo-version of 49ac5fd (Job.github_token, ResolveActions, annotations,
summaries). The new calls answer unimplemented until they are built; the job
calls ResolveActions and UploadSummary authenticate with the job token.
commit
cd77819994269bd11ebb42d9b1f4303ac3e341fb
author
brice · · 2026-10-13 10:02 UTC
parent
b8e893f
signature
GPG VerifiedCD88F9E564E0102646FB6077A1A07C7C7C3E349D · arch-gpg Verified for the committer email
3 files · +29 -1
M go.mod +1 -1
@@ -13,7 +13,7 @@ tool (
1313
1414 require (
1515 bnema.dev/ermite-actions v0.0.0-20261013040121-5c0e25d50362
16- bnema.dev/ermite-api v0.0.0-20261013034722-4db3b8badaf6
16+ bnema.dev/ermite-api v0.1.1-0.20261013091642-49ac5fd7a78a
1717 bnema.dev/ermite-git v0.1.0
1818 bnema.dev/ermite-kv v0.0.0-20261010031554-5e09b48f81c3
1919 connectrpc.com/connect v1.21.0
@@ -13,7 +13,7 @@ tool (
13 13
14 require (14 require (
15 bnema.dev/ermite-actions v0.0.0-20261013040121-5c0e25d5036215 bnema.dev/ermite-actions v0.0.0-20261013040121-5c0e25d50362
16- bnema.dev/ermite-api v0.0.0-20261013034722-4db3b8badaf616+ bnema.dev/ermite-api v0.1.1-0.20261013091642-49ac5fd7a78a
17 bnema.dev/ermite-git v0.1.017 bnema.dev/ermite-git v0.1.0
18 bnema.dev/ermite-kv v0.0.0-20261010031554-5e09b48f81c318 bnema.dev/ermite-kv v0.0.0-20261010031554-5e09b48f81c3
19 connectrpc.com/connect v1.21.019 connectrpc.com/connect v1.21.0
M go.sum +2 -0
@@ -2,6 +2,8 @@ bnema.dev/ermite-actions v0.0.0-20261013040121-5c0e25d50362 h1:w+HHiVba0R8eCUX/G
22 bnema.dev/ermite-actions v0.0.0-20261013040121-5c0e25d50362/go.mod h1:qoIB/Iz4xKdLUG4R6wuBDk6cemdugR+UEo5bpSJJYh4=
33 bnema.dev/ermite-api v0.0.0-20261013034722-4db3b8badaf6 h1:S7Zk7maQJoOUxY2BU4CKeAaWorDOhNXGw7sbT76Yft8=
44 bnema.dev/ermite-api v0.0.0-20261013034722-4db3b8badaf6/go.mod h1:L5smjt+IAigyAo3Ny2EnFB9IwvIGOPT1GoByZNgbDa8=
5+bnema.dev/ermite-api v0.1.1-0.20261013091642-49ac5fd7a78a h1:RoMj0lnpAyvbiIwWq7QyQoyVy8hQ47XSKtwaEe36Qy8=
6+bnema.dev/ermite-api v0.1.1-0.20261013091642-49ac5fd7a78a/go.mod h1:L5smjt+IAigyAo3Ny2EnFB9IwvIGOPT1GoByZNgbDa8=
57 bnema.dev/ermite-git v0.1.0 h1:8GNhQDj0MxyvrI4kHewZ9k0rT86e9348T3BJ49WHfmI=
68 bnema.dev/ermite-git v0.1.0/go.mod h1:m9d4VYHm28mrY6VxVqWQMRIsadGq80FeLub/nrZX6Cg=
79 bnema.dev/ermite-kv v0.0.0-20261010031554-5e09b48f81c3 h1:PVTDOWTg9JJZrnJznTHSCB1Vcc+x2n6zMgZkKiFwvuw=
@@ -2,6 +2,8 @@ bnema.dev/ermite-actions v0.0.0-20261013040121-5c0e25d50362 h1:w+HHiVba0R8eCUX/G
2 bnema.dev/ermite-actions v0.0.0-20261013040121-5c0e25d50362/go.mod h1:qoIB/Iz4xKdLUG4R6wuBDk6cemdugR+UEo5bpSJJYh4=2 bnema.dev/ermite-actions v0.0.0-20261013040121-5c0e25d50362/go.mod h1:qoIB/Iz4xKdLUG4R6wuBDk6cemdugR+UEo5bpSJJYh4=
3 bnema.dev/ermite-api v0.0.0-20261013034722-4db3b8badaf6 h1:S7Zk7maQJoOUxY2BU4CKeAaWorDOhNXGw7sbT76Yft8=3 bnema.dev/ermite-api v0.0.0-20261013034722-4db3b8badaf6 h1:S7Zk7maQJoOUxY2BU4CKeAaWorDOhNXGw7sbT76Yft8=
4 bnema.dev/ermite-api v0.0.0-20261013034722-4db3b8badaf6/go.mod h1:L5smjt+IAigyAo3Ny2EnFB9IwvIGOPT1GoByZNgbDa8=4 bnema.dev/ermite-api v0.0.0-20261013034722-4db3b8badaf6/go.mod h1:L5smjt+IAigyAo3Ny2EnFB9IwvIGOPT1GoByZNgbDa8=
5+bnema.dev/ermite-api v0.1.1-0.20261013091642-49ac5fd7a78a h1:RoMj0lnpAyvbiIwWq7QyQoyVy8hQ47XSKtwaEe36Qy8=
6+bnema.dev/ermite-api v0.1.1-0.20261013091642-49ac5fd7a78a/go.mod h1:L5smjt+IAigyAo3Ny2EnFB9IwvIGOPT1GoByZNgbDa8=
5 bnema.dev/ermite-git v0.1.0 h1:8GNhQDj0MxyvrI4kHewZ9k0rT86e9348T3BJ49WHfmI=7 bnema.dev/ermite-git v0.1.0 h1:8GNhQDj0MxyvrI4kHewZ9k0rT86e9348T3BJ49WHfmI=
6 bnema.dev/ermite-git v0.1.0/go.mod h1:m9d4VYHm28mrY6VxVqWQMRIsadGq80FeLub/nrZX6Cg=8 bnema.dev/ermite-git v0.1.0/go.mod h1:m9d4VYHm28mrY6VxVqWQMRIsadGq80FeLub/nrZX6Cg=
7 bnema.dev/ermite-kv v0.0.0-20261010031554-5e09b48f81c3 h1:PVTDOWTg9JJZrnJznTHSCB1Vcc+x2n6zMgZkKiFwvuw=9 bnema.dev/ermite-kv v0.0.0-20261010031554-5e09b48f81c3 h1:PVTDOWTg9JJZrnJznTHSCB1Vcc+x2n6zMgZkKiFwvuw=
M internal/adapters/rpc/ci.go +26 -0
@@ -33,6 +33,9 @@ var runnerSecretProcedures = map[string]bool{
3333 ermiteconnect.RunnerServiceHeartbeatProcedure: true,
3434 ermiteconnect.RunnerServiceWatchJobProcedure: true,
3535 ermiteconnect.RunnerServiceCompleteJobProcedure: true,
36+ // ResolveActions and UploadSummary are job calls too.
37+ ermiteconnect.RunnerServiceResolveActionsProcedure: true,
38+ ermiteconnect.RunnerServiceUploadSummaryProcedure: true,
3639 }
3740
3841 // ciError maps an error of the CI use cases. A call on a job that ended gets
@@ -169,6 +172,18 @@ func (s *runnerService) CompleteJob(ctx context.Context, req *connect.Request[pb
169172 return connect.NewResponse(&pb.CompleteJobResponse{Conclusion: conclusionToPB(res.Conclusion), Error: res.Error, Applied: res.Applied}), nil
170173 }
171174
175+// ResolveActions is replaced by the real call in the commit that adds action
176+// resolution.
177+func (s *runnerService) ResolveActions(context.Context, *connect.Request[pb.ResolveActionsRequest]) (*connect.Response[pb.ResolveActionsResponse], error) {
178+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("ermite.RunnerService.ResolveActions is not implemented"))
179+}
180+
181+// UploadSummary is the E2 work (summaries storage): until the server lists
182+// "ci.summaries" it answers unimplemented, as runner.proto says.
183+func (s *runnerService) UploadSummary(context.Context, *connect.Request[pb.UploadSummaryRequest]) (*connect.Response[pb.UploadSummaryResponse], error) {
184+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("ermite.RunnerService.UploadSummary is not implemented"))
185+}
186+
172187 // runService implements ermiteconnect.RunServiceHandler.
173188 type runService struct{ runs ports.RunService }
174189
@@ -306,3 +321,14 @@ func (s *runService) RemoveRunner(ctx context.Context, req *connect.Request[pb.R
306321 }
307322 return connect.NewResponse(&pb.RemoveRunnerResponse{}), nil
308323 }
324+
325+// ListAnnotations and GetStepSummaries are the E2 work (annotations and
326+// summaries): unimplemented until the server lists "ci.annotations" and
327+// "ci.summaries".
328+func (s *runService) ListAnnotations(context.Context, *connect.Request[pb.ListAnnotationsRequest]) (*connect.Response[pb.ListAnnotationsResponse], error) {
329+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("ermite.RunService.ListAnnotations is not implemented"))
330+}
331+
332+func (s *runService) GetStepSummaries(context.Context, *connect.Request[pb.GetStepSummariesRequest]) (*connect.Response[pb.GetStepSummariesResponse], error) {
333+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("ermite.RunService.GetStepSummaries is not implemented"))
334+}
@@ -33,6 +33,9 @@ var runnerSecretProcedures = map[string]bool{
33 ermiteconnect.RunnerServiceHeartbeatProcedure: true,33 ermiteconnect.RunnerServiceHeartbeatProcedure: true,
34 ermiteconnect.RunnerServiceWatchJobProcedure: true,34 ermiteconnect.RunnerServiceWatchJobProcedure: true,
35 ermiteconnect.RunnerServiceCompleteJobProcedure: true,35 ermiteconnect.RunnerServiceCompleteJobProcedure: true,
36+ // ResolveActions and UploadSummary are job calls too.
37+ ermiteconnect.RunnerServiceResolveActionsProcedure: true,
38+ ermiteconnect.RunnerServiceUploadSummaryProcedure: true,
36 }39 }
37 40
38 // ciError maps an error of the CI use cases. A call on a job that ended gets41 // ciError maps an error of the CI use cases. A call on a job that ended gets
@@ -169,6 +172,18 @@ func (s *runnerService) CompleteJob(ctx context.Context, req *connect.Request[pb
169 return connect.NewResponse(&pb.CompleteJobResponse{Conclusion: conclusionToPB(res.Conclusion), Error: res.Error, Applied: res.Applied}), nil172 return connect.NewResponse(&pb.CompleteJobResponse{Conclusion: conclusionToPB(res.Conclusion), Error: res.Error, Applied: res.Applied}), nil
170 }173 }
171 174
175+// ResolveActions is replaced by the real call in the commit that adds action
176+// resolution.
177+func (s *runnerService) ResolveActions(context.Context, *connect.Request[pb.ResolveActionsRequest]) (*connect.Response[pb.ResolveActionsResponse], error) {
178+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("ermite.RunnerService.ResolveActions is not implemented"))
179+}
180+
181+// UploadSummary is the E2 work (summaries storage): until the server lists
182+// "ci.summaries" it answers unimplemented, as runner.proto says.
183+func (s *runnerService) UploadSummary(context.Context, *connect.Request[pb.UploadSummaryRequest]) (*connect.Response[pb.UploadSummaryResponse], error) {
184+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("ermite.RunnerService.UploadSummary is not implemented"))
185+}
186+
172 // runService implements ermiteconnect.RunServiceHandler.187 // runService implements ermiteconnect.RunServiceHandler.
173 type runService struct{ runs ports.RunService }188 type runService struct{ runs ports.RunService }
174 189
@@ -306,3 +321,14 @@ func (s *runService) RemoveRunner(ctx context.Context, req *connect.Request[pb.R
306 }321 }
307 return connect.NewResponse(&pb.RemoveRunnerResponse{}), nil322 return connect.NewResponse(&pb.RemoveRunnerResponse{}), nil
308 }323 }
324+
325+// ListAnnotations and GetStepSummaries are the E2 work (annotations and
326+// summaries): unimplemented until the server lists "ci.annotations" and
327+// "ci.summaries".
328+func (s *runService) ListAnnotations(context.Context, *connect.Request[pb.ListAnnotationsRequest]) (*connect.Response[pb.ListAnnotationsResponse], error) {
329+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("ermite.RunService.ListAnnotations is not implemented"))
330+}
331+
332+func (s *runService) GetStepSummaries(context.Context, *connect.Request[pb.GetStepSummariesRequest]) (*connect.Response[pb.GetStepSummariesResponse], error) {
333+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("ermite.RunService.GetStepSummaries is not implemented"))
334+}

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 2

Tags 42

↑↓ moveenter openesc close