diff --git a/retrigger_mr_pipeline_job.py b/retrigger_mr_pipeline_job.py
index 5357ba677720d3e57a4fbd4afee51af8e908a39b..b9b425ecc8b621baf237f081f714430648942df0 100755
--- a/retrigger_mr_pipeline_job.py
+++ b/retrigger_mr_pipeline_job.py
@@ -6,7 +6,7 @@ import sys
 from gitlab import Gitlab, GitlabGetError
 
 
-def retrigger_mr_pipeline_job(project, mr, job_name):
+def retrigger_mr_pipeline_job(project, mr, job_name, status_list):
     # Get pipeline
     pipeline = project.pipelines.get(mr.pipeline.get("id"), retry_transient_errors=True)
 
@@ -15,20 +15,19 @@ def retrigger_mr_pipeline_job(project, mr, job_name):
     for pipelinejob in pipeline.jobs.list():
         if pipelinejob.name == job_name:
             job = project.jobs.get(pipelinejob.id, retry_transient_errors=True)
-
     if not job:
-        sys.exit(
-            "ERROR: could not find job '%s' in pipeline of !%s" % (job_name, mr.iid)
-        )
+        print("Could not find job '%s' in pipeline of !%s" % (job_name, mr.iid))
+        return None
+
+    # Only retrigger if job is in certain status
+    if job.status not in status_list:
+        return None
 
-    # Retrigger if not already failed
-    if job.status not in ["failed", "skipped"]:
-        job.retry()
-        print("Retrigger job '%s' of pipeline #%s:" % (job_name, pipeline.id))
-        job = project.jobs.get(job.id, retry_transient_errors=True)
-        print(job.web_url)
-    else:
-        job = None
+    # Retrigger job
+    job.retry()
+    print("Retrigger job '%s' of pipeline #%s:" % (job_name, pipeline.id))
+    job = project.jobs.get(job.id, retry_transient_errors=True)
+    print(job.web_url)
 
     return job
 
@@ -80,7 +79,7 @@ def main():
     if not mr:
         sys.exit("ERROR: could not find merge request %s!%s" % (project.name, args.iid))
 
-    retrigger_mr_pipeline_job(project, mr, args.job)
+    retrigger_mr_pipeline_job(project, mr, args.job, ["success", "running"])
 
 
 if __name__ == "__main__":
diff --git a/retrigger_mr_pipeline_jobs.py b/retrigger_mr_pipeline_jobs.py
index 95e40da9b4490281fa54fdce289b1fd1d3b3af1e..24019bbf24a2f6c8e102106cb62ce32b1917aaff 100755
--- a/retrigger_mr_pipeline_jobs.py
+++ b/retrigger_mr_pipeline_jobs.py
@@ -2,7 +2,8 @@
 import common
 
 import argparse
-from gitlab import Gitlab
+import sys
+from gitlab import Gitlab, GitlabJobRetryError
 
 from get_merge_requests import get_merge_requests
 from retrigger_mr_pipeline_job import retrigger_mr_pipeline_job
@@ -72,8 +73,20 @@ def main():
         commit=args.commit,
     )
 
+    failed = 0
     for mr in mrs:
-        retrigger_mr_pipeline_job(project, mr, args.job)
+        try:
+            retrigger_mr_pipeline_job(project, mr, args.job, ["success", "running"])
+        except GitlabJobRetryError as e:
+            print(
+                "ERROR: Could not retrigger job '%s' of %s!%s: %s"
+                % (args.job, args.project, mr.iid, e)
+            )
+            failed = failed + 1
+            continue
+
+    if failed > 0:
+        sys.exit(1)
 
 
 if __name__ == "__main__":