ci: Add missing "set -e" to scripts run by su.
authorThomas Munro <[email protected]>
Thu, 6 Nov 2025 00:24:30 +0000 (13:24 +1300)
committerThomas Munro <[email protected]>
Thu, 6 Nov 2025 00:24:30 +0000 (13:24 +1300)
If any shell command fails, the whole script should fail.  To avoid
future omissions, add this even for single-command scripts that use su
with heredoc syntax, as they might be extended or copied-and-pasted.

Extracted from a larger patch that wanted to use #error during
compilation, leading to the diagnosis of this problem.

Reviewed-by: Tristan Partin <[email protected]> (earlier version)
Discussion: https://postgr.es/m/DDZP25P4VZ48.3LWMZBGA1K9RH%40partin.io
Backpatch-through: 15

.cirrus.tasks.yml

index 05e016db5861c42f632d4f77246b474f4db1311d..ceca6abbacdec85eaf421687f69b66cb5ea16af9 100644 (file)
@@ -129,6 +129,7 @@ task:
 
   configure_script: |
     su postgres <<-EOF
+      set -e
       meson setup \
         --buildtype=debug \
         --auto-features=disabled \
@@ -137,6 +138,7 @@ task:
     EOF
   build_script: |
     su postgres <<-EOF
+      set -e
       ninja -C build -j${BUILD_JOBS} ${MBUILD_TARGET}
     EOF
   upload_caches: ccache
@@ -146,6 +148,7 @@ task:
   # tap test that exercises both a frontend binary and the backend.
   test_minimal_script: |
     su postgres <<-EOF
+      set -e
       ulimit -c unlimited
       meson test $MTEST_ARGS --suite setup
       meson test $MTEST_ARGS --num-processes ${TEST_JOBS} \
@@ -229,6 +232,7 @@ task:
   # already takes longer than other platforms except for windows.
   configure_script: |
     su postgres <<-EOF
+      set -e
       meson setup \
         ${MESON_COMMON_PG_CONFIG_ARGS} \
         --buildtype=debug \
@@ -241,6 +245,7 @@ task:
 
   test_world_script: |
     su postgres <<-EOF
+      set -e
       ulimit -c unlimited
       meson test $MTEST_ARGS --num-processes ${TEST_JOBS}
     EOF
@@ -265,6 +270,7 @@ task:
     # during upload, as it doesn't expect artifacts to change size
     stop_running_script: |
       su postgres <<-EOF
+        set -e
         build/tmp_install/usr/local/pgsql/bin/pg_ctl -D build/runningcheck stop || true
       EOF
     <<: *on_failure_meson
@@ -361,6 +367,7 @@ task:
   # And other uuid options are not available on NetBSD.
   configure_script: |
     su postgres <<-EOF
+      set -e
       meson setup \
         ${MESON_COMMON_PG_CONFIG_ARGS} \
         --buildtype=debugoptimized \
@@ -374,6 +381,7 @@ task:
 
   test_world_script: |
     su postgres <<-EOF
+      set -e
       ulimit -c unlimited
       # Otherwise tests will fail on OpenBSD, due to inability to start enough
       # processes.
@@ -509,6 +517,7 @@ task:
       # that.
       configure_script: |
         su postgres <<-EOF
+          set -e
           ./configure \
             --enable-cassert --enable-injection-points --enable-debug \
             --enable-tap-tests --enable-nls \
@@ -525,6 +534,7 @@ task:
 
       test_world_script: |
         su postgres <<-EOF
+          set -e
           ulimit -c unlimited # default is 0
           make -s ${CHECK} ${CHECKFLAGS} -j${TEST_JOBS}
         EOF
@@ -548,6 +558,7 @@ task:
 
       configure_script: |
         su postgres <<-EOF
+          set -e
           meson setup \
             ${MESON_COMMON_PG_CONFIG_ARGS} \
             --buildtype=debug \
@@ -559,6 +570,7 @@ task:
       # locally.
       configure_32_script: |
         su postgres <<-EOF
+          set -e
           export CC='ccache gcc -m32'
           meson setup \
             ${MESON_COMMON_PG_CONFIG_ARGS} \
@@ -571,12 +583,14 @@ task:
 
       build_script: |
         su postgres <<-EOF
+          set -e
           ninja -C build -j${BUILD_JOBS} ${MBUILD_TARGET}
           ninja -C build -t missingdeps
         EOF
 
       build_32_script: |
         su postgres <<-EOF
+          set -e
           ninja -C build-32 -j${BUILD_JOBS} ${MBUILD_TARGET}
           ninja -C build -t missingdeps
         EOF
@@ -585,6 +599,7 @@ task:
 
       test_world_script: |
         su postgres <<-EOF
+          set -e
           ulimit -c unlimited
           meson test $MTEST_ARGS --num-processes ${TEST_JOBS}
         EOF
@@ -597,6 +612,7 @@ task:
       # from C, prevent that with PYTHONCOERCECLOCALE.
       test_world_32_script: |
         su postgres <<-EOF
+          set -e
           ulimit -c unlimited
           PYTHONCOERCECLOCALE=0 LANG=C meson test $MTEST_ARGS -C build-32 --num-processes ${TEST_JOBS}
         EOF