diff --git a/workflow/executor/executor.go b/workflow/executor/executor.go
index <HASH>..<HASH> 100644
--- a/workflow/executor/executor.go
+++ b/workflow/executor/executor.go
@@ -8,6 +8,7 @@ import (
 	"fmt"
 	"io"
 	"io/ioutil"
+	"net/url"
 	"os"
 	"os/exec"
 	"os/signal"
@@ -197,7 +198,12 @@ func (we *WorkflowExecutor) SaveArtifacts() error {
 			} else if we.Template.ArchiveLocation.Artifactory != nil {
 				shallowCopy := *we.Template.ArchiveLocation.Artifactory
 				art.Artifactory = &shallowCopy
-				art.Artifactory.URL = path.Join(art.Artifactory.URL, fileName)
+				artifactoryUrl, urlParseErr := url.Parse(art.Artifactory.URL)
+				if urlParseErr != nil {
+					return urlParseErr
+				}
+				artifactoryUrl.Path = path.Join(artifactoryUrl.Path, fileName)
+				art.Artifactory.URL = artifactoryUrl.String()
 			} else {
 				return errors.Errorf(errors.CodeBadRequest, "Unable to determine path to store %s. Archive location provided no information", art.Name)
 			}
parse the artifactory URL before appending the artifact to the path (#<I>)

* parse the artifactory URL before appending the artifact to the path



* fix fmt