这是indexloc提供的服务,不要输入任何密码
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion docs/configuration/environment-variables.md
Original file line number Diff line number Diff line change
Expand Up @@ -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` | |
Expand Down
6 changes: 3 additions & 3 deletions plugins/builder-herokuish/docker-args-build
Original file line number Diff line number Diff line change
Expand Up @@ -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}"
Expand Down
2 changes: 1 addition & 1 deletion plugins/builder/Makefile
Original file line number Diff line number Diff line change
@@ -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

Expand Down
1 change: 1 addition & 0 deletions plugins/builder/builder.go
Original file line number Diff line number Diff line change
Expand Up @@ -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": "",
}

Expand Down
5 changes: 5 additions & 0 deletions plugins/builder/report.go
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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")
}
Expand Down
5 changes: 5 additions & 0 deletions plugins/builder/src/triggers/triggers.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
5 changes: 5 additions & 0 deletions plugins/builder/subcommands.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
38 changes: 35 additions & 3 deletions plugins/builder/triggers.go
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down Expand Up @@ -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",
})

Expand Down
2 changes: 1 addition & 1 deletion plugins/common/functions
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion tests/unit/build-env.bats
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
Loading