Skip to content

Commit bb0ead0

Browse files
committed
chore: make container-size-diff more robust
1 parent 3087ccf commit bb0ead0

File tree

1 file changed

+17
-9
lines changed

1 file changed

+17
-9
lines changed

.github/actions/container-size-diff/container-size-diff.sh

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,9 @@ get_sizes_from_manifest() {
2323
get_sizes_from_manifest ${FROM_CONTAINER} FROM_CONTAINER_SIZES
2424
get_sizes_from_manifest ${TO_CONTAINER} TO_CONTAINER_SIZES
2525

26-
echo "## 📊 Container Size Analysis"
26+
echo "## 📦 Container Size Analysis"
2727
echo
28-
echo "Comparing compressed layer sizes of:"
29-
echo "📦 Base: \`${FROM_CONTAINER}\`"
30-
echo "📦 Current: \`${TO_CONTAINER}\`"
28+
echo "Comparing \`${FROM_CONTAINER}\` to \`${TO_CONTAINER}\`"
3129
echo
3230

3331
echo "### 📈 Size Comparison Table"
@@ -37,10 +35,20 @@ echo "|-------------|:-------------:|:------------:|:------:|:-----:|"
3735

3836
for PLATFORM in "${!FROM_CONTAINER_SIZES[@]}";
3937
do
40-
BASE_SIZE=${FROM_CONTAINER_SIZES[${PLATFORM}]}
41-
HEAD_SIZE=${TO_CONTAINER_SIZES[${PLATFORM}]}
42-
DELTA=$((${HEAD_SIZE} - ${BASE_SIZE}))
43-
PERCENT_CHANGE=$(python -c "print('{:+0.2f}'.format(((${HEAD_SIZE} - ${BASE_SIZE}) / ${BASE_SIZE}) * 100))")
38+
FROM_SIZE=${FROM_CONTAINER_SIZES[${PLATFORM}]:0}
39+
TO_SIZE=${TO_CONTAINER_SIZES[${PLATFORM}]:0}
40+
DELTA=$((${TO_SIZE} - ${FROM_SIZE}))
41+
42+
if [[ ${FROM_SIZE} -eq 0 ]]; then
43+
# If base size was 0, and there's a change, that's infinite percentage change
44+
if [[ ${TO_SIZE} -gt 0 ]]; then
45+
PERCENT_CHANGE="+∞"
46+
else
47+
PERCENT_CHANGE="+0.00"
48+
fi
49+
else
50+
PERCENT_CHANGE=$(awk -v head="${TO_SIZE}" -v base="${FROM_SIZE}" 'BEGIN { printf "%+0.2f", ((head - base) / base) * 100 }')
51+
fi
4452

4553
if (( DELTA < 0 )); then
4654
ICON="🔽"
@@ -56,5 +64,5 @@ do
5664
MD_COLOR_END=""
5765
fi
5866

59-
echo "| ${PLATFORM} | $(numfmt --to iec --format '%.2f' ${BASE_SIZE}) | $(numfmt --to iec --format '%.2f' ${HEAD_SIZE}) | ${MD_COLOR_START}$(numfmt --to iec --format '%.2f' ${DELTA}) (${PERCENT_CHANGE}%)${MD_COLOR_END} | ${ICON} |"
67+
echo "| ${PLATFORM} | $(numfmt --to iec --format '%.2f' ${FROM_SIZE}) | $(numfmt --to iec --format '%.2f' ${TO_SIZE}) | ${MD_COLOR_START}$(numfmt --to iec --format '%.2f' ${DELTA}) (${PERCENT_CHANGE}%)${MD_COLOR_END} | ${ICON} |"
6068
done

0 commit comments

Comments
 (0)