feat: add user-facing deployment cancel endpoint
Add POST /apps/{id}/deployments/cancel endpoint that allows users to
cancel in-progress deployments via the web UI.
Changes:
- Add CancelDeploy() and HasActiveDeploy() public methods to deploy service
- Add HandleCancelDeploy handler
- Wire route in routes.go
- Add cancel button to app detail template (shown during active deployments)
- Add handler tests for cancel endpoint
fixes #66
This commit is contained in:
@@ -283,6 +283,26 @@ func (svc *Service) GetLogFilePath(app *models.App, deployment *models.Deploymen
|
||||
return filepath.Join(svc.config.DataDir, "logs", hostname, app.Name, filename)
|
||||
}
|
||||
|
||||
// HasActiveDeploy returns true if there is an active deployment for the given app.
|
||||
func (svc *Service) HasActiveDeploy(appID string) bool {
|
||||
_, ok := svc.activeDeploys.Load(appID)
|
||||
|
||||
return ok
|
||||
}
|
||||
|
||||
// CancelDeploy cancels any in-progress deployment for the given app
|
||||
// and waits for it to finish before returning. Returns true if a deployment
|
||||
// was cancelled, false if there was nothing to cancel.
|
||||
func (svc *Service) CancelDeploy(appID string) bool {
|
||||
if !svc.HasActiveDeploy(appID) {
|
||||
return false
|
||||
}
|
||||
|
||||
svc.cancelActiveDeploy(appID)
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
// Deploy deploys an app. If cancelExisting is true (e.g. webhook-triggered),
|
||||
// any in-progress deploy for the same app will be cancelled before starting.
|
||||
// If cancelExisting is false and a deploy is in progress, ErrDeploymentInProgress is returned.
|
||||
|
||||
Reference in New Issue
Block a user