build: log npm run postinstall steps to STDOUT so they are visible in CI (#33142)

Without this change, `npm run postinstall` (aka
scripts/copy-node-modules.sh) uses `set -x`, which echo steps to STDERR.
By default, it seems that GitHub Actions doesn't show STDERR.

Having the steps visible in CI was very useful while debugging some
Tutor build improvements, so I figured it would be good to upstream the
change.
This commit is contained in:
Kyle McCormick
2023-10-04 13:34:16 -04:00
committed by GitHub
parent 32c2798fc8
commit c1163717df

View File

@@ -26,28 +26,33 @@ log ( ) {
echo -e "${COL_LOG}$* $COL_OFF"
}
# Print a command (prefixed with '+') and then run it, to aid in debugging.
# This is just like `set -x`, except that `set -x` prints to STDERR, which is hidden
# by GitHub Actions logs. This functions prints to STDOUT, which is visible.
log_and_run ( ) {
log "+$*"
"$@" # Joins arguments to form a command (quoting as necessary) and runs the command.
}
log "====================================================================================="
log "Copying required assets from node_modules..."
log "-------------------------------------------------------------------------------"
# Start echoing all commands back to user for ease of debugging.
set -x
log "Ensuring vendor directories exist..."
mkdir -p "$vendor_js"
mkdir -p "$vendor_css"
log_and_run mkdir -p "$vendor_js"
log_and_run mkdir -p "$vendor_css"
log "Copying studio-frontend JS & CSS from node_modules into vendor directores..."
while read -r -d $'\0' src_file ; do
if [[ "$src_file" = *.css ]] || [[ "$src_file" = *.css.map ]] ; then
cp --force "$src_file" "$vendor_css"
log_and_run cp --force "$src_file" "$vendor_css"
else
cp --force "$src_file" "$vendor_js"
log_and_run cp --force "$src_file" "$vendor_js"
fi
done < <(find "$node_modules/@edx/studio-frontend/dist" -type f -print0)
log "Copying certain JS modules from node_modules into vendor directory..."
cp --force \
log_and_run cp --force \
"$node_modules/backbone.paginator/lib/backbone.paginator.js" \
"$node_modules/backbone/backbone.js" \
"$node_modules/bootstrap/dist/js/bootstrap.bundle.js" \
@@ -66,8 +71,8 @@ cp --force \
log "Copying certain JS developer modules into vendor directory..."
if [[ "${NODE_ENV:-production}" = development ]] ; then
cp --force "$node_modules/sinon/pkg/sinon.js" "$vendor_js"
cp --force "$node_modules/squirejs/src/Squire.js" "$vendor_js"
log_and_run cp --force "$node_modules/sinon/pkg/sinon.js" "$vendor_js"
log_and_run cp --force "$node_modules/squirejs/src/Squire.js" "$vendor_js"
else
# TODO: https://github.com/openedx/edx-platform/issues/31768
# In the old implementation of this scipt (pavelib/assets.py), these two
@@ -77,13 +82,10 @@ else
# However, in the future, it would be good to only copy them for dev
# builds. Furthermore, these libraries should not be `npm install`ed
# into prod builds in the first place.
cp --force "$node_modules/sinon/pkg/sinon.js" "$vendor_js" || true # "|| true" means "tolerate errors"; in this case,
cp --force "$node_modules/squirejs/src/Squire.js" "$vendor_js" || true # that's "tolerate if these files don't exist."
log_and_run cp --force "$node_modules/sinon/pkg/sinon.js" "$vendor_js" || true # "|| true" means "tolerate errors"; in this case,
log_and_run cp --force "$node_modules/squirejs/src/Squire.js" "$vendor_js" || true # that's "tolerate if these files don't exist."
fi
# Done echoing.
set +x
log "-------------------------------------------------------------------------------"
log " Done copying required assets from node_modules."
log "====================================================================================="