Sign in

Search issue titles and bodies, change requests and comments. Private repositories you cannot read are not included.

vole
Clone

Read only, no credentials:

https://rodent.software/vole.git

Write over SSH with a registered key:

git clone ssh://git@rodent.software:2222/vole.git

A free and open-source forge that lives in your Git repo.

Give the CLI rerun too

70291860685b74018f96a47686e5e6160e11f14f · Keenan Nemetz · 6d ago · parent deb024d4

Give the CLI rerun too

The run page offered Rerun while the CLI did not. It is the same maintainer
action against the same instance-side queue: `vole run rerun <id>` queues a
finished run again with the job it already pinned, refuses one that has not
finished, and writes the same `run.rerun` audit record the page writes.

Both transports now offer both run actions, which is what #168 asked of issues
and comments applied to CI.

server/ssh/server.go +9−4

@@ -454,14 +454,19 @@ func (s *Server) exec(ch xssh.Channel, req *xssh.Request, command, user, fp, rem
454 454 exit(ch, s.serveChangeStatus(ch, argv, user, remote))
455 455 return
456 456 }
457 // Canceling a run is a write to the repository's CI queue, not to a ref. The verb
458 // is the CLI counterpart of the browser's cancel button, and the handler asks the
459 // same maintainer capability before it touches the queue.
457 // Canceling and rerunning a run are writes to the repository's CI queue, not to a
458 // ref. The verbs are the CLI counterparts of the buttons on the run page, and the
459 // handlers ask the same maintainer capability before they touch the queue.
460 460 if len(argv) >= 1 && argv[0] == "vole-run-cancel" {
461 461 req.Reply(true, nil)
462 462 exit(ch, s.serveRunCancel(ch, argv, user))
463 463 return
464 464 }
465 if len(argv) >= 1 && argv[0] == "vole-run-rerun" {
466 req.Reply(true, nil)
467 exit(ch, s.serveRunRerun(ch, argv, user))
468 return
469 }
465 470 // A manual workflow run is a write to the repository's CI queue, not to a ref.
466 471 // The verb is the CLI counterpart of the browser's Run workflow form; the
467 472 // dispatcher re-checks the maintainer capability before it queues anything.
@@ -519,7 +524,7 @@ func (s *Server) exec(ch xssh.Channel, req *xssh.Request, command, user, fp, rem
519 524 return
520 525 }
521 526 if len(argv) != 2 {
522 refuse("only git-upload-pack, git-receive-pack, vole-admin, vole-roster, vole-whoami, vole-runner, vole-change-merge, vole-change-status, vole-run-cancel and vole-workflow-dispatch are available")
527 refuse("only git-upload-pack, git-receive-pack, vole-admin, vole-roster, vole-whoami, vole-runner, vole-change-merge, vole-change-status, vole-run-cancel, vole-run-rerun and vole-workflow-dispatch are available")
523 528 return
524 529 }
525 530 verb := argv[0]