155 Commits

Author SHA1 Message Date
Jeroen Domburg
a88e719e33 feat(driver): BitScrambler support
This adds an assembler for the BitScrambler assembly language,
plus unit tests for it. It also adds the loopback driver,
which can do BitScrambler operations on memory-to-memory
transfers. Documentation is also included.
2024-12-30 09:39:23 +08:00
Frantisek Hrbata
949f6cb9f7 feat(tools): add idf.py diag reporting tool
The initial implementation of a diagnostic tool that collects valuable
information about esp-idf and failed build to assist in investigating
reported issues.

The gathered information includes environmental variables, details about
the python virtual environment, installed tools, platform information,
project_description.json, sdkconfig, build logs, map file, linker
scripts, and others.

usage:

1) create the default report

   # allow diag to create the report directory name
   $ idf.py diag
   # explicitly specify the report directory
   $ idf.py diag --output <report directory>

2) examine the contents of the generated <report directory> for
   sensitive information and add additional content to the
   <report directory>

3) create report archive zip file that can be shared or attached to
   the reported issue

   $ idf.py diag --zip <report directory>

The tool collects information as described in what are known as recipe
files. A recipe file is a YAML file, similar to an Ansible playbook or a
GitHub action, but much more simplified. Each recipe outlines how to
gather a set of related information. For instance, the manager.yml
recipe gathers data related to the component manager. Each recipe
includes metadata such as its description, tags, and steps. Tags are
used to determine which recipes to use; by default, all built-in recipes
located in tools/idf_py_actions/diag/recipes are used. Steps consist of
a list of commands to be executed. Currently, there are four commands:
file, exec, env, and glob. For more detailed information about recipes,
their format, and commands, please refer to
tools/idf_py_actions/diag/recipes/README.md.

Recipe example for component manager:

description: IDF Component Manager information
tags: [manager, base, project]
output: manager
steps:
  - name: 'IDF Component Manager'
    cmds:
      - exec:
        cmd: 'python -m idf_component_manager version'
        output: manager.ver
      - file:
        path: '${PROJECT_DIR}/dependencies.lock'
      - glob:
        # Gather all idf_component.yml files from the project directory and
        # save them in directories relative to the project directory within
        # the idf_component directory.
        pattern: 'idf_component.yml'
        recursive: true
        relative: true
        path: '${PROJECT_DIR}'
        output: 'idf_component/'

Create report for manager

1) all recipes with manager tag

   $ idf.py diag --tag manager

2) use only the manager recipe explicitly; built-in recipes can be
   referenced simply by their name, but all recipes can be referenced
   by their path

   $ idf.py diag --recipe manager
   or
   $ idf.py diag --recipe <full path>

To display available recipes, use

   $ idf.py diag --list

and to verify recipes, use

   $ idf.py diag --check

Both --list and --check honers the --tag and --recipe options.

Signed-off-by: Frantisek Hrbata <frantisek.hrbata@espressif.com>
2024-12-27 12:08:59 +01:00
gaoxu
3e30d2e928 feat(esp32h21): ci enable public header check (stage7) 2024-12-24 16:44:08 +08:00
Alexey Lapshin
2a6e08431b Merge branch 'feature/move-gdb-options-to_project_description_json' into 'master'
feat(debugging): move gdbinit generation to CMake

Closes IDF-11489

See merge request espressif/esp-idf!34779
2024-11-20 14:30:40 +08:00
Alexey Gerenkov
941a7ee17f change(ci): Add qemu host tests for esp32c3 builds with Clang 2024-11-19 17:33:51 +03:00
Alexey Lapshin
48a49c8154 feat(debugging): move gdbinit generation to CMake
This feature is useful for 3rd-party software to run GDB with predefined
options that described in project_description.json file

allow to pass custom options to "idf.py gdb":

  --gdb-commands: command line arguments for gdb. (without changes)
  -ex: pass command to gdb.
  -x: pass gdbinit file to gdb. Alias for old --gdbinit command
