diff --git a/server/api/pipeline.go b/server/api/pipeline.go index c151e1f26..2a98f6a9c 100644 --- a/server/api/pipeline.go +++ b/server/api/pipeline.go @@ -409,12 +409,19 @@ func PostPipeline(c *gin.Context) { // make Deploy overridable pl.Deploy = c.DefaultQuery("deploy_to", pl.Deploy) - // make Event overridable + // make Event overridable to deploy + // TODO refactor to use own proper API for deploy if event, ok := c.GetQuery("event"); ok { + // only allow deploy from push, tag and release + if pl.Event != model.EventPush && pl.Event != model.EventTag && pl.Event != model.EventRelease { + _ = c.AbortWithError(http.StatusBadRequest, fmt.Errorf("can only deploy push, tag and release pipelines")) + return + } + pl.Event = model.WebhookEvent(event) - if err := pl.Event.Validate(); err != nil { - _ = c.AbortWithError(http.StatusBadRequest, err) + if pl.Event != model.EventDeploy { + _ = c.AbortWithError(http.StatusBadRequest, model.ErrInvalidWebhookEvent) return } } diff --git a/web/src/views/repo/pipeline/PipelineWrapper.vue b/web/src/views/repo/pipeline/PipelineWrapper.vue index 535b1d04f..b54ae2c2e 100644 --- a/web/src/views/repo/pipeline/PipelineWrapper.vue +++ b/web/src/views/repo/pipeline/PipelineWrapper.vue @@ -45,7 +45,10 @@ @click="restartPipeline" />