mirror of https://github.com/perkeep/perkeep.git
misc/docker: fix release tools
Change-Id: Ie7e75d88a4fbc7df753aedbfb00d77d1899962e1
This commit is contained in:
parent
76e61108c7
commit
507684d5ee
|
@ -190,11 +190,11 @@ func zipSource(ctxDir string) {
|
|||
}
|
||||
setReleaseTarballName()
|
||||
// can't use os.Rename because invalid cross-device link error likely
|
||||
cmd = exec.Command("mv", filepath.Join(ctxDir, "camlistore-src.zip"), releaseTarball)
|
||||
cmd = exec.Command("mv", filepath.Join(ctxDir, "perkeep-src.zip"), releaseTarball)
|
||||
cmd.Stdout = os.Stdout
|
||||
cmd.Stderr = os.Stderr
|
||||
if err := cmd.Run(); err != nil {
|
||||
log.Fatalf("Error moving source zip from %v to %v: %v", filepath.Join(ctxDir, "camlistore-src.zip"), releaseTarball, err)
|
||||
log.Fatalf("Error moving source zip from %v to %v: %v", filepath.Join(ctxDir, "perkeep-src.zip"), releaseTarball, err)
|
||||
}
|
||||
fmt.Printf("Perkeep source successfully zipped in %v\n", releaseTarball)
|
||||
}
|
||||
|
@ -253,13 +253,13 @@ func publicACL(proj string) []storage.ACLRule {
|
|||
}
|
||||
|
||||
// uploadReleaseTarball uploads the generated tarball of binaries in
|
||||
// camlistore-release/VERSION/camlistoreVERSION-REV-CONTENTS.EXT. It then makes a copy in
|
||||
// the same bucket and path, as camlistoreVERSION-CONTENTS.EXT.
|
||||
// camlistore-release/VERSION/perkeepVERSION-REV-CONTENTS.EXT. It then makes a copy in
|
||||
// the same bucket and path, as perkeepVERSION-CONTENTS.EXT.
|
||||
func uploadReleaseTarball() {
|
||||
proj := "camlistore-website"
|
||||
bucket := "camlistore-release"
|
||||
tarball := *flagVersion + "/" + filepath.Base(releaseTarball)
|
||||
versionedTarball := strings.Replace(tarball, "camlistore"+*flagVersion, "camlistore"+*flagVersion+"-"+rev(), 1)
|
||||
versionedTarball := strings.Replace(tarball, "perkeep"+*flagVersion, "perkeep"+*flagVersion+"-"+rev(), 1)
|
||||
|
||||
log.Printf("Uploading %s/%s ...", bucket, versionedTarball)
|
||||
|
||||
|
@ -420,9 +420,9 @@ func setReleaseTarballName() {
|
|||
extension = ".tar.gz"
|
||||
}
|
||||
if *flagVersion != "" {
|
||||
filename = "camlistore" + *flagVersion + "-" + contents + extension
|
||||
filename = "perkeep" + *flagVersion + "-" + contents + extension
|
||||
} else {
|
||||
filename = "camlistore-" + contents + extension
|
||||
filename = "perkeep-" + contents + extension
|
||||
}
|
||||
releaseTarball = path.Join(dockDir, "release", filename)
|
||||
}
|
||||
|
|
|
@ -46,8 +46,8 @@ var (
|
|||
|
||||
func usage() {
|
||||
fmt.Fprintf(os.Stderr, "Usage:\n")
|
||||
fmt.Fprintf(os.Stderr, "%s --rev=camlistore_revision\n", os.Args[0])
|
||||
fmt.Fprintf(os.Stderr, "%s --rev=WIP:/path/to/camli/source/dir\n", os.Args[0])
|
||||
fmt.Fprintf(os.Stderr, "%s --rev=perkeep_revision\n", os.Args[0])
|
||||
fmt.Fprintf(os.Stderr, "%s --rev=WIP:/path/to/perkeep/source/dir\n", os.Args[0])
|
||||
flag.PrintDefaults()
|
||||
example(os.Args[0])
|
||||
os.Exit(1)
|
||||
|
@ -55,8 +55,8 @@ func usage() {
|
|||
|
||||
func example(program string) {
|
||||
fmt.Fprintf(os.Stderr, "Examples:\n")
|
||||
fmt.Fprintf(os.Stderr, "\tdocker run --rm --volume=/tmp/camli-build/camlistore.org:/OUT camlistore/go %s --rev=4e8413c5012c\n", program)
|
||||
fmt.Fprintf(os.Stderr, "\tdocker run --rm --volume=/tmp/camli-build/camlistore.org:/OUT --volume=~/camlistore.org:/IN camlistore/go %s --rev=WIP:/IN\n", program)
|
||||
fmt.Fprintf(os.Stderr, "\tdocker run --rm --volume=/tmp/camli-build/perkeep.org:/OUT perkeep/go %s --rev=4e8413c5012c\n", program)
|
||||
fmt.Fprintf(os.Stderr, "\tdocker run --rm --volume=/tmp/camli-build/perkeep.org:/OUT --volume=~/perkeep.org:/IN perkeep/go %s --rev=WIP:/IN\n", program)
|
||||
}
|
||||
|
||||
func isWIP() bool {
|
||||
|
@ -96,23 +96,23 @@ func getCamliSrc() {
|
|||
}
|
||||
// we insert the version in the VERSION file, so make.go does no need git
|
||||
// in the container to detect the Perkeep version.
|
||||
check(os.Chdir("/gopath/src/camlistore.org"))
|
||||
check(os.Chdir("/gopath/src/perkeep.org"))
|
||||
check(ioutil.WriteFile("VERSION", []byte(version()), 0777))
|
||||
}
|
||||
|
||||
func mirrorCamliSrc(srcDir string) {
|
||||
check(os.MkdirAll("/gopath/src", 0777))
|
||||
cmd := exec.Command("cp", "-a", srcDir, "/gopath/src/camlistore.org")
|
||||
cmd := exec.Command("cp", "-a", srcDir, "/gopath/src/perkeep.org")
|
||||
cmd.Stdout = os.Stdout
|
||||
cmd.Stderr = os.Stderr
|
||||
if err := cmd.Run(); err != nil {
|
||||
log.Fatalf("Error mirroring camlistore source from %v: %v", srcDir, err)
|
||||
log.Fatalf("Error mirroring perkeep source from %v: %v", srcDir, err)
|
||||
}
|
||||
}
|
||||
|
||||
func fetchCamliSrc() {
|
||||
check(os.MkdirAll("/gopath/src/camlistore.org", 0777))
|
||||
check(os.Chdir("/gopath/src/camlistore.org"))
|
||||
check(os.MkdirAll("/gopath/src/perkeep.org", 0777))
|
||||
check(os.Chdir("/gopath/src/perkeep.org"))
|
||||
|
||||
res, err := http.Get("https://camlistore.googlesource.com/camlistore/+archive/" + *flagRev + ".tar.gz")
|
||||
check(err)
|
||||
|
@ -145,7 +145,7 @@ func fetchCamliSrc() {
|
|||
}
|
||||
|
||||
func build() {
|
||||
check(os.Chdir("/gopath/src/camlistore.org"))
|
||||
check(os.Chdir("/gopath/src/perkeep.org"))
|
||||
oldPath := os.Getenv("PATH")
|
||||
os.Setenv("GOPATH", "/gopath")
|
||||
os.Setenv("PATH", "/usr/local/go/bin:"+oldPath)
|
||||
|
@ -156,7 +156,7 @@ func build() {
|
|||
if err := cmd.Run(); err != nil {
|
||||
log.Fatalf("Error building all Perkeep binaries for %v in go container: %v", *buildOS, err)
|
||||
}
|
||||
srcDir := "bin"
|
||||
srcDir := "/gopath/bin"
|
||||
if *buildOS != "linux" {
|
||||
// TODO(mpl): probably bail early if GOARCH != amd64. Or do we want to distribute for other arches?
|
||||
srcDir = path.Join(srcDir, *buildOS+"_amd64")
|
||||
|
|
|
@ -45,7 +45,7 @@ var (
|
|||
flagSanity = flag.Bool("sanity", true, "Check before making the zip that its contents pass the \"go run make.go\" test.")
|
||||
)
|
||||
|
||||
const tmpSource = "/tmp/camlistore.org"
|
||||
const tmpSource = "/tmp/perkeep.org"
|
||||
|
||||
var (
|
||||
// Everything that should be included in the release.
|
||||
|
@ -53,7 +53,6 @@ var (
|
|||
rootNames = map[string]bool{
|
||||
"app": true,
|
||||
"AUTHORS": false,
|
||||
"bin": true,
|
||||
"BUILDING": false,
|
||||
"clients": true,
|
||||
"cmd": true,
|
||||
|
@ -64,21 +63,22 @@ var (
|
|||
"dev": true,
|
||||
"doc": true,
|
||||
"Dockerfile": false,
|
||||
"Gopkg.lock": false,
|
||||
"Gopkg.toml": false,
|
||||
"internal": true,
|
||||
"lib": true,
|
||||
"Makefile": false,
|
||||
"make.go": false,
|
||||
"misc": true,
|
||||
"old": true,
|
||||
"pkg": true,
|
||||
"README": false,
|
||||
"README.md": false,
|
||||
"server": true,
|
||||
"TESTS": false,
|
||||
"TODO": false,
|
||||
"vendor": true,
|
||||
"website": true,
|
||||
}
|
||||
tarballSrc = path.Join(*flagOutDir, "camlistore.org")
|
||||
tarballSrc = path.Join(*flagOutDir, "src", "perkeep.org")
|
||||
)
|
||||
|
||||
func usage() {
|
||||
|
@ -90,8 +90,8 @@ func usage() {
|
|||
|
||||
func example() {
|
||||
fmt.Fprintf(os.Stderr, "Examples:\n")
|
||||
fmt.Fprintf(os.Stderr, "\tdocker run --rm --volume /tmp/camlirelease:/OUT --volume $GOPATH/src/camlistore.org/misc/docker/release/cut-source.go:/usr/local/bin/cut-source.go:ro --volume $GOPATH/src/camlistore.org:/IN:ro camlistore/go /usr/local/go/bin/go run /usr/local/bin/zip-source.go --rev WIP:/IN\n")
|
||||
fmt.Fprintf(os.Stderr, "\tdocker run --rm --volume /tmp/camlirelease:/OUT --volume $GOPATH/src/camlistore.org/misc/docker/release/zip-source.go:/usr/local/bin/cut-source.go:ro camlistore/go /usr/local/go/bin/go run /usr/local/bin/cut-source.go --rev=4e8413c5012c\n")
|
||||
fmt.Fprintf(os.Stderr, "\tdocker run --rm --volume /tmp/camlirelease:/OUT --volume $GOPATH/src/perkeep.org/misc/docker/release/cut-source.go:/usr/local/bin/cut-source.go:ro --volume $GOPATH/src/perkeep.org:/IN:ro perkeep/go /usr/local/go/bin/go run /usr/local/bin/zip-source.go --rev WIP:/IN\n")
|
||||
fmt.Fprintf(os.Stderr, "\tdocker run --rm --volume /tmp/camlirelease:/OUT --volume $GOPATH/src/perkeep.org/misc/docker/release/zip-source.go:/usr/local/bin/cut-source.go:ro perkeep/go /usr/local/go/bin/go run /usr/local/bin/cut-source.go --rev=4e8413c5012c\n")
|
||||
}
|
||||
|
||||
func isWIP() bool {
|
||||
|
@ -139,7 +139,7 @@ func mirrorCamliSrc(srcDir string) {
|
|||
cmd.Stdout = os.Stdout
|
||||
cmd.Stderr = os.Stderr
|
||||
if err := cmd.Run(); err != nil {
|
||||
log.Fatalf("Error mirroring camlistore source from %v: %v", srcDir, err)
|
||||
log.Fatalf("Error mirroring perkeep source from %v: %v", srcDir, err)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -260,29 +260,23 @@ func checkBuild() {
|
|||
check(os.Chdir(tarballSrc))
|
||||
check(os.Setenv("PATH", os.Getenv("PATH")+":/usr/local/go/bin/"))
|
||||
check(os.Setenv("CAMLI_GOPHERJS_GOROOT", "/usr/local/go"))
|
||||
check(os.Setenv("GOPATH", *flagOutDir))
|
||||
cmd := exec.Command("go", "run", "make.go")
|
||||
cmd.Stdout = os.Stdout
|
||||
cmd.Stderr = os.Stderr
|
||||
if err := cmd.Run(); err != nil {
|
||||
log.Fatalf("could not build Perkeep from tarball contents: %v", err)
|
||||
}
|
||||
// cleanup
|
||||
check(os.RemoveAll(path.Join(tarballSrc, "tmp")))
|
||||
binDir := path.Join(tarballSrc, "bin")
|
||||
check(os.Rename(path.Join(binDir, "README"), "README.bin"))
|
||||
check(os.RemoveAll(binDir))
|
||||
check(os.MkdirAll(binDir, 0755))
|
||||
check(os.Rename("README.bin", path.Join(binDir, "README")))
|
||||
}
|
||||
|
||||
func pack() {
|
||||
zipFile := path.Join(*flagOutDir, "camlistore-src.zip")
|
||||
check(os.Chdir(*flagOutDir))
|
||||
zipFile := path.Join(*flagOutDir, "perkeep-src.zip")
|
||||
check(os.Chdir(filepath.Join(*flagOutDir, "src")))
|
||||
fw, err := os.Create(zipFile)
|
||||
check(err)
|
||||
w := zip.NewWriter(fw)
|
||||
|
||||
check(filepath.Walk("camlistore.org", func(filePath string, fi os.FileInfo, err error) error {
|
||||
check(filepath.Walk("perkeep.org", func(filePath string, fi os.FileInfo, err error) error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
|
@ -56,7 +56,7 @@ var (
|
|||
flagRev = flag.String("rev", "", "Perkeep revision to build (tag or commit hash). For development purposes, you can instead specify the path to a local Perkeep source tree from which to build, with the form \"WIP:/path/to/dir\".")
|
||||
flagDate = flag.String("date", "", "The release date to use in the file names to be uploaded, in the YYYYMMDD format. Defaults to today's date.")
|
||||
flagUpload = flag.Bool("upload", true, "Upload all the generated tarballs and zip archives.")
|
||||
flagSkipGen = flag.Bool("skipgen", false, "Do not recreate the release tarballs, and directly use the ones found in camlistore.org/misc/docker/release. Use -upload=false and -skipgen=true to only generate the monthly release page.")
|
||||
flagSkipGen = flag.Bool("skipgen", false, "Do not recreate the release tarballs, and directly use the ones found in perkeep.org/misc/docker/release. Use -upload=false and -skipgen=true to only generate the monthly release page.")
|
||||
flagStatsFrom = flag.String("stats_from", "", "Also generate commit statistics on the release page, starting from the given commit, and ending at the one given as -rev.")
|
||||
// TODO(mpl): make sanity run the tests too, once they're more reliable.
|
||||
flagSanity = flag.Bool("sanity", true, "Verify 'go run make.go' succeeds when building the source tarball. Abort everything if not.")
|
||||
|
@ -110,7 +110,7 @@ func genDownloads() error {
|
|||
wg.Add(1)
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
upload(filepath.Join(releaseDir, "camlistore-src.zip"))
|
||||
upload(filepath.Join(releaseDir, "perkeep-src.zip"))
|
||||
}()
|
||||
|
||||
// gen the binaries tarballs:
|
||||
|
@ -134,7 +134,7 @@ func genDownloads() error {
|
|||
wg.Add(1)
|
||||
go func(osType string) {
|
||||
defer wg.Done()
|
||||
filename := "camlistore-" + osType + ".tar.gz"
|
||||
filename := "perkeep-" + osType + ".tar.gz"
|
||||
if osType == "windows" {
|
||||
filename = strings.Replace(filename, ".tar.gz", ".zip", 1)
|
||||
}
|
||||
|
@ -149,7 +149,7 @@ func upload(srcPath string) {
|
|||
if !*flagUpload {
|
||||
return
|
||||
}
|
||||
destName := strings.Replace(filepath.Base(srcPath), "camlistore", "camlistore-"+releaseDate.Format(fileDateFormat), 1)
|
||||
destName := strings.Replace(filepath.Base(srcPath), "perkeep", "perkeep-"+releaseDate.Format(fileDateFormat), 1)
|
||||
versionedTarball := "monthly/" + destName
|
||||
|
||||
log.Printf("Uploading %s/%s ...", bucket, versionedTarball)
|
||||
|
@ -278,7 +278,7 @@ Perkeep version <a href='https://github.com/perkeep/perkeep/commit/{{.CamliVersi
|
|||
// TODO(mpl): keep goVersion automatically in sync with version in
|
||||
// misc/docker/go. Or guess it from somewhere else.
|
||||
|
||||
const goVersion = "1.8"
|
||||
const goVersion = "1.10"
|
||||
|
||||
// listDownloads lists all the files found in the monthly repo, and from them,
|
||||
// builds the data that we'll feed to the template to generate the monthly
|
||||
|
@ -340,7 +340,7 @@ func listDownloads() (*ReleaseData, error) {
|
|||
nameToSum = make(map[string]string)
|
||||
)
|
||||
fileDate := releaseDate.Format(fileDateFormat)
|
||||
log.Printf("Now looking for monthly/camlistore-%s-* files in bucket", fileDate)
|
||||
log.Printf("Now looking for monthly/perkeep-%s-* files in bucket", fileDate)
|
||||
objIt := stoClient.Bucket(bucket).Objects(ctx, &storage.Query{Prefix: "monthly/"})
|
||||
for {
|
||||
attrs, err := objIt.Next()
|
||||
|
@ -423,7 +423,7 @@ func genMonthlyPage(releaseData *ReleaseData) error {
|
|||
|
||||
func usage() {
|
||||
fmt.Fprintf(os.Stderr, "Usage:\n")
|
||||
fmt.Fprintf(os.Stderr, "%s [-rev camlistore_revision | -rev WIP:/path/to/camli/source]\n", os.Args[0])
|
||||
fmt.Fprintf(os.Stderr, "%s [-rev perkeep_revision | -rev WIP:/path/to/camli/source]\n", os.Args[0])
|
||||
flag.PrintDefaults()
|
||||
os.Exit(1)
|
||||
}
|
||||
|
@ -614,9 +614,9 @@ func main() {
|
|||
checkFlags()
|
||||
|
||||
var err error
|
||||
camDir, err = osutil.GoPackagePath("camlistore.org")
|
||||
camDir, err = osutil.GoPackagePath("perkeep.org")
|
||||
if err != nil {
|
||||
log.Fatalf("Error looking up camlistore.org dir: %v", err)
|
||||
log.Fatalf("Error looking up perkeep.org dir: %v", err)
|
||||
}
|
||||
|
||||
if err := genDownloads(); err != nil {
|
||||
|
|
Loading…
Reference in New Issue