зеркало из https://github.com/mozilla/fxa.git
52 строки
2.3 KiB
Bash
Executable File
52 строки
2.3 KiB
Bash
Executable File
#!/bin/bash
|
|
if [ ! -d artifacts ]; then
|
|
mkdir artifacts
|
|
fi
|
|
|
|
# 1. Get the list of all modified and dependent services.
|
|
echo "checking for modified services..."
|
|
# Cleans up yarn's output by removing everything before the package name, the first and the last line.
|
|
PACKAGES_MODIFIED=`yarn workspaces list --since=HEAD^ -R | cut -d/ -f2 | sed '1d' | sed '$d'`
|
|
|
|
# 2. If no services were modified, return early; otherwise we'd try to compile everything.
|
|
if [[ $PACKAGES_MODIFIED == "" ]]; then
|
|
echo "no modified services found"
|
|
exit 0
|
|
fi
|
|
echo "modified services found"
|
|
|
|
# 3. Get a list of all modified and dependent backend TS services.
|
|
echo "checking for affected services..."
|
|
ORIGINAL_IFS=$IFS
|
|
IFS=$'\n'
|
|
# We don't need to worry about front-end services that use TS, since they must build successfully for CI to pass.
|
|
BACKEND_PACKAGES=( "fxa-admin-server" "fxa-auth-server" "fxa-event-broker" "fxa-graphql-api" "fxa-shared" "fxa-support-panel" )
|
|
INCLUDE_ARGS=''
|
|
AFFECTED_PACKAGES=''
|
|
for package_modified in $PACKAGES_MODIFIED; do
|
|
if [[ " ${BACKEND_PACKAGES[@]} " =~ " ${package_modified} " ]]; then
|
|
INCLUDE_ARGS="$INCLUDE_ARGS --include ${package_modified}"
|
|
AFFECTED_PACKAGES="$AFFECTED_PACKAGES\n${package_modified}"
|
|
fi
|
|
done
|
|
IFS=$ORIGINAL_IFS
|
|
if [[ $AFFECTED_PACKAGES == "" ]]; then
|
|
echo "no affected services found"
|
|
exit 0
|
|
fi
|
|
echo "affected services found:"
|
|
echo -e "$AFFECTED_PACKAGES" | sed '1d'
|
|
|
|
# 4. Compile all back-end TS services in the list
|
|
echo "compiling all modified and dependent backend TS services..."
|
|
echo -e "\nNote: if fxa-shared was modified and has any TS errors, the script will exit before compiling other services, since all other backend TS services depend on fxa-shared."
|
|
INCLUDE_ARGS=`echo "$INCLUDE_ARGS" | xargs` # trim whitespace at beginning of string
|
|
# We don't need to write files to disk, so `compile` uses `tsc --noEmit` here instead of `tsc --build` for speed.
|
|
if ! `yarn workspaces foreach --verbose --topological-dev --parallel ${INCLUDE_ARGS} run compile > artifacts/compiling-affected-backend-services.log`;
|
|
then
|
|
echo -e "\n###########################################################\n"
|
|
echo "# fxa couldn't compile one or more services. see artifacts/compiling-affected-backend-services.log for details."
|
|
echo -e "\n###########################################################\n"
|
|
exit 1
|
|
fi
|