refactor: switch detected builder so first one wins

Also rename internal cnb references to pack (where possible).
This commit is contained in:
Jose Diaz-Gonzalez
2021-02-28 16:02:22 -05:00
parent 43b9d9d4b6
commit 1ec71cd509
12 changed files with 59 additions and 37 deletions

View File

@@ -188,7 +188,7 @@ func executeScript(appName string, image string, imageTag string, phase string)
if isHerokuishImage {
imageSourceType = "herokuish"
} else if isCnbImage {
imageSourceType = "cnb"
imageSourceType = "pack"
}
cacheDir := fmt.Sprintf("%s/cache", common.AppRoot(appName))

View File

@@ -8,6 +8,24 @@ trigger-builder-dockerfile-builder-detect() {
declare trigger="builder-detect"
declare APP="$1" SOURCECODE_WORK_DIR="$2"
# hack: unfortunately our legacy code requires that buildpacks
# are detected before dockerfile support is detected
# as such, we need to force-check the herokuish and pack
# builders before allowing the dockerfile check to succeed
# in a future release, we may drop this hack, but for now,
# such is life
if [[ -f "$PLUGIN_ENABLED_PATH/builder-herokuish/builder-detect" ]]; then
if [[ -n "$($PLUGIN_ENABLED_PATH/builder-herokuish/builder-detect "$APP" "$SOURCECODE_WORK_DIR")" ]]; then
return
fi
fi
if [[ -f "$PLUGIN_ENABLED_PATH/builder-pack/builder-detect" ]]; then
if [[ -n "$($PLUGIN_ENABLED_PATH/builder-pack/builder-detect "$APP" "$SOURCECODE_WORK_DIR")" ]]; then
return
fi
fi
if [[ -f "$SOURCECODE_WORK_DIR/Dockerfile" ]]; then
echo "dockerfile"
return

View File

@@ -9,7 +9,7 @@ trigger-builder-pack-builder-build() {
declare trigger="builder-build"
declare BUILDER_TYPE="$1" APP="$2" SOURCECODE_WORK_DIR="$3"
if [[ "$BUILDER_TYPE" != "cnb" ]]; then
if [[ "$BUILDER_TYPE" != "pack" ]]; then
return
fi
@@ -33,13 +33,13 @@ trigger-builder-pack-builder-build() {
config_export app "$APP" --format envfile --merged >"$TMP_FILE"
plugn trigger pre-build-cnb "$APP" "$SOURCECODE_WORK_DIR"
plugn trigger pre-build-pack "$APP" "$SOURCECODE_WORK_DIR"
pack build "$IMAGE" --builder "$DOKKU_CNB_BUILDER" --path "$SOURCECODE_WORK_DIR" --default-process web
docker-image-labeler --label=com.dokku.image-stage=build --label=com.dokku.app-name=$APP --label=org.label-schema.schema-version=1.0 --label=org.label-schema.vendor=dokku --label=dokku "$IMAGE"
plugn trigger post-build-cnb "$APP" "$SOURCECODE_WORK_DIR"
plugn trigger post-build-pack "$APP" "$SOURCECODE_WORK_DIR"
}
trigger-builder-pack-builder-build "$@"

View File

@@ -9,12 +9,12 @@ trigger-builder-pack-builder-detect() {
declare APP="$1" SOURCECODE_WORK_DIR="$2"
if [[ -f "$SOURCECODE_WORK_DIR/project.toml" ]]; then
echo "cnb"
echo "pack"
return
fi
if [[ "$(config_get "$APP" DOKKU_CNB_EXPERIMENTAL || true)" == "1" ]]; then
echo "cnb"
echo "pack"
return
fi
}

View File

@@ -8,15 +8,15 @@ trigger-builder-pack-builder-release() {
declare trigger="builder-release"
declare BUILDER_TYPE="$1" APP="$2" IMAGE_TAG="$3"
if [[ "$BUILDER_TYPE" != "cnb" ]]; then
if [[ "$BUILDER_TYPE" != "pack" ]]; then
return
fi
plugn trigger pre-release-cnb "$APP" "$IMAGE_TAG"
plugn trigger pre-release-pack "$APP" "$IMAGE_TAG"
local IMAGE=$(get_app_image_name "$APP" "$IMAGE_TAG")
docker-image-labeler --label=com.dokku.image-stage=release --label=com.dokku.app-name=$APP --label=org.label-schema.schema-version=1.0 --label=org.label-schema.vendor=dokku --label=dokku "$IMAGE"
plugn trigger post-release-cnb "$APP" "$IMAGE_TAG"
plugn trigger post-release-pack "$APP" "$IMAGE_TAG"
}
trigger-builder-pack-builder-release "$@"

View File

@@ -639,7 +639,7 @@ dokku_release() {
local IMAGE=$(get_app_image_name "$APP" "$IMAGE_TAG")
if is_image_cnb_based "$IMAGE"; then
IMAGE_SOURCE_TYPE="cnb"
IMAGE_SOURCE_TYPE="pack"
fi
plugn trigger builder-release "$IMAGE_SOURCE_TYPE" "$APP" "$IMAGE_TAG"
@@ -710,7 +710,7 @@ dokku_receive() {
local DOKKU_CNB_EXPERIMENTAL="$(config_get "$APP" DOKKU_CNB_EXPERIMENTAL || true)"
if [[ "$DOKKU_CNB_EXPERIMENTAL" == "1" ]]; then
IMAGE_SOURCE_TYPE="cnb"
IMAGE_SOURCE_TYPE="pack"
fi
DOKKU_QUIET_OUTPUT=1 config_set --no-restart "$APP" DOKKU_APP_TYPE="$IMAGE_SOURCE_TYPE"

View File

@@ -53,7 +53,7 @@ git_trigger_build() {
plugn trigger post-extract "$APP" "$TMP_WORK_DIR" "$REV"
BUILDER="$(plugn trigger builder-detect "$APP" "$TMP_WORK_DIR" | tail -n1 || true)"
BUILDER="$(plugn trigger builder-detect "$APP" "$TMP_WORK_DIR" | head -n1 || true)"
[[ -z "$BUILDER" ]] && BUILDER="herokuish"
plugn trigger pre-receive-app "$APP" "$BUILDER" "$TMP_WORK_DIR" "$REV"

View File

@@ -28,7 +28,7 @@ trigger-scheduler-docker-local-scheduler-deploy() {
is_image_herokuish_based "$IMAGE" "$APP" && DOKKU_HEROKUISH=true
local IMAGE_SOURCE_TYPE="dockerfile"
[[ "$DOKKU_HEROKUISH" == "true" ]] && IMAGE_SOURCE_TYPE="herokuish"
[[ "$DOKKU_CNB" == "true" ]] && IMAGE_SOURCE_TYPE="cnb"
[[ "$DOKKU_CNB" == "true" ]] && IMAGE_SOURCE_TYPE="pack"
local DOKKU_SCALE_FILE="$DOKKU_ROOT/$APP/DOKKU_SCALE"
local oldids=$(get_app_container_ids "$APP")

View File

@@ -45,7 +45,7 @@ tar_trigger_build() {
plugn trigger post-extract "$APP" "$TMP_WORK_DIR" "$REV"
BUILDER="$(plugn trigger builder-detect "$APP" "$TMP_WORK_DIR" | tail -n1 || true)"
BUILDER="$(plugn trigger builder-detect "$APP" "$TMP_WORK_DIR" | head -n1 || true)"
[[ -z "$BUILDER" ]] && BUILDER="herokuish"
plugn trigger pre-receive-app "$APP" "$BUILDER" "$TMP_WORK_DIR" "$REV"