Merge pull request #1910 from bradrydzewski/master

add when.local=false to disable plugin steps locally
This commit is contained in:
Brad Rydzewski 2017-02-19 11:13:27 +11:00 committed by GitHub
commit 99eb89be1c
8 changed files with 31 additions and 49 deletions

View file

@ -29,7 +29,6 @@ type Agent struct {
Platform string Platform string
Namespace string Namespace string
Extension []string Extension []string
Disable []string
Escalate []string Escalate []string
Netrc []string Netrc []string
Local string Local string
@ -187,7 +186,7 @@ func (a *Agent) prep(w *model.Work) (*yaml.Config, error) {
transform.PluginParams(conf) transform.PluginParams(conf)
if a.Local != "" { if a.Local != "" {
transform.PluginDisable(conf, a.Disable) transform.PluginDisable(conf, true)
transform.ImageVolume(conf, []string{a.Local + ":" + conf.Workspace.Path}) transform.ImageVolume(conf, []string{a.Local + ":" + conf.Workspace.Path})
} }

View file

@ -33,11 +33,6 @@ var execCmd = cli.Command{
Usage: "build from local directory", Usage: "build from local directory",
EnvVar: "DRONE_LOCAL", EnvVar: "DRONE_LOCAL",
}, },
cli.StringSliceFlag{
Name: "plugin",
Usage: "plugin steps to enable",
EnvVar: "DRONE_PLUGIN_ENABLE",
},
cli.StringSliceFlag{ cli.StringSliceFlag{
Name: "secret", Name: "secret",
Usage: "build secrets in KEY=VALUE format", Usage: "build secrets in KEY=VALUE format",
@ -70,12 +65,6 @@ var execCmd = cli.Command{
Name: "pull", Name: "pull",
Usage: "always pull latest plugin images", Usage: "always pull latest plugin images",
}, },
cli.StringFlag{
EnvVar: "DRONE_PLUGIN_NAMESPACE",
Name: "namespace",
Value: "plugins",
Usage: "default plugin image namespace",
},
cli.StringSliceFlag{ cli.StringSliceFlag{
EnvVar: "DRONE_PLUGIN_PRIVILEGED", EnvVar: "DRONE_PLUGIN_PRIVILEGED",
Name: "privileged", Name: "privileged",
@ -157,7 +146,7 @@ var execCmd = cli.Command{
Usage: "repository is private", Usage: "repository is private",
EnvVar: "DRONE_REPO_PRIVATE", EnvVar: "DRONE_REPO_PRIVATE",
}, },
cli.BoolFlag{ cli.BoolTFlag{
Name: "repo.trusted", Name: "repo.trusted",
Usage: "repository is trusted", Usage: "repository is trusted",
EnvVar: "DRONE_REPO_TRUSTED", EnvVar: "DRONE_REPO_TRUSTED",
@ -331,8 +320,6 @@ func exec(c *cli.Context) error {
Engine: engine, Engine: engine,
Timeout: c.Duration("timeout.inactivity"), Timeout: c.Duration("timeout.inactivity"),
Platform: "linux/amd64", Platform: "linux/amd64",
Namespace: c.String("namespace"),
Disable: c.StringSlice("plugin"),
Escalate: c.StringSlice("privileged"), Escalate: c.StringSlice("privileged"),
Netrc: []string{}, Netrc: []string{},
Local: dir, Local: dir,
@ -353,7 +340,7 @@ func exec(c *cli.Context) error {
Avatar: c.String("repo.avatar"), Avatar: c.String("repo.avatar"),
Timeout: int64(c.Duration("timeout").Minutes()), Timeout: int64(c.Duration("timeout").Minutes()),
IsPrivate: c.Bool("repo.private"), IsPrivate: c.Bool("repo.private"),
IsTrusted: c.Bool("repo.trusted"), IsTrusted: c.BoolT("repo.trusted"),
Clone: c.String("remote.url"), Clone: c.String("remote.url"),
}, },
System: &model.System{ System: &model.System{

View file

@ -10,13 +10,13 @@ import (
type Constraints struct { type Constraints struct {
Repo Constraint Repo Constraint
Ref Constraint Ref Constraint
Refspec Constraint
Platform Constraint Platform Constraint
Environment Constraint Environment Constraint
Event Constraint Event Constraint
Branch Constraint Branch Constraint
Status Constraint Status Constraint
Matrix ConstraintMap Matrix ConstraintMap
Local types.BoolTrue
} }
// Match returns true if all constraints match the given input. If a single constraint // Match returns true if all constraints match the given input. If a single constraint

View file

@ -1,29 +1,20 @@
package transform package transform
import ( import "github.com/drone/drone/yaml"
"path/filepath"
"github.com/drone/drone/yaml"
)
// PluginDisable is a transform function that alters the Yaml configuration to // PluginDisable is a transform function that alters the Yaml configuration to
// disables plugins. This is intended for use when executing the pipeline // disables plugins. This is intended for use when executing the pipeline
// locally on your own computer. // locally on your own computer.
func PluginDisable(conf *yaml.Config, patterns []string) error { func PluginDisable(conf *yaml.Config, local bool) error {
for _, container := range conf.Pipeline { for _, container := range conf.Pipeline {
if len(container.Commands) != 0 { // skip build steps if local && !container.Constraints.Local.Bool() {
continue
}
var match bool
for _, pattern := range patterns {
if ok, _ := filepath.Match(pattern, container.Name); ok {
match = true
break
}
}
if !match {
container.Disabled = true container.Disabled = true
} }
if isClone(container) {
container.Disabled = true
continue
}
} }
return nil return nil
} }

View file

@ -5,6 +5,10 @@ import (
"github.com/drone/drone/yaml" "github.com/drone/drone/yaml"
) )
//
// TODO remove
//
func ImageSecrets(c *yaml.Config, secrets []*model.Secret, event string) error { func ImageSecrets(c *yaml.Config, secrets []*model.Secret, event string) error {
var images []*yaml.Container var images []*yaml.Container
images = append(images, c.Pipeline...) images = append(images, c.Pipeline...)

View file

@ -2,6 +2,7 @@ package transform
import "github.com/drone/drone/yaml" import "github.com/drone/drone/yaml"
// ImageVolume mounts a default volume (used for drone exec)
func ImageVolume(conf *yaml.Config, volumes []string) error { func ImageVolume(conf *yaml.Config, volumes []string) error {
if len(volumes) == 0 { if len(volumes) == 0 {

View file

@ -15,14 +15,14 @@ func (b *BoolTrue) UnmarshalYAML(unmarshal func(interface{}) error) error {
return err return err
} }
b.value, err = strconv.ParseBool(s) value, err := strconv.ParseBool(s)
if err != nil { if err == nil {
b.value = true b.value = !value
} }
return nil return nil
} }
// Bool returns the bool value. // Bool returns the bool value.
func (b BoolTrue) Bool() bool { func (b BoolTrue) Bool() bool {
return b.value return !b.value
} }

View file

@ -40,7 +40,7 @@ func TestBoolTrue(t *testing.T) {
if err != nil { if err != nil {
g.Fail(err) g.Fail(err)
} }
g.Assert(out.Bool()).Equal(false) g.Assert(out.Bool()).Equal(true)
}) })
g.It("should throw error when invalid", func() { g.It("should throw error when invalid", func() {