fix: copy the specified Procfile into place at the earliest possibility
This commit is contained in:
15
plugins/ps/.gitignore
vendored
15
plugins/ps/.gitignore
vendored
@@ -1,12 +1,13 @@
|
||||
/app-restart
|
||||
/commands
|
||||
/subcommands/*
|
||||
/triggers/*
|
||||
/triggers
|
||||
/proxy-*
|
||||
/core-post-deploy
|
||||
/core-post-extract
|
||||
/install
|
||||
/post-*
|
||||
/report
|
||||
/pre-*
|
||||
/procfile-*
|
||||
/app-restart
|
||||
/core-post-deploy
|
||||
/proxy-*
|
||||
/report
|
||||
/subcommands/*
|
||||
/triggers
|
||||
/triggers/*
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
SUBCOMMANDS = subcommands/inspect subcommands/rebuild subcommands/report subcommands/restart subcommands/restore subcommands/retire subcommands/scale subcommands/set subcommands/start subcommands/stop
|
||||
TRIGGERS = triggers/app-restart triggers/core-post-deploy triggers/install triggers/post-app-clone triggers/post-app-clone-setup triggers/post-app-rename triggers/post-app-rename-setup triggers/post-create triggers/post-delete triggers/post-extract triggers/post-stop triggers/pre-deploy triggers/procfile-extract triggers/procfile-get-command triggers/procfile-remove triggers/report
|
||||
TRIGGERS = triggers/app-restart triggers/core-post-deploy triggers/core-post-extract triggers/install triggers/post-app-clone triggers/post-app-clone-setup triggers/post-app-rename triggers/post-app-rename-setup triggers/post-create triggers/post-delete triggers/post-extract triggers/post-stop triggers/pre-deploy triggers/procfile-extract triggers/procfile-get-command triggers/procfile-remove triggers/report
|
||||
BUILD = commands subcommands triggers
|
||||
PLUGIN_NAME = ps
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ func canScaleApp(appName string) bool {
|
||||
|
||||
func extractProcfile(appName, image string) error {
|
||||
destination := getProcfilePath(appName)
|
||||
common.CopyFromImage(appName, image, reportComputedProcfilePath(appName), destination)
|
||||
common.CopyFromImage(appName, image, "Procfile", destination)
|
||||
if !common.FileExists(destination) {
|
||||
common.LogInfo1Quiet("No Procfile found in app image")
|
||||
return nil
|
||||
|
||||
@@ -8,8 +8,9 @@ require (
|
||||
github.com/dokku/dokku/plugins/config v0.0.0-00010101000000-000000000000
|
||||
github.com/dokku/dokku/plugins/docker-options v0.0.0-00010101000000-000000000000
|
||||
github.com/gofrs/flock v0.8.0
|
||||
github.com/otiai10/copy v1.6.0
|
||||
github.com/ryanuber/columnize v1.1.2-0.20190319233515-9e6335e58db3
|
||||
github.com/spf13/pflag v1.0.5 // indirect
|
||||
github.com/spf13/pflag v1.0.5 // indirect
|
||||
)
|
||||
|
||||
replace github.com/dokku/dokku/plugins/common => ../common
|
||||
|
||||
@@ -8,6 +8,12 @@ github.com/gofrs/flock v0.8.0/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14j
|
||||
github.com/joho/godotenv v1.2.0 h1:vGTvz69FzUFp+X4/bAkb0j5BoLC+9bpqTWY8mjhA9pc=
|
||||
github.com/joho/godotenv v1.2.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg=
|
||||
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8=
|
||||
github.com/otiai10/copy v1.6.0 h1:IinKAryFFuPONZ7cm6T6E2QX/vcJwSnlaA5lfoaXIiQ=
|
||||
github.com/otiai10/copy v1.6.0/go.mod h1:XWfuS3CrI0R6IE0FbgHsEazaXO8G0LpMp9o8tos0x4E=
|
||||
github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE=
|
||||
github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6j4vs=
|
||||
github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo=
|
||||
github.com/otiai10/mint v1.3.2/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc=
|
||||
github.com/ryanuber/columnize v1.1.2-0.20190319233515-9e6335e58db3 h1:utdYOikI1XjNtTFGCwSM6OmFJblU4ld4gACoJsbadJg=
|
||||
github.com/ryanuber/columnize v1.1.2-0.20190319233515-9e6335e58db3/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
|
||||
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
|
||||
|
||||
@@ -24,6 +24,10 @@ func main() {
|
||||
case "core-post-deploy":
|
||||
appName := flag.Arg(0)
|
||||
err = ps.TriggerCorePostDeploy(appName)
|
||||
case "core-post-extract":
|
||||
appName := flag.Arg(0)
|
||||
sourceWorkDir := flag.Arg(1)
|
||||
err = ps.TriggerCorePostExtract(appName, sourceWorkDir)
|
||||
case "install":
|
||||
err = ps.TriggerInstall()
|
||||
case "post-app-clone":
|
||||
|
||||
@@ -3,6 +3,7 @@ package ps
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"path"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
@@ -10,6 +11,7 @@ import (
|
||||
"github.com/dokku/dokku/plugins/common"
|
||||
"github.com/dokku/dokku/plugins/config"
|
||||
dockeroptions "github.com/dokku/dokku/plugins/docker-options"
|
||||
"github.com/otiai10/copy"
|
||||
)
|
||||
|
||||
// TriggerAppRestart restarts an app
|
||||
@@ -29,6 +31,29 @@ func TriggerCorePostDeploy(appName string) error {
|
||||
})
|
||||
}
|
||||
|
||||
// TriggerCorePostExtract ensures that the main Procfile is the one specified by procfile-path
|
||||
func TriggerCorePostExtract(appName string, sourceWorkDir string) error {
|
||||
procfilePath := strings.Trim(reportComputedProcfilePath(appName), "/")
|
||||
if procfilePath == "" || procfilePath == "Procfile" {
|
||||
return nil
|
||||
}
|
||||
|
||||
if err := os.Remove(path.Join(sourceWorkDir, "Procfile")); err != nil {
|
||||
return fmt.Errorf("Unable to remove existing Procfile: %v", err.Error())
|
||||
}
|
||||
|
||||
fullProcfilePath := path.Join(sourceWorkDir, procfilePath)
|
||||
if !common.FileExists(fullProcfilePath) {
|
||||
return nil
|
||||
}
|
||||
|
||||
if err := copy.Copy(fullProcfilePath, path.Join(sourceWorkDir, "Procfile")); err != nil {
|
||||
return fmt.Errorf("Unable to move specified Procfile into place: %v", err.Error())
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// TriggerInstall initializes app restart policies
|
||||
func TriggerInstall() error {
|
||||
if err := common.PropertySetup("ps"); err != nil {
|
||||
@@ -142,7 +167,7 @@ func TriggerPostDelete(appName string) error {
|
||||
|
||||
// TriggerPostExtract validates a procfile
|
||||
func TriggerPostExtract(appName string, tempWorkDir string) error {
|
||||
procfile := filepath.Join(tempWorkDir, reportComputedProcfilePath(appName))
|
||||
procfile := filepath.Join(tempWorkDir, "Procfile")
|
||||
if !common.FileExists(procfile) {
|
||||
return nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user