aboutsummaryrefslogtreecommitdiffstats
path: root/build
diff options
context:
space:
mode:
Diffstat (limited to 'build')
-rw-r--r--build/ci.go41
-rw-r--r--build/dput-launchpad.cf8
2 files changed, 22 insertions, 27 deletions
diff --git a/build/ci.go b/build/ci.go
index 6ca08d9ef..11fa759da 100644
--- a/build/ci.go
+++ b/build/ci.go
@@ -511,41 +511,44 @@ func doDebianSource(cmdline []string) {
debuild.Dir = pkgdir
build.MustRun(debuild)
- changes := fmt.Sprintf("%s_%s_source.changes", meta.Name(), meta.VersionString())
- changes = filepath.Join(*workdir, changes)
+ var (
+ basename = fmt.Sprintf("%s_%s", meta.Name(), meta.VersionString())
+ source = filepath.Join(*workdir, basename+".tar.xz")
+ dsc = filepath.Join(*workdir, basename+".dsc")
+ changes = filepath.Join(*workdir, basename+"_source.changes")
+ )
if *signer != "" {
build.MustRunCommand("debsign", changes)
}
if *upload != "" {
- uploadDebianSource(*workdir, *upload, *sshUser, changes)
+ ppaUpload(*workdir, *upload, *sshUser, []string{source, dsc, changes})
}
}
}
}
-func uploadDebianSource(workdir, ppa, sshUser, changes string) {
- // Create the dput config file.
- dputConfig := filepath.Join(workdir, "dput.cf")
+func ppaUpload(workdir, ppa, sshUser string, files []string) {
p := strings.Split(ppa, "/")
if len(p) != 2 {
log.Fatal("-upload PPA name must contain single /")
}
- templateData := map[string]string{
- "LaunchpadUser": p[0],
- "LaunchpadPPA": p[1],
- "LaunchpadSSH": sshUser,
+ if sshUser == "" {
+ sshUser = p[0]
}
+ incomingDir := fmt.Sprintf("~%s/ubuntu/%s", p[0], p[1])
+ // Create the SSH identity file if it doesn't exist.
+ var idfile string
if sshkey := getenvBase64("PPA_SSH_KEY"); len(sshkey) > 0 {
- idfile := filepath.Join(workdir, "sshkey")
- ioutil.WriteFile(idfile, sshkey, 0600)
- templateData["IdentityFile"] = idfile
+ idfile = filepath.Join(workdir, "sshkey")
+ if _, err := os.Stat(idfile); os.IsNotExist(err) {
+ ioutil.WriteFile(idfile, sshkey, 0600)
+ }
+ }
+ // Upload
+ dest := sshUser + "@ppa.launchpad.net"
+ if err := build.UploadSFTP(idfile, dest, incomingDir, files); err != nil {
+ log.Fatal(err)
}
- build.Render("build/dput-launchpad.cf", dputConfig, 0644, templateData)
-
- // Run dput to do the upload.
- dput := exec.Command("dput", "-c", dputConfig, "--no-upload-log", ppa, changes)
- dput.Stdin = strings.NewReader("Yes\n") // accept SSH host key
- build.MustRun(dput)
}
func getenvBase64(variable string) []byte {
diff --git a/build/dput-launchpad.cf b/build/dput-launchpad.cf
deleted file mode 100644
index 3063c3c07..000000000
--- a/build/dput-launchpad.cf
+++ /dev/null
@@ -1,8 +0,0 @@
-[{{.LaunchpadUser}}/{{.LaunchpadPPA}}]
-fqdn = ppa.launchpad.net
-method = sftp
-incoming = ~{{.LaunchpadUser}}/ubuntu/{{.LaunchpadPPA}}/
-login = {{.LaunchpadSSH}}
-{{ if .IdentityFile }}
- ssh_options = IdentityFile {{.IdentityFile}}
-{{ end }}