modified Docker plugin to use new Condition struct to limit execution

This commit is contained in:
Brad Rydzewski 2014-10-11 14:35:06 -07:00
parent bd7ad88fb8
commit 167eb21b21
3 changed files with 13 additions and 8 deletions

View file

@ -4,8 +4,8 @@ import (
"fmt" "fmt"
"strconv" "strconv"
"github.com/drone/drone/plugin/condition"
"github.com/drone/drone/shared/build/buildfile" "github.com/drone/drone/shared/build/buildfile"
"github.com/drone/drone/shared/build/repo"
) )
type Docker struct { type Docker struct {
@ -35,7 +35,8 @@ type Docker struct {
// Do we want to override "latest" automatically with this build? // Do we want to override "latest" automatically with this build?
PushLatest bool `yaml:"push_latest"` PushLatest bool `yaml:"push_latest"`
CustomTag string `yaml:"custom_tag"` CustomTag string `yaml:"custom_tag"`
Branch string `yaml:"branch"`
Condition *condition.Condition `yaml:"when,omitempty"`
} }
// Write adds commands to the buildfile to do the following: // Write adds commands to the buildfile to do the following:
@ -43,7 +44,7 @@ type Docker struct {
// 2. Build a docker image based on the dockerfile defined in the config. // 2. Build a docker image based on the dockerfile defined in the config.
// 3. Push that docker image to index.docker.io. // 3. Push that docker image to index.docker.io.
// 4. Delete the docker image on the server it was build on so we conserve disk space. // 4. Delete the docker image on the server it was build on so we conserve disk space.
func (d *Docker) Write(f *buildfile.Buildfile, r *repo.Repo) { func (d *Docker) Write(f *buildfile.Buildfile) {
if len(d.DockerServer) == 0 || d.DockerServerPort == 0 || len(d.DockerVersion) == 0 || if len(d.DockerServer) == 0 || d.DockerServerPort == 0 || len(d.DockerVersion) == 0 ||
len(d.ImageName) == 0 { len(d.ImageName) == 0 {
f.WriteCmdSilent(`echo -e "Docker Plugin: Missing argument(s)\n\n"`) f.WriteCmdSilent(`echo -e "Docker Plugin: Missing argument(s)\n\n"`)
@ -124,3 +125,7 @@ func (d *Docker) Write(f *buildfile.Buildfile, r *repo.Repo) {
} }
} }
} }
func (d *Docker) GetCondition() *condition.Condition {
return d.Condition
}

View file

@ -40,8 +40,8 @@ func (p *Publish) Write(f *buildfile.Buildfile, r *repo.Repo) {
} }
// Docker // Docker
if p.Docker != nil && (len(p.Docker.Branch) == 0 || (len(p.Docker.Branch) > 0 && r.Branch == p.Docker.Branch)) { if p.Docker != nil && match(p.Docker.GetCondition(), r) {
p.Docker.Write(f, r) p.Docker.Write(f)
} }
} }

View file

@ -59,9 +59,9 @@ var (
pub *pubsub.PubSub pub *pubsub.PubSub
// Docker configuration details. // Docker configuration details.
tlscacert = config.String("docker-tlscacert") tlscacert = config.String("docker-tlscacert", "")
tlscert = config.String("docker-tlscert") tlscert = config.String("docker-tlscert", "")
tlskey = config.String("docker-tlskey") tlskey = config.String("docker-tlskey", "")
nodes StringArr nodes StringArr
db *sql.DB db *sql.DB