code: func (Pipe) Publish(ctx *context.Context) error {
  	if len(ctx.Config.S3) == 0 {
  		return pipe.Skip("s3 section is not configured")
  	}
  	var g = semerrgroup.New(ctx.Parallelism)
  	for _, conf := range ctx.Config.S3 {
  		conf := conf
  		g.Go(func() error {
  			return upload(ctx, conf)
  		})
  	}
  	return g.Wait()
  }
docs: // Publish to S3