2024-11-19 16:41:38 +07:00
Frantisek Hrbata
a4acbd2758 feat: Drop Python 3.8 support
Signed-off-by: Frantisek Hrbata <frantisek.hrbata@espressif.com>
2024-11-12 17:02:26 +08:00
Fu Hanxi
2a5743c0c5
ci: target-test job skip installing toolchain, only install python env
also run with collapsed time section to better track run time
2024-11-08 11:17:57 +01:00
radek.tandler
6a23790608 remove(nvs_flash/test_nvs_host): Old make based host tests removed after complete migration 2024-10-01 15:25:27 +02:00
Fu Hanxi
44c0faed43 ci: add manual job to make sure soc caps are parsed seamlessly 2024-09-23 09:46:36 +08:00
Adam Múdry
05b356f87f feat(nvs): Test nvs_partition_gen.py and nvs_check.py with pytest
Little fixes in nvs_check.py
2024-08-30 16:21:42 +02:00
Ivan Grokhotkov
fc4c445643
test(build_system): move reproducible build test to pytest 2024-08-11 20:24:03 +02:00
Fu Hanxi
b5bdc1ac9b
ci: add idf-build-apps load soc caps test case 2024-07-29 15:34:26 +02:00
Marius Vikhammer
00a46fedbe ci(qemu): remove allowed to fail attribute from qemu tests 2024-07-26 15:36:32 +08:00
igor.udot
5c23314da1 fix: apps empty list is not None 2024-07-19 12:29:42 +08:00
igor.udot
08a6985152 fix: temporal solution for host build and test 2024-07-18 13:57:35 +08:00
Fu Hanxi
54eb0dc301 Merge branch 'ci/console_confirmed_write' into 'master'
Ci: console use dut.confirm_write

See merge request espressif/esp-idf!32028
2024-07-12 12:01:44 +08:00
Marius Vikhammer
4cc56c6f18 ci(console): change pytest writes to confirm_write 2024-07-10 17:49:45 +08:00
Marius Vikhammer
ed18f232cf ci(qemu): add debug log and bin artifact to assist debugging 2024-07-09 14:44:11 +08:00
Aleksei Apaseev
63bd3a18ad ci: add failed jobs report generator. Improve Target Test Report
Introduced changes:
- refactor the cli script used for report generation
- introduce failed jobs report generator
- cover job report generation with tests
- add job failure rate
- add test cases failure rate
- add current branch / other branches statistic for failed jobs / testcases
2024-06-20 14:40:54 +08:00
Aleksei Apaseev
40c8a16ad4 ci: add known failure cases to the target test report
target test report:
- refactor the methods to ensure reusability
- cover report generation with tests
- introduce a known failure tests block in report
- add grafana link to testcases dashboard
2024-05-28 15:36:22 +08:00
Fu Hanxi
61559dc3e4 ci: ignore collect import error on CI with env var 2024-05-24 16:29:39 +02:00
Sudeep Mohanty
50460d3483 feat(ci): Added CI host test for the linux target on MacOS runners
This commit adds a CI host test for the linux target to build and run
MacOS runners. Additionally, it adds a MacOS test for the hellow_world
app.
2024-05-24 16:29:22 +02:00
Fu Hanxi
d3abfa3d73 Merge branch 'ci/fix_pytest_embedded_log_dir' into 'master'
ci: move log dir from pytest_embedded_log to pytest-embedded

See merge request espressif/esp-idf!30747
2024-05-10 16:28:49 +08:00
Fu Hanxi
152db1a4ba
ci: move log dir from pytest_embedded_log to pytest-embedded 2024-05-09 12:23:04 +02:00
Frantisek Hrbata
9df59a2193 ci: add simple test for idf_size.py python compatibility
This adds a simple test that tries to run idf_size.py help and check
if the process does not exit with error. This is just to make sure
that idf_size.py can be used with minimum required python version.

Signed-off-by: Frantisek Hrbata <frantisek.hrbata@espressif.com>
2024-05-08 13:38:19 +02:00
Roland Dobai
6f6706cb8e ci(tools): Fix IDF_MIRROR_PREFIX_MAP for including all tools from local 2024-04-26 15:17:39 +02:00
Anton Maklakov
e1ef214203 feat(tools): stop installation if tool is invalid
install/check commands - stop on error
export/list commands - print a warning
2024-04-12 14:03:49 +08:00
wanlei
535afdd7f4 feat(esp32c61): ci enable header check, fix c61 build 2024-03-27 19:39:59 +08:00
Fu Hanxi
b5318eee59
ci: move check_public_headers from pre_check stage to host_test
this job is the bottleneck of the pre_check stage
2024-03-26 13:18:41 +01:00
Fu Hanxi
b70d65444a
ci: always set expire_in and when with artifacts
set it under `default` does not work due to gitlab bugs.
will use `default` back once the bugs are resolved.
2024-02-16 13:43:53 +01:00
igor.udot
f5972ab592 ci: change known_failure_cases workflow 2024-01-21 15:36:25 +08:00
Fu Hanxi
fba96d58c2
ci: dynamic pipeline
build:
- upgrade idf-build-apps to 2.x
- unify get_pytest_apps and get_cmake_apps to get_all_apps
	- returns (test_apps, non_test_apps) tuple
- add tests for the new get_all_apps

assign:
- generate build report
- generate target test pipeline based on the build report

target test:
- download artifacts from minio server
- users can use `pytest --pipeline-id xxxxx` to download and flash
the binaries from the artifacts

.post:
- generate target test reports
2024-01-10 15:37:34 +01:00
Fu Hanxi
b709c880dd
ci: add linter for gitlab yaml files
- remove duplicated artifacts default values
- migrate check_artifacts_expire_time.py
- migrate check_rules_yml.py
2024-01-10 15:29:42 +01:00
Marius Vikhammer
852fbce397 ci(qemu): disable WDT when running qemu tests
WDTs are flakey in QEMU, disable while testing for now to
stop spurious test failures.
2023-12-13 18:47:26 +08:00
Frantisek Hrbata
5df4decf07 feat: use esp-idf-sbom pre-commit plugin
Currently sbom manifest is checked only in .gitmodules and
this check is done in pre-commit and also in CI. Meaning it's running
three times(pre-commit before push if user has it enabled, in CI
as there is the pre-commit run again and again with test in CI). Since
esp-idf-sbom contains a full manifest validation support and pre-commit
plugin for it, let's use it. This removes all the current sbom testing
and replaces it with a signle pre-commit plugin which validates all
manifests files(sbom.yml, idf_component.yml, .gitmodules and also
referenced manifests) in repository. Note that this checks all
manifests, not only ones which were modified. The check is reasonably
fast though, so it should not cause any problem. The reason for
validating all manifest files is that we want to make sure that the sbom
information in .gitmodules is updated too and that the hash
recorded in .gitmodules is up-to-date. Meaning submodule update
would not trigger this plugin, because no manifest was changed.

Signed-off-by: Frantisek Hrbata <frantisek.hrbata@espressif.com>
2023-12-06 10:08:54 +01:00
Ivan Grokhotkov
178b27ed80
ci(qemu): use qemu from tools.json, don't require a special image 2023-12-03 07:45:19 +01:00
Ivan Grokhotkov
71153c7dbb
feat(tools): add 'idf.py qemu' extension
This extension allows running programs in QEMU similar to running
them on a real chip:

- 'idf.py qemu' — builds and runs the program in QEMU. User gets
  a QEMU instance launched, and can work with it as a normal QEMU
  instance.
- 'idf.py qemu monitor' — same, but QEMU is launched in the
  background, and idf_monitor runs in the foreground, showing QEMU
  output. Compared to only running 'idf.py qemu' this enables, for
  example, automatic backtrace decoding.
- 'idf.py qemu gdb' — launches QEMU in the background and opens an
  interactive GDB prompt, connecting it to QEMU.
- 'idf.py qemu --gdb monitor' and 'idf.py gdb' in another shell:
  launches QEMU in the background, keeps it suspended until GDB is
  connected, and opens idf_monitor. GDB can be used in another shell
  to debug the application.
2023-12-03 07:45:19 +01:00
Roland Dobai
bc1d74bb88 fix(ci): Remove unittest-xml-reporting dependency from host tests 2023-11-30 14:03:41 +01:00
Roland Dobai
cad04baba1 feat(ci): Merge tool test jobs and produce jUnit reports 2023-11-27 09:11:35 +01:00
Fu Hanxi
a6ccc2e18e
ci: optimize git strategy 2023-11-14 15:31:30 +01:00
igor udot (horw)
2dcb6d1fbb ci: added build log artifacts for linux 2023-11-06 14:34:33 +08:00
Fu Hanxi
a3a8c2acb9
ci: move default variables, before(after)_script into a single file
could help reuse the default settings on main pipeline and child
pipeline

renamed:
- .before_script_minimal -> .before_script:minimal
- .before_script_macos -> .before_script:build:macos
- .before_script_build_jobs -> .before_script:build
2023-10-13 12:55:51 +02:00
Peter Dragun
95b764970e Merge branch 'feat/uf2-to-esptool' into 'master'
feat(tools): move uf2 file generation to esptool

Closes IDF-7434

See merge request espressif/esp-idf!25655
2023-10-12 16:03:16 +08:00
Anton Maklakov
02802ea20a feat(tools): Add QEMU 8.0.0_20230522 to tools.json
Process wildcards in the install and download lists of idf_tools
    Fix the install and download handlers to get common behaviour
2023-10-10 09:59:38 +07:00
Peter Dragun
9acf412a07 feat(tools): move uf2 generation to esptool 2023-10-09 15:38:30 +02:00
Fu Hanxi
5e4427ab13
ci(pytest): add plugin pytest-ignore-test-results
pass with warning if test job got ignored.
2023-08-18 10:50:18 +08:00
Fu Hanxi
f5984d482a
ci: fix skipping qemu test always 2023-07-19 12:02:59 +08:00
Marius Vikhammer
91aaf8b1a0 ci(qemu): temporarily allow qemu tests to fail 2023-07-13 11:16:38 +08:00
Fu Hanxi
537bd3efec
ci: enable check app dependency for qemu and linux tests 2023-07-11 15:32:57 +08:00