diff options
Diffstat (limited to 'build')
-rw-r--r-- | build/ci.go | 41 | ||||
-rw-r--r-- | build/dput-launchpad.cf | 8 |
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 }} |