Преглед изворни кода

Merge branch 'ci/upload_build_example_for_release_test' into 'master'

ci: preserve artifacts for local test apps

See merge request espressif/esp-idf!15990
Island пре 4 година
родитељ
комит
71c66abcb7

+ 5 - 1
.gitlab/ci/pre_check.yml

@@ -152,9 +152,13 @@ scan_tests:
     TEST_APPS_OUTPUT_DIR: ${CI_PROJECT_DIR}/tools/test_apps/test_configs
     COMPONENT_UT_OUTPUT_DIR: ${CI_PROJECT_DIR}/component_ut/test_configs
     CI_SCAN_TESTS_PY: ${CI_PROJECT_DIR}/tools/ci/python_packages/ttfw_idf/CIScanTests.py
+    EXTRA_TEST_DIRS: >-
+      examples/bluetooth/esp_ble_mesh/ble_mesh_console
+      examples/bluetooth/hci/controller_hci_uart_esp32
+      examples/wifi/iperf
   script:
     - set_component_ut_vars
-    - run_cmd python $CI_SCAN_TESTS_PY example_test $EXAMPLE_TEST_DIR -b cmake --exclude examples/build_system/idf_as_lib -c $CI_TARGET_TEST_CONFIG_FILE -o $EXAMPLE_TEST_OUTPUT_DIR
+    - run_cmd python $CI_SCAN_TESTS_PY example_test $EXAMPLE_TEST_DIR -b cmake --exclude examples/build_system/idf_as_lib -c $CI_TARGET_TEST_CONFIG_FILE -o $EXAMPLE_TEST_OUTPUT_DIR --extra_test_dirs $EXTRA_TEST_DIRS
     - run_cmd python $CI_SCAN_TESTS_PY test_apps $TEST_APPS_TEST_DIR -c $CI_TARGET_TEST_CONFIG_FILE -o $TEST_APPS_OUTPUT_DIR
     - run_cmd python $CI_SCAN_TESTS_PY component_ut $COMPONENT_UT_DIRS --exclude $COMPONENT_UT_EXCLUDES -c $CI_TARGET_TEST_CONFIG_FILE -o $COMPONENT_UT_OUTPUT_DIR
 

+ 2 - 2
examples/bluetooth/esp_ble_mesh/ble_mesh_console/README.md

@@ -1,5 +1,5 @@
-| Supported Targets | ESP32 |
-| ----------------- | ----- |
+| Supported Targets | ESP32 | ESP32-C3 | ESP32-S3 |
+| ----------------- | ----- | -------- | -------- |
 
 # ble mesh node console demo
 ## Introduction  

+ 5 - 14
examples/bluetooth/esp_ble_mesh/ble_mesh_console/main/ble_mesh_reg_test_perf_client_cmd.c

