fix: reference SOURCECODE_WORK_DIR in builder core-post-extract
The builder-dockerfile, builder-lambda, builder-nixpacks, builder-pack and builder-railpack `core-post-extract` triggers assigned `$2` to a local `SOURCECODE_WORK_DIR` but called `pushd "$TMP_WORK_DIR"`, which was unset. Bash 5.2 silently accepted `pushd ""`, so the bug stayed dormant. Bash 5.3 (shipped with Ubuntu 26.04) makes it a hard error and `set -e` aborts the trigger, causing every `git push` to fail with `pushd: null directory`.
This commit is contained in:
@@ -10,7 +10,7 @@ trigger-builder-dockerfile-core-post-extract() {
|
||||
declare APP="$1" SOURCECODE_WORK_DIR="$2"
|
||||
local NEW_DOCKERFILE="$(fn-builder-dockerfile-computed-dockerfile-path "$APP")"
|
||||
|
||||
pushd "$TMP_WORK_DIR" >/dev/null
|
||||
pushd "$SOURCECODE_WORK_DIR" >/dev/null
|
||||
|
||||
if [[ -z "$NEW_DOCKERFILE" ]]; then
|
||||
return
|
||||
|
||||
@@ -10,7 +10,7 @@ trigger-builder-lambda-core-post-extract() {
|
||||
declare APP="$1" SOURCECODE_WORK_DIR="$2"
|
||||
local NEW_LAMBDA_YML="$(fn-builder-lambda-computed-lambdayml-path "$APP")"
|
||||
|
||||
pushd "$TMP_WORK_DIR" >/dev/null
|
||||
pushd "$SOURCECODE_WORK_DIR" >/dev/null
|
||||
|
||||
if [[ -z "$NEW_LAMBDA_YML" ]]; then
|
||||
return
|
||||
|
||||
@@ -10,7 +10,7 @@ trigger-builder-nixpacks-core-post-extract() {
|
||||
declare APP="$1" SOURCECODE_WORK_DIR="$2"
|
||||
local NEW_NIXPACKS_YML="$(fn-builder-nixpacks-computed-nixpackstoml-path "$APP")"
|
||||
|
||||
pushd "$TMP_WORK_DIR" >/dev/null
|
||||
pushd "$SOURCECODE_WORK_DIR" >/dev/null
|
||||
|
||||
if [[ -z "$NEW_NIXPACKS_YML" ]]; then
|
||||
return
|
||||
|
||||
@@ -10,7 +10,7 @@ trigger-builder-pack-core-post-extract() {
|
||||
declare APP="$1" SOURCECODE_WORK_DIR="$2"
|
||||
local NEW_PROJECT_TOML="$(fn-builder-pack-computed-projecttoml-path "$APP")"
|
||||
|
||||
pushd "$TMP_WORK_DIR" >/dev/null
|
||||
pushd "$SOURCECODE_WORK_DIR" >/dev/null
|
||||
|
||||
if [[ -z "$NEW_PROJECT_TOML" ]]; then
|
||||
return
|
||||
|
||||
@@ -10,7 +10,7 @@ trigger-builder-railpack-core-post-extract() {
|
||||
declare APP="$1" SOURCECODE_WORK_DIR="$2"
|
||||
local NEW_RAILPACK_JSON="$(fn-builder-railpack-computed-railpackjson-path "$APP")"
|
||||
|
||||
pushd "$TMP_WORK_DIR" >/dev/null
|
||||
pushd "$SOURCECODE_WORK_DIR" >/dev/null
|
||||
|
||||
if [[ -z "$NEW_RAILPACK_JSON" ]]; then
|
||||
return
|
||||
|
||||
@@ -155,6 +155,29 @@ EOF
|
||||
assert_output "3001/udp 3000/tcp 3003"
|
||||
}
|
||||
|
||||
@test "(builder-dockerfile) core-post-extract renames the configured dockerfile" {
|
||||
local TMP_DIR
|
||||
TMP_DIR="$(mktemp -d "/tmp/dokku-test-builder-dockerfile.XXXXXX")"
|
||||
trap "rm -rf '$TMP_DIR'" RETURN
|
||||
echo "FROM scratch" >"$TMP_DIR/second.Dockerfile"
|
||||
|
||||
run /bin/bash -c "dokku builder-dockerfile:set $TEST_APP dockerfile-path second.Dockerfile"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
run /bin/bash -c "PLUGIN_PATH=$PLUGIN_PATH PLUGIN_AVAILABLE_PATH=$PLUGIN_AVAILABLE_PATH PLUGIN_ENABLED_PATH=$PLUGIN_ENABLED_PATH PLUGIN_CORE_AVAILABLE_PATH=$PLUGIN_CORE_AVAILABLE_PATH DOKKU_LIB_ROOT=$DOKKU_LIB_ROOT $PLUGIN_ENABLED_PATH/builder-dockerfile/core-post-extract $TEST_APP $TMP_DIR HEAD"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
run /bin/bash -c "test -f $TMP_DIR/Dockerfile"
|
||||
assert_success
|
||||
|
||||
run /bin/bash -c "test ! -e $TMP_DIR/second.Dockerfile"
|
||||
assert_success
|
||||
}
|
||||
|
||||
@test "(builder-dockerfile) ps:rebuild fetches files from image" {
|
||||
run /bin/bash -c "dokku --trace git:from-image $TEST_APP dokku/smoke-test-app:dockerfile"
|
||||
echo "output: $output"
|
||||
|
||||
@@ -152,6 +152,29 @@ teardown() {
|
||||
assert_success
|
||||
}
|
||||
|
||||
@test "(builder-lambda) core-post-extract renames the configured lambda.yml" {
|
||||
local TMP_DIR
|
||||
TMP_DIR="$(mktemp -d "/tmp/dokku-test-builder-lambda.XXXXXX")"
|
||||
trap "rm -rf '$TMP_DIR'" RETURN
|
||||
echo "---" >"$TMP_DIR/lambda2.yml"
|
||||
|
||||
run /bin/bash -c "dokku builder-lambda:set $TEST_APP lambdayml-path lambda2.yml"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
run /bin/bash -c "PLUGIN_PATH=$PLUGIN_PATH PLUGIN_AVAILABLE_PATH=$PLUGIN_AVAILABLE_PATH PLUGIN_ENABLED_PATH=$PLUGIN_ENABLED_PATH PLUGIN_CORE_AVAILABLE_PATH=$PLUGIN_CORE_AVAILABLE_PATH DOKKU_LIB_ROOT=$DOKKU_LIB_ROOT $PLUGIN_ENABLED_PATH/builder-lambda/core-post-extract $TEST_APP $TMP_DIR HEAD"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
run /bin/bash -c "test -f $TMP_DIR/lambda.yml"
|
||||
assert_success
|
||||
|
||||
run /bin/bash -c "test ! -e $TMP_DIR/lambda2.yml"
|
||||
assert_success
|
||||
}
|
||||
|
||||
inject_lambda_yml() {
|
||||
local APP="$1"
|
||||
local APP_REPO_DIR="$2"
|
||||
|
||||
@@ -131,6 +131,29 @@ teardown() {
|
||||
assert_output "['task.py', 'some', 'cron', 'task']"
|
||||
}
|
||||
|
||||
@test "(builder-nixpacks) core-post-extract renames the configured nixpacks.toml" {
|
||||
local TMP_DIR
|
||||
TMP_DIR="$(mktemp -d "/tmp/dokku-test-builder-nixpacks.XXXXXX")"
|
||||
trap "rm -rf '$TMP_DIR'" RETURN
|
||||
echo "" >"$TMP_DIR/nixpacks.alt.toml"
|
||||
|
||||
run /bin/bash -c "dokku builder-nixpacks:set $TEST_APP nixpackstoml-path nixpacks.alt.toml"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
run /bin/bash -c "PLUGIN_PATH=$PLUGIN_PATH PLUGIN_AVAILABLE_PATH=$PLUGIN_AVAILABLE_PATH PLUGIN_ENABLED_PATH=$PLUGIN_ENABLED_PATH PLUGIN_CORE_AVAILABLE_PATH=$PLUGIN_CORE_AVAILABLE_PATH DOKKU_LIB_ROOT=$DOKKU_LIB_ROOT $PLUGIN_ENABLED_PATH/builder-nixpacks/core-post-extract $TEST_APP $TMP_DIR HEAD"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
run /bin/bash -c "test -f $TMP_DIR/nixpacks.toml"
|
||||
assert_success
|
||||
|
||||
run /bin/bash -c "test ! -e $TMP_DIR/nixpacks.alt.toml"
|
||||
assert_success
|
||||
}
|
||||
|
||||
cron_run_wrapper() {
|
||||
local APP="$1"
|
||||
local APP_REPO_DIR="$2"
|
||||
|
||||
@@ -228,6 +228,29 @@ teardown() {
|
||||
assert_output "['task.py', 'test']"
|
||||
}
|
||||
|
||||
@test "(builder-pack) core-post-extract renames the configured project.toml" {
|
||||
local TMP_DIR
|
||||
TMP_DIR="$(mktemp -d "/tmp/dokku-test-builder-pack.XXXXXX")"
|
||||
trap "rm -rf '$TMP_DIR'" RETURN
|
||||
echo "" >"$TMP_DIR/project2.toml"
|
||||
|
||||
run /bin/bash -c "dokku builder-pack:set $TEST_APP projecttoml-path project2.toml"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
run /bin/bash -c "PLUGIN_PATH=$PLUGIN_PATH PLUGIN_AVAILABLE_PATH=$PLUGIN_AVAILABLE_PATH PLUGIN_ENABLED_PATH=$PLUGIN_ENABLED_PATH PLUGIN_CORE_AVAILABLE_PATH=$PLUGIN_CORE_AVAILABLE_PATH DOKKU_LIB_ROOT=$DOKKU_LIB_ROOT $PLUGIN_ENABLED_PATH/builder-pack/core-post-extract $TEST_APP $TMP_DIR HEAD"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
run /bin/bash -c "test -f $TMP_DIR/project.toml"
|
||||
assert_success
|
||||
|
||||
run /bin/bash -c "test ! -e $TMP_DIR/project2.toml"
|
||||
assert_success
|
||||
}
|
||||
|
||||
cron_run_wrapper() {
|
||||
local APP="$1"
|
||||
local APP_REPO_DIR="$2"
|
||||
|
||||
@@ -142,6 +142,29 @@ teardown() {
|
||||
assert_output "['task.py', 'some', 'cron', 'task']"
|
||||
}
|
||||
|
||||
@test "(builder-railpack) core-post-extract renames the configured railpack.json" {
|
||||
local TMP_DIR
|
||||
TMP_DIR="$(mktemp -d "/tmp/dokku-test-builder-railpack.XXXXXX")"
|
||||
trap "rm -rf '$TMP_DIR'" RETURN
|
||||
echo "{}" >"$TMP_DIR/railpack.alt.json"
|
||||
|
||||
run /bin/bash -c "dokku builder-railpack:set $TEST_APP railpackjson-path railpack.alt.json"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
run /bin/bash -c "PLUGIN_PATH=$PLUGIN_PATH PLUGIN_AVAILABLE_PATH=$PLUGIN_AVAILABLE_PATH PLUGIN_ENABLED_PATH=$PLUGIN_ENABLED_PATH PLUGIN_CORE_AVAILABLE_PATH=$PLUGIN_CORE_AVAILABLE_PATH DOKKU_LIB_ROOT=$DOKKU_LIB_ROOT $PLUGIN_ENABLED_PATH/builder-railpack/core-post-extract $TEST_APP $TMP_DIR HEAD"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
run /bin/bash -c "test -f $TMP_DIR/railpack.json"
|
||||
assert_success
|
||||
|
||||
run /bin/bash -c "test ! -e $TMP_DIR/railpack.alt.json"
|
||||
assert_success
|
||||
}
|
||||
|
||||
cron_run_wrapper() {
|
||||
local APP="$1"
|
||||
local APP_REPO_DIR="$2"
|
||||
|
||||
Reference in New Issue
Block a user