blob: 95f2f2f1af975175de00f2f632c3ecb9191fa531 [file]
#!/bin/bash
# Shell script to manually trigger production CBB runs.
# For usage instructions, see http://go/cbb-op#heading=h.p7deu7kfu42x
# Before running this script, please finish steps 1 through 3 given at
# https://skia.googlesource.com/buildbot/+/HEAD/temporal/README.md#locally-trigger-production-workflow-follow-these-steps-with-care
# For step 2, use `./kube/attach.sh skia-infra-corp`.
# Check for 4 or 5 command line arguments
if [ "$#" -lt 4 ] || [ "$#" -gt 5 ]; then
echo "Error: Expected 4 or 5 arguments: platform, browser, channel, commit position, benchmark."
echo "Usage: $0 <platform> <browser> <channel> <commit_position> [<benchmark>]"
exit 1
fi
PLATFORM="$1"
BROWSER="$2"
CHANNEL="$3"
COMMIT_POSITION="$4"
if [ -n "$5" ]; then
BENCHMARK="$5"
else
BENCHMARK="full"
fi
# Map platform argument to full name
case "$PLATFORM" in
m3)
PLATFORM="mac-m3-pro-perf-cbb"
;;
m4)
PLATFORM="mac-m4-mini-perf-cbb"
;;
victus)
PLATFORM="win-victus-perf-cbb"
;;
elite)
PLATFORM="win-arm64-snapdragon-elite-perf-cbb"
;;
p10)
PLATFORM="android-pixel10-perf-cbb"
;;
tangor)
PLATFORM="android-pixel-tangor-perf-cbb"
;;
esac
# Validate platform argument
VALID_PLATFORMS=(\
"mac-m3-pro-perf-cbb" "mac-m4-mini-perf-cbb" \
"win-victus-perf-cbb" "win-arm64-snapdragon-elite-perf-cbb" \
"android-pixel10-perf-cbb" "android-pixel-tangor-perf-cbb" \
)
if ! [[ " ${VALID_PLATFORMS[*]} " =~ " ${PLATFORM} " ]]; then
echo "Error: Invalid platform '$PLATFORM'."
echo "Valid platforms are: ${VALID_PLATFORMS[*]}"
exit 1
fi
# Map benchmark argument to full name
case "$BENCHMARK" in
sp|sp3)
BENCHMARK="speedometer3"
;;
js2)
BENCHMARK="jetstream2"
;;
js|js3)
BENCHMARK="jetstream3"
;;
mm|mm13|mm1.3)
BENCHMARK="motionmark1.3"
;;
ll|ll2)
BENCHMARK="loadline2"
;;
esac
if [[ "$BENCHMARK" == "loadline2" ]]; then
case "$PLATFORM" in
android-pixel10-perf-cbb)
BENCHMARK=loadline2_phone
;;
android-pixel-tangor-perf-cbb)
BENCHMARK=loadline2_tablet
;;
*)
echo "Error: don't know which flavor of $BENCHMARK to run on $PLATFORM"
exit 1
;;
esac
fi
# Validate benchmark argument
VALID_BENCHMARKS=("speedometer3" "jetstream2" "jetstream3" "motionmark1.3" "loadline2_phone" "loadline2_tablet" "full")
if ! [[ " ${VALID_BENCHMARKS[*]} " =~ " ${BENCHMARK} " ]]; then
echo "Error: Invalid benchmark '$BENCHMARK'."
echo "Valid benchmarks are: speedometer3, jetstream2, motionmark1.3, full (or aliases sp, js, mm, ll)."
exit 1
fi
# Validate browser argument
VALID_BROWSERS=("chrome" "safari" "edge")
if ! [[ " ${VALID_BROWSERS[*]} " =~ " ${BROWSER} " ]]; then
echo "Error: Invalid browser '$BROWSER'."
echo "Valid browsers are: ${VALID_BROWSERS[*]}"
exit 1
fi
# Validate channel argument
VALID_CHANNELS=("stable" "dev" "tp")
if ! [[ " ${VALID_CHANNELS[*]} " =~ " ${CHANNEL} " ]]; then
echo "Error: Invalid channel '$CHANNEL'."
echo "Valid channels are: ${VALID_CHANNELS[*]}"
exit 1
fi
# Validate commit position argument (must be an integer)
if ! [[ "$COMMIT_POSITION" =~ ^[0-9]+$ ]]; then
echo "Error: Commit position '$COMMIT_POSITION' must be an integer."
exit 1
fi
# Set the number of iterations to use. These number should match those used in
# setupBenchmarks function in pinpoint/go/workflows/internal/cbb_runner.go.
# At some point, we should figure out how to have a single source of truth of
# the number of iterations to use.
ITERATIONS=0
case "$BENCHMARK" in
speedometer3)
if [[ "$PLATFORM" =~ ^mac- ]]; then
ITERATIONS=150
else
ITERATIONS=22
fi
;;
jetstream2)
ITERATIONS=22
;;
motionmark1.3)
ITERATIONS=22
;;
loadline2_phone)
ITERATIONS=14
;;
loadline2_tablet)
ITERATIONS=8
;;
esac
echo "Arguments validated successfully:"
echo "Platform: $PLATFORM"
echo "Browser: $BROWSER"
echo "Channel: $CHANNEL"
echo "Commit Position: $COMMIT_POSITION"
echo "Benchmark: $BENCHMARK"
echo "Iterations: $ITERATIONS"
# Check for running processes
if ! pgrep -f "./kube/attach.sh skia-infra-corp" > /dev/null; then
echo "Error: Process './kube/attach.sh skia-infra-corp' not found."
echo "Did you forget to run step 2 at https://skia.googlesource.com/buildbot/+/HEAD/temporal/README.md#locally-trigger-production-workflow-follow-these-steps-with-care?"
exit 1
fi
if ! pgrep -f "kubectl port-forward service/temporal --address 0.0.0.0 -n temporal 7233:7233" > /dev/null; then
echo "Error: Process 'kubectl port-forward service/temporal --address 0.0.0.0 -n temporal 7233:7233' not found."
echo "Did you forget to run step 3 at https://skia.googlesource.com/buildbot/+/HEAD/temporal/README.md#locally-trigger-production-workflow-follow-these-steps-with-care?"
exit 1
fi
bazelisk run //pinpoint/go/workflows/sample -- \
--namespace=perf-internal --taskQueue=perf.perf-chrome-public.bisect \
--cbb-runner=true --no-wait=true \
--configuration=$PLATFORM --browser=$BROWSER \
--channel=$CHANNEL --commit-position=$COMMIT_POSITION --benchmark=$BENCHMARK \
--iterations=$ITERATIONS