Files
dokku/plugins/app-json/triggers.go
Jose Diaz-Gonzalez f7ef14d737 feat: add initial scheduled task implementation
This functionality enables users to manage a global crontab for the Dokku user that contains all scheduled tasks across all apps. Alternative schedulers can implement cron tasks as desired.
2021-01-20 14:49:48 -05:00

70 lines
1.6 KiB
Go

package appjson
import (
"os"
"path/filepath"
"github.com/dokku/dokku/plugins/common"
)
// TriggerInstall initializes app restart policies
func TriggerInstall() error {
directory := filepath.Join(common.MustGetEnv("DOKKU_LIB_ROOT"), "data", "app-json")
if err := os.MkdirAll(directory, 0755); err != nil {
return err
}
if err := common.SetPermissions(directory, 0755); err != nil {
return err
}
return nil
}
// TriggerPostDelete destroys the app-json data for a given app container
func TriggerPostDelete(appName string) error {
directory := filepath.Join(common.MustGetEnv("DOKKU_LIB_ROOT"), "data", "app-json", appName)
dataErr := os.RemoveAll(directory)
propertyErr := common.PropertyDestroy("app-json", appName)
if dataErr != nil {
return dataErr
}
return propertyErr
}
// TriggerPostDeploy is a trigger to execute the postdeploy deployment task
func TriggerPostDeploy(appName string, imageTag string) error {
image, err := common.GetDeployingAppImageName(appName, imageTag, "")
if err != nil {
return err
}
if err := executeScript(appName, image, imageTag, "postdeploy"); err != nil {
return err
}
return nil
}
// TriggerPreDeploy is a trigger to execute predeploy and release deployment tasks
func TriggerPreDeploy(appName string, imageTag string) error {
image, err := common.GetDeployingAppImageName(appName, imageTag, "")
if err != nil {
return err
}
if err := refreshAppJSON(appName, image); err != nil {
return err
}
if err := executeScript(appName, image, imageTag, "predeploy"); err != nil {
return err
}
if err := executeScript(appName, image, imageTag, "release"); err != nil {
return err
}
return nil
}