diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 8ad83200b9a51b7db3835f1d125aad951b77fa3b..1bfdc15515934a25604b3aae31e7a7d89e2f6a3f 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -361,8 +361,9 @@ build_ch:
 # URL and filename for tarball containing entire OpenHarmony OS codebase
 .openharmony_tarball:
   rules:
-    - if: $CI_PIPELINE_SOURCE == "merge_request_event"
-    - if: $CI_COMMIT_BRANCH
+    - if: $CI_MERGE_REQUEST_EVENT_TYPE == "merge_train"
+      # Only run these rather expensive jobs in the merge train pipelines
+    - if: $CI_COMMIT_BRANCH || $CI_PIPELINE_SOURCE == "merge_request_event"
       when: manual
       # We don't really want these jobs to fail, but we don't want to block
       # pipeline and dependent jobs either