diff --git a/.ci_scripts/build.sh b/.ci_scripts/build.sh
new file mode 100755
index 0000000000000000000000000000000000000000..f3082228a774653718cbf9fab754f0952e902f04
--- /dev/null
+++ b/.ci_scripts/build.sh
@@ -0,0 +1,45 @@
+#!/bin/bash
+
+# Build the project.
+# Usage: build.sh [-d working_directory] [-t cmake_toolchain_file]
+#   -d working_directory: The directory to build the project in.
+
+# Default values
+WORKING_DIRECTORY=""
+
+# Print usage information
+usage() {
+    echo "Usage: $0 [-d working_directory]" 1>&2
+    exit 1
+}
+
+# Parse command line arguments
+while getopts "d:" opt;
+do
+    case "${opt}" in
+        d)
+            # Working directory
+            WORKING_DIRECTORY="${OPTARG}"
+            echo "Building in directory ${WORKING_DIRECTORY}"
+            ;;
+        *)
+            usage
+            ;;
+    esac
+done
+shift $((OPTIND-1))
+
+# Change to working directory if specified
+if [[ $WORKING_DIRECTORY ]]
+then
+    cd $WORKING_DIRECTORY
+fi
+
+# Clean directory
+rm -rf build bin
+
+# Build project
+mkdir build bin
+cd build
+cmake ..
+cmake --build .
diff --git a/.github/workflows/unit-tests.yaml b/.github/workflows/unit-tests.yaml
index 271081cb36049582bcc2f45ba096bbb914a10da4..84dd977d814d0753a1ee684386857aae5970d76e 100644
--- a/.github/workflows/unit-tests.yaml
+++ b/.github/workflows/unit-tests.yaml
@@ -15,7 +15,7 @@ jobs:
         run: sudo $GITHUB_WORKSPACE/.ci_scripts/install_packages.sh
 
       - name: Build project with CMake
-        run: $GITHUB_WORKSPACE/build.sh -d $GITHUB_WORKSPACE
+        run: $GITHUB_WORKSPACE/.ci_scripts/build.sh -d $GITHUB_WORKSPACE
 
       - name: Run CUnit tests
         run: $GITHUB_WORKSPACE/.ci_scripts/run_tests.sh