Skip to content

Conversation

@KarolinaPomian
Copy link
Collaborator

@KarolinaPomian KarolinaPomian commented Jul 28, 2025

This pull request introduces several improvements and new workflows to the CI/CD pipeline, focusing on better build management, artifact reporting, and configuration consistency. The main highlights include the addition of new reusable workflows for base builds and report summaries, enhancements to workflow triggers and job configuration, and improved linter and runner setup.

New Workflows and Build Improvements:

  • Added a new reusable workflow bare-metal-build.yml to support parameterized base builds on self-hosted runners, with detailed steps for dependency installation, version management, and artifact upload.
  • Introduced a report-summary.yml workflow to automatically summarize test reports from artifacts and add results to the GitHub Actions summary.

Workflow Configuration and Consistency:

  • Updated base_build.yml, coverity.yml, scorecard.yml, and build_docker_tpl.yml to use consistent YAML syntax (double quotes), improved job step naming, and standardized runner configuration. [1] [2] [3] [4] [5] [6] [7]
  • Enhanced base_build.yml to ignore documentation, test, and config file changes for triggering builds, reducing unnecessary workflow runs.

Runner and Linter Configuration:

  • Added a new self-hosted runner configuration in .github/configs/actionlint.yml to specify labels for runners supporting DPDK builds.
  • Updated the linter workflow to explicitly specify the actionlint config file.

Artifact Handling:

  • Improved artifact upload steps in build workflows to ensure all relevant binaries are included, with some duplication fixed in the upload paths.

These changes collectively make the CI/CD process more modular, maintainable, and efficient, especially when working with self-hosted runners and large dependency trees.This pull request primarily standardizes and improves the GitHub Actions CI/CD workflows by updating formatting, adding path-based triggers, and introducing a new workflow for bare-metal builds. The changes enhance maintainability, consistency, and efficiency in the build process.

Workflow improvements and standardization:

  • Added a new .github/workflows/bare-metal-build.yml workflow to support base builds on self-hosted Linux runners, including logic for dependency caching, version checks, and artifact uploads. This workflow is tailored for environments where some dependencies (like DPDK and MTL) are pre-installed, and includes steps to update version files as needed.
  • Standardized YAML formatting across workflows by consistently using double quotes for strings, improving readability and reducing potential YAML parsing issues. [1] [2] [3] [4] [5] [6] [7] [8]

Trigger and filtering enhancements:

  • Updated base_build.yml to ignore changes in documentation, tests, and other non-build files by adding paths-ignore for push and pull request events, reducing unnecessary workflow runs.

Minor workflow adjustments:

  • Fixed and unified runner configuration and step naming for clarity and consistency in base_build.yml and coverity.yml. [1] [2]
  • Fixed duplication in artifact upload paths in base_build.yml (possibly a copy-paste error, as ffmpeg-6-1/ffmpeg and ffmpeg-7-0/ffmpeg appear multiple times).This pull request introduces a new bare-metal smoke test workflow, improves configuration and logging for validation tests, and refines the build process for better flexibility and maintainability. The most important changes are grouped below.

CI Workflow Enhancements

  • Added a new workflow file smoke_tests.yml that orchestrates a multi-stage bare-metal smoke test pipeline, including build, environment setup, and test execution, with artifact upload and summary reporting.
  • Updated base_build.yml to support workflow_call with a branch input, allowing other workflows to trigger builds on specific branches. The build job now checks out the branch specified by the caller. [1] [2]

Test Configuration and Topology

  • Added new configuration files: test_config_workflow.yaml for test parameters and topology_config_workflow.yaml for host and network setup, supporting flexible test environments and parameterization. [1] [2]

Validation Test Improvements

  • Improved log directory handling in conftest.py by sanitizing test names for filesystem safety and documenting log path creation. Enhanced cleanup logic to robustly kill test processes and handle errors more gracefully. [1] [2] [3] [4]

Audio Test Parametrization and Cleanup

  • Updated audio test files to use more explicit parametrization, marking key tests as smoke tests and ensuring proper cleanup after test execution. Also fixed imports and added missing file cleanup utilities. [1] [2] [3] [4] [5] [6]- Add hello-world-test job with basic system checks
  • Test environment variables, file system access, and basic commands
  • Provide foundation for validating runner setup before complex builds
  • Set 15-minute timeout for quick validation cycles

