Skip to content

Instantly share code, notes, and snippets.

@dudash
Created December 4, 2020 20:11
Show Gist options
  • Save dudash/0762ec43ef719e7b09270cf231129609 to your computer and use it in GitHub Desktop.
Save dudash/0762ec43ef719e7b09270cf231129609 to your computer and use it in GitHub Desktop.
override Red Hat node.js 12 s2i to make npm verbose
#!/bin/bash
# Prevent running assemble in builders different than official STI image.
# The official nodejs:8-onbuild already run npm install and use different
# application folder.
[ -d "/usr/src/app" ] && exit 0
set -e
# FIXME: Linking of global modules is disabled for now as it causes npm failures
# under RHEL7
# Global modules good to have
# npmgl=$(grep "^\s*[^#\s]" ../etc/npm_global_module_list | sort -u)
# Available global modules; only match top-level npm packages
#global_modules=$(npm ls -g 2> /dev/null | perl -ne 'print "$1\n" if /^\S+\s(\S+)\@[\d\.-]+/' | sort -u)
# List all modules in common
#module_list=$(/usr/bin/comm -12 <(echo "${global_modules}") | tr '\n' ' ')
# Link the modules
#npm link $module_list
safeLogging () {
if [[ $1 =~ http[s]?://.*@.*$ ]]; then
echo $1 | sed 's/^.*@/redacted@/'
else
echo $1
fi
}
shopt -s dotglob
if [ -d /tmp/artifacts ] && [ "$(ls /tmp/artifacts/ 2>/dev/null)" ]; then
echo "---> Restoring previous build artifacts ..."
mv -T --verbose /tmp/artifacts/node_modules "${HOME}/node_modules"
fi
echo "---> Installing application source ..."
mv /tmp/src/* ./
# Fix source directory permissions
fix-permissions ./
if [ ! -z $HTTP_PROXY ]; then
echo "---> Setting npm http proxy to" $(safeLogging $HTTP_PROXY)
npm config set proxy $HTTP_PROXY
fi
if [ ! -z $http_proxy ]; then
echo "---> Setting npm http proxy to" $(safeLogging $http_proxy)
npm config set proxy $http_proxy
fi
if [ ! -z $HTTPS_PROXY ]; then
echo "---> Setting npm https proxy to" $(safeLogging $HTTPS_PROXY)
npm config set https-proxy $HTTPS_PROXY
fi
if [ ! -z $https_proxy ]; then
echo "---> Setting npm https proxy to" $(safeLogging $https_proxy)
npm config set https-proxy $https_proxy
fi
# Change the npm registry mirror if provided
if [ -n "$NPM_MIRROR" ]; then
npm config set registry $NPM_MIRROR
fi
# Set the DEV_MODE to false by default.
if [ -z "$DEV_MODE" ]; then
export DEV_MODE=false
fi
# If NODE_ENV is not set by the user, then NODE_ENV is determined by whether
# the container is run in development mode.
if [ -z "$NODE_ENV" ]; then
if [ "$DEV_MODE" == true ]; then
export NODE_ENV=development
else
export NODE_ENV=production
fi
fi
if [ "$NODE_ENV" != "production" ]; then
echo "---> Building your Node application from source"
npm install --verbose
else
echo "---> Installing all dependencies"
NODE_ENV=development npm install --verbose
#do not fail when there is no build script
echo "---> Building in production mode"
npm run build --if-present --verbose
echo "---> Pruning the development dependencies"
npm prune --verbose
# Clear the npm's cache and tmp directories only if they are not a docker volumes
NPM_CACHE=$(npm config get cache)
if ! mountpoint $NPM_CACHE; then
echo "---> Cleaning the npm cache $NPM_CACHE"
#As of npm@5 even the 'npm cache clean --force' does not fully remove the cache directory
# instead of $NPM_CACHE* use $NPM_CACHE/*.
# We do not want to delete .npmrc file.
rm -rf "${NPM_CACHE:?}/"
fi
NPM_TMP=$(npm config get tmp)
if ! mountpoint $NPM_TMP; then
echo "---> Cleaning the $NPM_TMP/npm-*"
rm -rf $NPM_TMP/npm-*
fi
fi
# Fix source directory permissions
fix-permissions ./
@dudash
Copy link
Author

dudash commented Dec 4, 2020

To use, make a folder in your node.js repo called .s2i and put this file in there called assemble

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment