--- a/ChangeLog Fri Aug 02 00:18:58 2019 -0500
+++ b/ChangeLog Fri Aug 02 01:41:21 2019 -0500
@@ -27,7 +27,8 @@
necessary. PR #40 (Steve Wills)
* Deleted all existing images.
* Deprecated docker/import and docker/export and replaced them with
- * convey/import and convey/export.
+ convey/import and convey/export. + * Only create a network if we have a run task. * Write warning, error, and fatal log messages to stderr. Fixed #156
--- a/plans/plans.go Fri Aug 02 00:18:58 2019 -0500
+++ b/plans/plans.go Fri Aug 02 01:41:21 2019 -0500
@@ -27,6 +27,7 @@
"bitbucket.org/rw_grim/convey/docker"
"bitbucket.org/rw_grim/convey/environment"
"bitbucket.org/rw_grim/convey/logging"
+ "bitbucket.org/rw_grim/convey/network" "bitbucket.org/rw_grim/convey/runtime"
"bitbucket.org/rw_grim/convey/stages"
"bitbucket.org/rw_grim/convey/tasks"
@@ -43,42 +44,68 @@
Environment yaml.StringOrSlice `yaml:"environment"`
Stages []stages.Stage `yaml:"stages"`
Merge bool `yaml:"merge"`
+func (p *Plan) haveRunTask(taskMap map[string]tasks.Task) bool { + for _, stage := range p.Stages { + for _, taskName := range stage.Tasks { + task := taskMap[taskName] + if _, isRun := task.(*docker.Run); isRun { -func (p *Plan) setup(logger *log.Entry, rt *runtime.Runtime) error {
+func (p *Plan) setup(rt *runtime.Runtime, taskMap map[string]tasks.Task) error { + if p.haveRunTask(taskMap) { + network, err := p.createNetwork(rt) + p.logger.Fatal("failed to create network") + rt.State.Network = network + p.logger.Infof("created network %s", rt.State.Network.Name()) +func (p *Plan) createNetwork(rt *runtime.Runtime) (network.Network, error) { - logger.Info("creating network...")
+ p.logger.Info("creating network...") network, err := docker.NewNetwork(rt)
- logger.Fatal("failed to create network")
- rt.State.Network = network
- logger.Infof("created network %s", rt.State.Network.Name())
rt.Cleanup(func(logger *log.Entry) {
- logger.Infof("removing network %s", rt.State.Network.Name())
+ p.logger.Infof("removing network %s", rt.State.Network.Name()) if netErr := rt.State.Network.Destroy(); netErr != nil {
- logger.Fatalf("failed to remove network %s: %s", rt.State.Network.Name(), netErr)
+ p.logger.Fatalf("failed to remove network %s: %s", rt.State.Network.Name(), netErr) - logger.Infof("removed network %s", rt.State.Network.Name())
+ p.logger.Infof("removed network %s", rt.State.Network.Name())
// Execute runs the plan.
func (p *Plan) Execute(path string, tasks map[string]tasks.Task, env *environment.Environment, rt *runtime.Runtime) error {
planEnv := env.Copy().Merge(rt.Environment).MergeSlice(p.Environment)
- logger := logging.NewAdapter(path)
+ p.logger = logging.NewAdapter(path) - if err := p.setup(logger, rt); err != nil {
+ if err := p.setup(rt, tasks); err != nil { @@ -104,7 +131,7 @@
elapsed := time.Since(start)
rt.State.PlanTimeout -= elapsed
- logger.Debugf("remaining plantime: %s", rt.State.PlanTimeout)
+ p.logger.Debugf("remaining plantime: %s", rt.State.PlanTimeout) stageLogger.Infof("stage finished [%s]", elapsed.Round(10*time.Millisecond))