diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 74ecdd32cc06a1e18cffc90844fa13d1f2b19507..e69ab5e72e4ca7b287aeaccd95d862b15c2edf81 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -3,19 +3,9 @@
 default:
   image: archlinux/base
   before_script:
-    - pacman --noconfirm -Syy
-    - pacman --noconfirm -S base-devel shellcheck
+    - pacman --noconfirm -Syu --needed base-devel shellcheck
 
 lint:
   stage: build
   script:
-    - shellcheck -s bash
-        archiso/mkarchiso
-        configs/{baseline,releng}/build.sh
-        configs/releng/airootfs/root/.automated_script.sh
-        configs/releng/airootfs/usr/local/bin/choose-mirror
-        scripts/run_archiso.sh
-        archiso/initcpio/install/*
-    - shellcheck -s dash
-        archiso/initcpio/hooks/*
-        archiso/initcpio/script/*
+    - make check
diff --git a/Makefile b/Makefile
index 6b479f920773b74464c661bb73cdcba207af89d9..3ee8a6a6a8de2e3e20e98a76e33f7514a4c49204 100644
--- a/Makefile
+++ b/Makefile
@@ -13,6 +13,15 @@ DOC_DIR=$(DESTDIR)/usr/share/doc/archiso
 
 all:
 
+check:
+	shellcheck -s bash archiso/mkarchiso \
+	                   scripts/run_archiso.sh \
+	                   $(INSTALL_FILES) \
+	                   $(wildcard configs/*/build.sh) \
+	                   configs/releng/airootfs/root/.automated_script.sh \
+	                   configs/releng/airootfs/usr/local/bin/choose-mirror
+	shellcheck -s dash $(HOOKS_FILES) $(SCRIPT_FILES)
+
 install: install-program install-initcpio install-examples install-doc
 
 install-program:
@@ -32,4 +41,4 @@ install-doc:
 	install -d $(DOC_DIR)
 	install -m 644 -t $(DOC_DIR) $(DOC_FILES)
 
-.PHONY: install install-program install-initcpio install-examples install-doc
+.PHONY: check install install-program install-initcpio install-examples install-doc