@KarolinaPomian KarolinaPomian force-pushed the smoke-tests branch 3 times, most recently from ecdf867 to b06df55 Compare August 4, 2025 13:54
KarolinaPomian and others added 26 commits September 3, 2025 14:09
…prove directory structure for logs for multiple rx instances
…eport and updating job conditions for report summary execution
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This pull request introduces a comprehensive validation test infrastructure that includes new workflows for bare-metal smoke testing, enhanced logging and configuration capabilities, and improved test execution. The changes add smoke test markers to key tests and provide better validation, cleanup, and reporting mechanisms.

  • Introduces a new bare-metal smoke test workflow with parameterization support and proper cleanup
  • Enhances logging and validation infrastructure with new common utilities and FFmpeg test framework improvements
  • Adds smoke test markers and configuration files for streamlined CI test execution

Reviewed Changes

Copilot reviewed 51 out of 55 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
tests/validation/pytest.ini Adds smoke test markers for test categorization
tests/validation/functional/test_demo.py Adds smoke markers and log_path parameter to demo tests
tests/validation/functional/st2110/st30/*.py Updates audio tests with log_path parameters and smoke markers
tests/validation/functional/st2110/st20/*.py Updates video tests with log_path parameters and smoke markers
tests/validation/functional/local/video/*.py Enhances video tests with validation and smoke markers
tests/validation/functional/local/audio/*.py Improves audio tests with validation and smoke markers
tests/validation/functional/local/blob/*.py Updates blob tests with validation and smoke markers
tests/validation/functional/cluster/*.py Adds log_path parameters to cluster tests
tests/validation/conftest.py Major refactoring of logging, validation, and fixture management
tests/validation/configs/ New configuration files for workflow-based testing
tests/validation/common/ New validation utilities and log constants
tests/validation/Engine/ Enhanced engine components with better validation and logging
.github/workflows/ New smoke test workflow and updated existing workflows
Comments suppressed due to low confidence (1)

tests/validation/common/log_validation_utils.py:1

  • The regex pattern on line 239 includes '_{2,}' which matches multiple underscores, but then line 240 applies the same pattern again. The first regex should not include the underscore pattern since it's handled separately on the next line, making this redundant.
# SPDX-License-Identifier: BSD-3-Clause

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

Comment on lines +24 to +25
pytest.param("PCM16_48000_Mono", marks=pytest.mark.smoke),
*[f for f in audio_files_25_03.keys() if f != "PCM16_48000_Stereo"],
Copy link

Copilot AI Sep 5, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The parametrization excludes 'PCM16_48000_Stereo' but marks 'PCM16_48000_Mono' as smoke. This creates inconsistent test coverage where one audio format is marked as smoke and excluded from non-smoke runs, while another similar format is completely excluded from the test.

Suggested change
pytest.param("PCM16_48000_Mono", marks=pytest.mark.smoke),
*[f for f in audio_files_25_03.keys() if f != "PCM16_48000_Stereo"],
pytest.param("PCM16_48000_Stereo", marks=pytest.mark.smoke),
*[f for f in audio_files_25_03.keys() if f not in ("PCM16_48000_Mono", "PCM16_48000_Stereo")],

Copilot uses AI. Check for mistakes.
Comment on lines +310 to +313
if not timeout:
timeout = (
60 # Default timeout or use a constant like MCM_RXTXAPP_RUN_TIMEOUT
)
Copy link

Copilot AI Sep 5, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The comment suggests using MCM_RXTXAPP_RUN_TIMEOUT constant but a magic number 60 is used instead. Either use the suggested constant from the imports or document why a different timeout value is appropriate for FFmpeg processes.

Copilot uses AI. Check for mistakes.

@pytest.fixture(scope="function")
def log_path(log_path_dir: str, request) -> str:
def log_path(log_path_dir: str, request) -> Path:
Copy link

Copilot AI Sep 5, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The return type annotation indicates Path but the function docstring and parameter description suggest it returns a string. The actual implementation returns Path(test_log_path), so the docstring should be updated to reflect the correct return type.

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants