Merge pull request #1910 from bradrydzewski/master
add when.local=false to disable plugin steps locally
This commit is contained in:
commit
99eb89be1c
8 changed files with 31 additions and 49 deletions
|
@ -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})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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{
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
@ -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...)
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
@ -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() {
|
||||||
|
|
Loading…
Reference in a new issue