mirror of
https://github.com/dokku/dokku.git
synced 2025-12-29 00:25:08 +01:00
Merge pull request #7871 from dokku/remove-dokku-app-type
Remove public exposure of DOKKU_APP_TYPE in favor of builder detected property
This commit is contained in:
@@ -101,7 +101,6 @@ The following config variables have special meanings and can be set in a variety
|
||||
| `DOKKU_APP_PROXY_TYPE` | `nginx` | `dokku proxy:set` | |
|
||||
| `DOKKU_APP_RESTORE` | `1` | `dokku config:set` <br /> `dokku ps:stop` | |
|
||||
| `DOKKU_APP_SHELL` | `/bin/bash` | `dokku config:set` | Allows users to change the default shell used by Dokku for `dokku enter` and execution of deployment tasks. |
|
||||
| `DOKKU_APP_TYPE` | `herokuish` | Auto-detected by using buildpacks or dockerfile | |
|
||||
| `DOKKU_CHECKS_DISABLED` | none | `dokku checks:disable` | |
|
||||
| `DOKKU_CHECKS_ENABLED` | none | `dokku checks:enable` | |
|
||||
| `DOKKU_CHECKS_SKIPPED` | none | `dokku checks:skip` | |
|
||||
|
||||
@@ -10,9 +10,9 @@ trigger-builder-herokuish-docker-args() {
|
||||
local STDIN DOKKU_APP_TYPE DOKKU_APP_USER
|
||||
|
||||
STDIN=$(cat)
|
||||
DOKKU_APP_TYPE=$(config_get "$APP" DOKKU_APP_TYPE || true)
|
||||
DOKKU_APP_USER=$(config_get "$APP" DOKKU_APP_USER || true)
|
||||
DOKKU_APP_USER=${DOKKU_APP_USER:="herokuishuser"}
|
||||
DOKKU_APP_TYPE="$(plugn trigger builder-get-property "$APP" "detected" || true)"
|
||||
DOKKU_APP_USER="$(config_get "$APP" DOKKU_APP_USER || true)"
|
||||
DOKKU_APP_USER="${DOKKU_APP_USER:="herokuishuser"}"
|
||||
|
||||
if [[ "$DOKKU_APP_TYPE" == "herokuish" ]]; then
|
||||
local docker_args="$STDIN --env=USER=${DOKKU_APP_USER}"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
SUBCOMMANDS = subcommands/report subcommands/set
|
||||
TRIGGERS = triggers/builder-detect triggers/builder-get-property triggers/builder-image-is-cnb triggers/builder-image-is-herokuish triggers/core-post-extract triggers/install triggers/post-app-clone-setup triggers/post-app-rename-setup triggers/post-delete triggers/report
|
||||
TRIGGERS = triggers/builder-detect triggers/builder-get-property triggers/builder-image-is-cnb triggers/builder-image-is-herokuish triggers/builder-set-property triggers/core-post-extract triggers/install triggers/post-app-clone-setup triggers/post-app-rename-setup triggers/post-delete triggers/report
|
||||
BUILD = commands subcommands triggers
|
||||
PLUGIN_NAME = builder
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ var (
|
||||
// DefaultProperties is a map of all valid builder properties with corresponding default property values
|
||||
DefaultProperties = map[string]string{
|
||||
"selected": "",
|
||||
"detected": "",
|
||||
"build-dir": "",
|
||||
}
|
||||
|
||||
|
||||
@@ -14,6 +14,7 @@ func ReportSingleApp(appName string, format string, infoFlag string) error {
|
||||
"--builder-computed-selected": reportComputedSelected,
|
||||
"--builder-global-selected": reportGlobalSelected,
|
||||
"--builder-selected": reportSelected,
|
||||
"--builder-detected": reportDetected,
|
||||
"--builder-computed-build-dir": reportComputedBuildDir,
|
||||
"--builder-global-build-dir": reportGlobalBuildDir,
|
||||
"--builder-build-dir": reportBuildDir,
|
||||
@@ -43,6 +44,10 @@ func reportGlobalSelected(appName string) string {
|
||||
return common.PropertyGet("builder", "--global", "selected")
|
||||
}
|
||||
|
||||
func reportDetected(appName string) string {
|
||||
return common.PropertyGet("builder", appName, "detected")
|
||||
}
|
||||
|
||||
func reportSelected(appName string) string {
|
||||
return common.PropertyGet("builder", appName, "selected")
|
||||
}
|
||||
|
||||
@@ -33,6 +33,11 @@ func main() {
|
||||
appName := flag.Arg(0)
|
||||
image := flag.Arg(1)
|
||||
err = builder.TriggerBuilderImageIsHerokuish(appName, image)
|
||||
case "builder-set-property":
|
||||
appName := flag.Arg(0)
|
||||
property := flag.Arg(1)
|
||||
value := flag.Arg(2)
|
||||
err = builder.TriggerBuilderSetProperty(appName, property, value)
|
||||
case "core-post-extract":
|
||||
appName := flag.Arg(0)
|
||||
sourceWorkDir := flag.Arg(1)
|
||||
|
||||
@@ -30,6 +30,11 @@ func CommandReport(appName string, format string, infoFlag string) error {
|
||||
|
||||
// CommandSet set or clear a builder property for an app
|
||||
func CommandSet(appName string, property string, value string) error {
|
||||
if property == "detected" {
|
||||
common.LogWarn("detected is a read-only property")
|
||||
return nil
|
||||
}
|
||||
|
||||
common.CommandPropertySet("builder", appName, property, value, DefaultProperties, GlobalProperties)
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -27,14 +27,23 @@ func TriggerBuilderDetect(appName string) error {
|
||||
|
||||
// TriggerBuilderGetProperty writes the builder key to stdout for a given app container
|
||||
func TriggerBuilderGetProperty(appName string, key string) error {
|
||||
if key != "selected" && key != "build-dir" {
|
||||
return errors.New("Invalid logs property specified")
|
||||
if _, ok := DefaultProperties[key]; !ok {
|
||||
return errors.New("Invalid builder property specified")
|
||||
}
|
||||
|
||||
fmt.Println(common.PropertyGet("builder", appName, key))
|
||||
return nil
|
||||
}
|
||||
|
||||
// TriggerBuilderSetProperty writes the builder key to stdout for a given app container
|
||||
func TriggerBuilderSetProperty(appName string, key string, value string) error {
|
||||
if _, ok := DefaultProperties[key]; !ok {
|
||||
return errors.New("Invalid builder property specified")
|
||||
}
|
||||
|
||||
return common.PropertyWrite("builder", appName, key, value)
|
||||
}
|
||||
|
||||
// TriggerBuilderImageIsCNB prints true if an image is cnb based, false otherwise
|
||||
func TriggerBuilderImageIsCNB(appName string, image string) error {
|
||||
if common.IsImageCnbBased(image) {
|
||||
@@ -99,7 +108,30 @@ func TriggerInstall() error {
|
||||
return fmt.Errorf("Unable to install the builder plugin: %s", err.Error())
|
||||
}
|
||||
|
||||
_, err := common.CallPlugnTrigger(common.PlugnTriggerInput{
|
||||
apps, err := common.UnfilteredDokkuApps()
|
||||
if err != nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
for _, appName := range apps {
|
||||
if common.PropertyExists("builder", appName, "detected") {
|
||||
continue
|
||||
}
|
||||
|
||||
results, err := common.CallPlugnTrigger(common.PlugnTriggerInput{
|
||||
Trigger: "config-get",
|
||||
Args: []string{appName, "DOKKU_APP_TYPE"},
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if results.StdoutContents() != "" {
|
||||
common.PropertyWrite("builder", appName, "detected", results.StdoutContents())
|
||||
}
|
||||
}
|
||||
|
||||
_, err = common.CallPlugnTrigger(common.PlugnTriggerInput{
|
||||
Trigger: "install-builder-prune",
|
||||
})
|
||||
|
||||
|
||||
@@ -670,7 +670,7 @@ dokku_receive() {
|
||||
IMAGE_SOURCE_TYPE="pack"
|
||||
fi
|
||||
|
||||
DOKKU_QUIET_OUTPUT=1 config_set --no-restart "$APP" DOKKU_APP_TYPE="$IMAGE_SOURCE_TYPE"
|
||||
plugn trigger builder-set-property "$APP" "detected" "$IMAGE_SOURCE_TYPE"
|
||||
if ! dokku_build "$APP" "$IMAGE_SOURCE_TYPE" "$TMP_WORK_DIR"; then
|
||||
return 1
|
||||
fi
|
||||
|
||||
@@ -75,7 +75,7 @@ teardown() {
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
run /bin/bash -c "dokku --quiet config:get $TEST_APP DOKKU_APP_TYPE"
|
||||
run /bin/bash -c "dokku builder:report $TEST_APP --builder-detected"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_output "herokuish"
|
||||
|
||||
Reference in New Issue
Block a user