internal/relui: write to "ready" file, fix signing arg

Simply opening and closing a file isn't enough to create it.

Also, don't use path.Join on URLs: it converts gs://foo to gs:/foo which
is a very different URL.

For golang/go#51797.

Change-Id: Ic681e151f2a2258f93e055564589d4440358e954
Reviewed-on: https://go-review.googlesource.com/c/build/+/412390
Auto-Submit: Heschi Kreinick <heschi@google.com>
Run-TryBot: Heschi Kreinick <heschi@google.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
diff --git a/internal/relui/workflows.go b/internal/relui/workflows.go
index 9aca4fd..47bf095 100644
--- a/internal/relui/workflows.go
+++ b/internal/relui/workflows.go
@@ -571,7 +571,7 @@
 }
 
 func (tasks *BuildReleaseTasks) startSigningCommand(ctx *workflow.TaskContext, version string) (string, error) {
-	args := fmt.Sprintf("--relui_staging=%q", path.Join(tasks.ScratchURL, signingStagingDir(ctx, version)))
+	args := fmt.Sprintf("--relui_staging=%q", tasks.ScratchURL+"/"+signingStagingDir(ctx, version))
 	ctx.Printf("run signer with " + args)
 	return args, nil
 }
@@ -614,6 +614,9 @@
 	if err != nil {
 		return nil, err
 	}
+	if _, err := out.Write([]byte("ready")); err != nil {
+		return nil, err
+	}
 	if err := out.Close(); err != nil {
 		return nil, err
 	}