Add support for configuring escalated plugins via envvar.

This commit is contained in:
John Engelman 2016-01-10 17:19:48 -06:00
parent a84db63f11
commit d5767b7d57
4 changed files with 26 additions and 12 deletions

View file

@ -264,9 +264,10 @@ func PostBuild(c *gin.Context) {
Config: string(raw), Config: string(raw),
Secret: string(sec), Secret: string(sec),
System: &model.System{ System: &model.System{
Link: httputil.GetURL(c.Request), Link: httputil.GetURL(c.Request),
Plugins: strings.Split(os.Getenv("PLUGIN_FILTER"), " "), Plugins: strings.Split(os.Getenv("PLUGIN_FILTER"), " "),
Globals: strings.Split(os.Getenv("PLUGIN_PARAMS"), " "), Globals: strings.Split(os.Getenv("PLUGIN_PARAMS"), " "),
Escalates: strings.Split(os.Getenv("ESCALATE_FILTER"), " "),
}, },
}) })

View file

@ -2,11 +2,12 @@ package controller
import ( import (
"fmt" "fmt"
"github.com/gin-gonic/gin"
"os" "os"
"path/filepath" "path/filepath"
"strings"
"regexp" "regexp"
"strings"
"github.com/gin-gonic/gin"
log "github.com/Sirupsen/logrus" log "github.com/Sirupsen/logrus"
"github.com/drone/drone/engine" "github.com/drone/drone/engine"
@ -214,9 +215,10 @@ func PostHook(c *gin.Context) {
Config: string(raw), Config: string(raw),
Secret: string(sec), Secret: string(sec),
System: &model.System{ System: &model.System{
Link: httputil.GetURL(c.Request), Link: httputil.GetURL(c.Request),
Plugins: strings.Split(os.Getenv("PLUGIN_FILTER"), " "), Plugins: strings.Split(os.Getenv("PLUGIN_FILTER"), " "),
Globals: strings.Split(os.Getenv("PLUGIN_PARAMS"), " "), Globals: strings.Split(os.Getenv("PLUGIN_PARAMS"), " "),
Escalates: strings.Split(os.Getenv("ESCALATE_FILTER"), " "),
}, },
}) })

View file

@ -19,3 +19,13 @@ Whitelist official Drone plugins and registry user `octocat`
``` ```
PLUGIN_FILTER=plugins/* octocat/* PLUGIN_FILTER=plugins/* octocat/*
``` ```
Additionally, some plugins may require to be execute as a "privileged" container.
This mode is most common for plugins that are attempting to run docker in docker type behaviors (for example the plugins/docker requires this mode).
Drone will ship will a default pattern that will allow selected official Drone plugins to run in an privileged mode.
This whitelist can be customized by setting the `ESCALATE_FILTER` environment variable.
This is a space-separated list and includes glob matching capabilities.
```
ESCALATE_FILTER=plugins/drone-docker plugins/drone-ecr plugins/drone-gcr
```

View file

@ -1,8 +1,9 @@
package model package model
type System struct { type System struct {
Version string `json:"version"` Version string `json:"version"`
Link string `json:"link_url"` Link string `json:"link_url"`
Plugins []string `json:"plugins"` Plugins []string `json:"plugins"`
Globals []string `json:"globals"` Globals []string `json:"globals"`
Escalates []string `json:"privileged_plugins"`
} }