@@ -1,21 +1,12 @@
-// Copyright 2017-2019 Espressif Systems (Shanghai) PTE LTD
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
+/*
+ * SPDX-FileCopyrightText: 2017-2021 Espressif Systems (Shanghai) CO LTD
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
 
 #include "freertos/FreeRTOS.h"
 #include "freertos/task.h"
 #include "freertos/queue.h"
-#include "freertos/xtensa_api.h"
 #include "freertos/FreeRTOSConfig.h"
 
 #include "esp_ble_mesh_networking_api.h"

+ 0 - 1
tools/ci/check_copyright_ignore.txt

@@ -2827,7 +2827,6 @@ examples/bluetooth/esp_ble_mesh/ble_mesh_console/main/ble_mesh_console_main.c
 examples/bluetooth/esp_ble_mesh/ble_mesh_console/main/ble_mesh_console_system.c
 examples/bluetooth/esp_ble_mesh/ble_mesh_console/main/ble_mesh_reg_cfg_client_cmd.c
 examples/bluetooth/esp_ble_mesh/ble_mesh_console/main/ble_mesh_reg_gen_onoff_client_cmd.c
-examples/bluetooth/esp_ble_mesh/ble_mesh_console/main/ble_mesh_reg_test_perf_client_cmd.c
 examples/bluetooth/esp_ble_mesh/ble_mesh_console/main/ble_mesh_register_cmd.c
 examples/bluetooth/esp_ble_mesh/ble_mesh_console/main/ble_mesh_register_server_cmd.c
 examples/bluetooth/esp_ble_mesh/ble_mesh_console/main/register_bluetooth.c

+ 13 - 11
tools/ci/python_packages/ttfw_idf/CIScanTests.py

@@ -94,7 +94,9 @@ def main():  # type: () -> None
                         help='output path of the scan result')
     parser.add_argument('--exclude', nargs='*',
                         help='Ignore specified directory. Can be used multiple times.')
-    parser.add_argument('--preserve', action='store_true',
+    parser.add_argument('--extra_test_dirs', nargs='*',
+                        help='Additional directories to preserve artifacts for local tests')
+    parser.add_argument('--preserve_all', action='store_true',
                         help='add this flag to preserve artifacts for all apps')
     parser.add_argument('--build-all', action='store_true',
                         help='add this flag to build all apps')
@@ -116,7 +118,8 @@ def main():  # type: () -> None
             output_json([], target, args.build_system, args.output_path)
             SystemExit(0)
 
-    paths = set([os.path.join(str(os.getenv('IDF_PATH')), path) if not os.path.isabs(path) else path for path in args.paths])
+    idf_path = str(os.getenv('IDF_PATH'))
+    paths = set([os.path.join(idf_path, path) if not os.path.isabs(path) else path for path in args.paths])
 
     test_cases = []
     for path in paths:
@@ -126,7 +129,6 @@ def main():  # type: () -> None
             assign = _TestAppsAssignTest(path, args.ci_config_file)
         else:
             raise SystemExit(1)  # which is impossible
-
         test_cases.extend(assign.search_cases())
 
     '''
@@ -150,15 +152,16 @@ def main():  # type: () -> None
 
         if build_test_case_apps:
             scan_info_dict[target]['test_case_apps'] = set()
+            test_dirs = args.extra_test_dirs if args.extra_test_dirs else []
             for case in test_cases:
-                app_dir = case.case_info['app_dir']
-                app_target = case.case_info['target']
-                if app_target.lower() != target.lower():
-                    continue
+                if case.case_info['target'].lower() == target.lower():
+                    test_dirs.append(case.case_info['app_dir'])
+            for app_dir in test_dirs:
+                app_dir = os.path.join(idf_path, app_dir) if not os.path.isabs(app_dir) else app_dir
                 _apps = find_apps(build_system_class, app_dir, True, exclude_apps, target.lower())
                 if _apps:
                     scan_info_dict[target]['test_case_apps'].update(_apps)
-                    exclude_apps.append(app_dir)
+                    exclude_apps.extend(_apps)
         else:
             scan_info_dict[target]['test_case_apps'] = set()
 
@@ -169,7 +172,6 @@ def main():  # type: () -> None
                     find_apps(build_system_class, path, True, exclude_apps, target.lower()))
         else:
             scan_info_dict[target]['standalone_apps'] = set()
-
     test_case_apps_preserve_default = True if build_system == 'cmake' else False
     for target in SUPPORTED_TARGETS:
         apps = []
@@ -178,14 +180,14 @@ def main():  # type: () -> None
                 'app_dir': app_dir,
                 'build_system': args.build_system,
                 'target': target,
-                'preserve': args.preserve or test_case_apps_preserve_default
+                'preserve': args.preserve_all or test_case_apps_preserve_default
             })
         for app_dir in scan_info_dict[target]['standalone_apps']:
             apps.append({
                 'app_dir': app_dir,
                 'build_system': args.build_system,
                 'target': target,
-                'preserve': args.preserve
+                'preserve': args.preserve_all
             })
         output_path = os.path.join(args.output_path, 'scan_{}_{}.json'.format(target.lower(), build_system))
         with open(output_path, 'w') as fw: