Commit 1959abe

Eric Bower  ·  2026-08-09 11:43:44 -0400 EDT
parent fb2b232
fix: rsync dest
1 files changed,  +13, -9
+13, -9
 1@@ -1743,21 +1743,22 @@ func syncJobArtifacts(cfg *Cfg, repoName, jobID string, log *slog.Logger) error
 2 		}
 3 		sshArgs = fmt.Sprintf("-F ~/.ssh/config -i %s%s", cfg.KeyLocation, certFile)
 4 	}
 5-	// Source is jobDir (without trailing slash) so rsync creates
 6-	// the jobID subdirectory inside the destination folder.
 7+	// Source is jobDir (with trailing slash) so rsync copies
 8+	// the job's artifact contents directly into event.ArtifactDest.
 9 	dest := event.ArtifactDest
10 	if !strings.HasSuffix(dest, "/") {
11 		dest += "/"
12 	}
13+	srcDir := strings.TrimSuffix(jobDir, "/") + "/"
14 	var cmd *exec.Cmd
15 	if sshArgs != "" {
16-		cmd = exec.Command("rsync", "-e", sshArgs, "-rv", jobDir, dest)
17+		cmd = exec.Command("rsync", "-e", sshArgs, "-rv", srcDir, dest)
18 	} else {
19-		cmd = exec.Command("rsync", "-rv", jobDir, dest)
20+		cmd = exec.Command("rsync", "-rv", srcDir, dest)
21 	}
22 	rsyncCmd := fmt.Sprintf("rsync %s %s %s",
23 		strings.TrimLeft(cmd.Args[1], "-"),
24-		jobDir, dest)
25+		srcDir, dest)
26 	log.Info("rsync", "cmd", rsyncCmd)
27 	return runCmd(cmd, log)
28 }
29@@ -2227,6 +2228,10 @@ func runLocal(cfg *Cfg, dest string) error {
30 		_ = os.Setenv(key, val)
31 	}
32 
33+	if dest != "" {
34+		eventData.ArtifactDest = strings.TrimSuffix(dest, "/") + "/" + eventData.JobID
35+	}
36+
37 	// Auto-detect git commit SHA and branch if not explicitly provided via -e
38 	if eventData.Commit == "" {
39 		eventData.Commit = detectGitCommit(cwd)
40@@ -2326,12 +2331,11 @@ func runLocal(cfg *Cfg, dest string) error {
41 
42 	// Sync to destination if specified
43 	if dest != "" {
44-		targetDest := strings.TrimSuffix(dest, "/") + "/" + jobID
45-		fmt.Fprintf(os.Stdout, "🔄 rsyncing artifacts to %s...\n", dest) //nolint:errcheck
46-		if err := syncJobArtifacts(cfg, eventData.Name, jobID, log); err != nil {
47+		fmt.Fprintf(os.Stdout, "🔄 rsyncing artifacts to %s...\n", eventData.ArtifactDest) //nolint:errcheck
48+		if err := syncJobArtifacts(cfg, eventData.Name, eventData.JobID, log); err != nil {
49 			return fmt.Errorf("sync artifacts: %w", err)
50 		}
51-		fmt.Fprintf(os.Stdout, "✅ artifacts rsynced to %s\n", targetDest) //nolint:errcheck
52+		fmt.Fprintf(os.Stdout, "✅ artifacts rsynced to %s\n", eventData.ArtifactDest) //nolint:errcheck
53 	}
54 
55 	return nil