diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index a79d3209bb70b7a1b9b55d766263945f5991f59c..d8be35fbb7f3bc00ef1c7df14cc0ee47df9c35cf 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,4 +1,5 @@
 stages:
+  - labels
   - quality
   - build
   - tests
@@ -16,6 +17,15 @@ workflow:
       - Cargo.toml
       - Cargo.lock
 
+check_labels:
+  extends: .env
+  stage: labels
+  rules:
+    - if: $CI_PIPELINE_SOURCE == "merge_request_event"
+    - when: never
+  script:
+    - ./scripts/check_labels.sh $CI_MERGE_REQUEST_LABELS
+
 .env:
   image: paritytech/ci-linux:production
   tags:
diff --git a/scripts/check_labels.sh b/scripts/check_labels.sh
new file mode 100755
index 0000000000000000000000000000000000000000..7316e1087250bc3174e1959efb6e84ab56b6b9bf
--- /dev/null
+++ b/scripts/check_labels.sh
@@ -0,0 +1,17 @@
+#!/usr/bin/env bash
+
+RN_LABELS=(
+  RN-binary
+  RN-runtime
+  RN-silent
+)
+
+for RN_LABEL in ${RN_LABELS[@]}; do
+  if [[ "$1" == *"$RN_LABEL"* ]]; then
+    echo "exit 0"
+    exit 0
+  fi
+done
+
+echo "exit 1"
+exit 1