]> granicus.if.org Git - esp-idf/commitdiff
ci: support jobs which don’t run unless triggered by name
authorIvan Grokhotkov <ivan@espressif.com>
Mon, 16 Apr 2018 03:48:36 +0000 (11:48 +0800)
committerIvan Grokhotkov <ivan@espressif.com>
Thu, 19 Apr 2018 07:08:08 +0000 (15:08 +0800)
By default, any job will run unless a filter is given, in that case
the filter will determine if the job should run or not. Some jobs do
not need to be run by default, and should only be triggered using the
bot. For such jobs, BOT_NEEDS_TRIGGER_BY_NAME can added to
environment variables.

tools/ci/apply_bot_filter.py

index 26f458836ebf4c8d5cbaea1eec766575dece747c..29c8bb565e92a459ef1391ed3022e5946ccb04d9 100755 (executable)
@@ -28,8 +28,8 @@ def parse_filter(filter_name):
     return filters
 
 
-def process_filter(filter_name, ci_name):
-    execute = True
+def process_filter(execute_by_default, filter_name, ci_name):
+    execute = execute_by_default
     
     # bot message is case insensitive (processed with lower case). so we also convert ci_name to lower case.
     ci_name = ci_name.lower()
@@ -51,8 +51,12 @@ def process_filter(filter_name, ci_name):
 
 
 if __name__ == "__main__":
-    need_to_execute = process_filter("BOT_STAGE_FILTER", os.getenv("CI_JOB_STAGE")) \
-                      and process_filter("BOT_JOB_FILTER", os.getenv("CI_JOB_NAME"))
+    execute_by_default = True
+    if os.getenv("BOT_NEEDS_TRIGGER_BY_NAME", "0") == "1":
+        execute_by_default = False
+
+    need_to_execute = process_filter(True, "BOT_STAGE_FILTER", os.getenv("CI_JOB_STAGE")) \
+                      and process_filter(execute_by_default, "BOT_JOB_FILTER", os.getenv("CI_JOB_NAME"))
     if need_to_execute:
         sys.exit(0)
     else: