diff --git a/utils/nightly/gmsh_win32.ctest b/utils/nightly/gmsh_win32.ctest
new file mode 100644
index 0000000000000000000000000000000000000000..90280ae1004f68193b660d74f9758c5391cd5eef
--- /dev/null
+++ b/utils/nightly/gmsh_win32.ctest
@@ -0,0 +1,41 @@
+# Gmsh - Copyright (C) 1997-2017 C. Geuzaine, J.-F. Remacle
+#
+# See the LICENSE.txt file for license information. Please report all
+# bugs and problems to the public mailing list <gmsh@onelab.info>.
+
+set(CTEST_CMAKE_COMMAND "cmake")
+set(CTEST_CMAKE_GENERATOR "Unix Makefiles")
+
+set(WEB_BIN "geuzaine@onelab.info:/home/www/gmsh.info/bin/Windows")
+
+set(WITH_TEST TRUE)      # run the tests?
+set(WITH_COVERAGE FALSE) # check code coverage?
+set(WITH_MEMCHECK FALSE) # check memory with valgrind?
+
+#################################################################################
+if(BUILD_DYNAMIC)
+  set(CTEST_BUILD_NAME "Win32-dynamic")
+  set(CTEST_BINARY_DIRECTORY "$ENV{HOME}/src/gmsh/bin_dynamic")
+else(BUILD_DYNAMIC)
+  set(CTEST_BUILD_NAME "Win32")
+  set(CTEST_BINARY_DIRECTORY "$ENV{HOME}/src/gmsh/bin")
+endif(BUILD_DYNAMIC)
+set(OPT "-DGMSH_EXTRA_VERSION=${EXTRA_VERSION}")
+set(OPT "${OPT} -DCMAKE_PREFIX_PATH:path=/usr/local/opencascade;/usr/local;/usr/i686-w64-mingw32/sys-root/mingw")
+set(OPT "${OPT} -DCMAKE_C_COMPILER=/usr/bin/i686-w64-mingw32-gcc.exe")
+set(OPT "${OPT} -DCMAKE_CXX_COMPILER=/usr/bin/i686-w64-mingw32-g++.exe")
+set(OPT "${OPT} -DCMAKE_Fortran_COMPILER=/usr/bin/i686-w64-mingw32-gfortran.exe")
+set(OPT "${OPT} -DCMAKE_RC_COMPILER=/usr/bin/i686-w64-mingw32-windres.exe")
+set(OPT "${OPT} -DPETSC_ARCH=complex_mumps_seq")
+set(OPT "${OPT} -DPETSC_DIR=$ENV{HOME}/src/petsc-3.7.5")
+set(OPT "${OPT} -DSLEPC_DIR=$ENV{HOME}/src/slepc-3.7.3")
+if(BUILD_DYNAMIC)
+  set(OPT "${OPT} -DENABLE_BUILD_DYNAMIC=1")
+endif(BUILD_DYNAMIC)
+set(CTEST_BUILD_OPTIONS ${OPT})
+include(gmsh.ctest)
+if(BUILD_DYNAMIC)
+  upload_package(${WEB_BIN} Windows 32-dynamic .zip .zip)
+else(BUILD_DYNAMIC)
+  upload_package(${WEB_BIN} Windows 32 .zip .zip)
+endif(BUILD_DYNAMIC)
diff --git a/utils/nightly/gmsh_win32_nightly.bat b/utils/nightly/gmsh_win32_nightly.bat
new file mode 100755
index 0000000000000000000000000000000000000000..ff096f3999889a421916b77905ca323778381266
--- /dev/null
+++ b/utils/nightly/gmsh_win32_nightly.bat
@@ -0,0 +1,7 @@
+@echo off
+
+C:
+chdir C:\cygwin\bin
+
+bash --login -c "cd ${HOME}/src/gmsh/utils/nightly && ctest -S gmsh_win32_nightly.ctest -VV > ${HOME}/src/gmsh/nightly.log 2>&1"
+
diff --git a/utils/nightly/gmsh_win32_nightly.ctest b/utils/nightly/gmsh_win32_nightly.ctest
new file mode 100644
index 0000000000000000000000000000000000000000..e070d16aa5604b5a204d3c81ce5414d3095d3264
--- /dev/null
+++ b/utils/nightly/gmsh_win32_nightly.ctest
@@ -0,0 +1,9 @@
+# Gmsh - Copyright (C) 1997-2017 C. Geuzaine, J.-F. Remacle
+#
+# See the LICENSE.txt file for license information. Please report all
+# bugs and problems to the public mailing list <gmsh@onelab.info>.
+
+set(CTEST_NIGHTLY_START_TIME "22:00:00 UTC")
+set(CDASH_MODEL "Nightly")
+set(EXTRA_VERSION "-git")
+include(gmsh_win32.ctest)
diff --git a/utils/nightly/gmsh_win32_test.ctest b/utils/nightly/gmsh_win32_test.ctest
new file mode 100644
index 0000000000000000000000000000000000000000..d10e7e4740d9843c6df8983a93ab009ed627072a
--- /dev/null
+++ b/utils/nightly/gmsh_win32_test.ctest
@@ -0,0 +1,7 @@
+# Gmsh - Copyright (C) 1997-2017 C. Geuzaine, J.-F. Remacle
+#
+# See the LICENSE.txt file for license information. Please report all
+# bugs and problems to the public mailing list <gmsh@onelab.info>.
+
+set(EXTRA_VERSION "-git")
+include(gmsh_win32.ctest)