Skip to content

feat: init of project structure with CICD#1

Merged
tylerkron merged 30 commits intomainfrom
init
Mar 23, 2025
Merged

feat: init of project structure with CICD#1
tylerkron merged 30 commits intomainfrom
init

Conversation

@tylerkron
Copy link
Copy Markdown
Contributor

limited implementation to get the project setup

- Updated .gitignore to exclude coverage report files.
- Configured GitHub Actions to enforce a coverage threshold of 80%.
- Added steps to run tests with coverage, generate a coverage report, and upload it as an artifact.
- Updated DAQiFi.Core.Tests.csproj to enable coverage collection and specify output format.

This improves the visibility of test coverage and ensures quality standards are met.
- Added push trigger for main branch to the GitHub Actions workflow.
- Updated upload-artifact action to a specific version (v4) for better stability.

These changes improve the CI/CD process by ensuring coverage reports are generated on both pull requests and direct pushes to the main branch.
- Changed the upload-artifact action from a specific commit hash to the stable version tag (v4) for better clarity and maintainability.

This minor update enhances the workflow by ensuring the action is referenced in a more standard way.
- Set working directory for all relevant steps to streamline the build and test process.
- Updated paths for restoring dependencies, building, testing, and generating coverage reports to ensure they point to the correct directory.

These changes enhance the clarity and efficiency of the CI/CD pipeline, ensuring that all operations are executed in the appropriate context.
- Adjusted paths for the coverage report to ensure they are correctly pointing to the DAQiFi.Core directory.
- Streamlined the step for generating the coverage report by removing redundant working-directory specification.

These changes improve the accuracy of the coverage report generation process in the CI/CD pipeline.
- Removed specific working-directory specifications for steps, simplifying the workflow.
- Updated coverage report paths to be more generic, enhancing flexibility and maintainability.

These changes streamline the CI/CD process and improve the accuracy of coverage report generation.
- Added a step to list files in the DAQiFi.Core directory for better visibility during CI runs.
- Specified project paths for restoring dependencies, building, and testing to ensure operations are executed on the correct project files.

These changes enhance the clarity of the workflow and ensure that the CI/CD process is accurately targeting the intended project components.
- Renamed the step for listing files to "List directory structure" and changed the command to show the full directory structure for better visibility.
- Removed specific project paths from the restore, build, and test commands to streamline the workflow and reduce redundancy.

These changes enhance the clarity and efficiency of the CI/CD process by simplifying commands and improving output visibility.
…d coverage reporting

- Removed the environment variable for coverage threshold and simplified the setup for .NET.
- Added a step to create a symbolic link to handle case sensitivity issues on Linux.
- Consolidated build and test steps into a single step for clarity and efficiency.
- Updated coverage report generation to streamline the process.

These changes enhance the workflow's robustness and ensure accurate coverage reporting while addressing case sensitivity in the project structure.
- Introduced a new GitHub Actions workflow for continuous integration.
- Configured steps for checking out the code, setting up .NET, restoring dependencies, building the project, and running tests.
- This setup ensures automated testing and builds on pull requests to the main branch, enhancing the reliability of the development process.
- Deleted the existing GitHub Actions workflow for PR validation.
- This change may be part of a transition to a new CI/CD strategy or a simplification of the current setup.
- Renamed project and namespace references from "DAQiFi" to "Daqifi" for consistency across the solution.
- Updated project files and references to reflect the new casing, ensuring uniformity in naming conventions.

These changes enhance clarity and maintainability throughout the codebase.
- Updated the restore, build, and test commands in the CI workflow to explicitly target the Daqifi.Core.sln solution file.
- This change ensures that operations are performed on the correct project, enhancing clarity and reducing potential errors during the CI process.
- Updated project names from "DAQiFi.Core" and "DAQiFi.Core.Tests" to "Daqifi.Core" and "Daqifi.Core.Tests" respectively.
- This change aligns with previous casing standardization efforts, enhancing clarity and maintainability across the solution.
- Updated the CI workflow to use the correct casing for the solution file, changing references from "DAQiFi.Core.sln" to "Daqifi.Core.sln".
- This aligns with previous casing standardization efforts and ensures consistency across the CI process.
- Changed project names in the solution file from "DAQifi.Core" and "DAQifi.Core.Tests" to "Daqifi.Core" and "Daqifi.Core.Tests" for consistency.
- This aligns with ongoing efforts to standardize casing across the codebase, improving clarity and maintainability.
- Removed the debug step that listed directory contents in the CI workflow. This helps streamline the workflow and focuses on essential steps for the build process.
@tylerkron tylerkron merged commit 05228ac into main Mar 23, 2025
1 check passed
@tylerkron tylerkron deleted the init branch March 23, 2025 06:19
tylerkron added a commit that referenced this pull request Oct 17, 2025
…imeout behavior

## Changes

### Concurrency Protection (Importance: 8/10)
- Added `SemaphoreSlim` to all three device finders (WiFi, Serial, HID)
- Prevents race conditions when multiple threads call `DiscoverAsync()` simultaneously
- Ensures only one discovery operation runs at a time per finder instance
- Added proper disposal of semaphore in `Dispose()` methods

### Timeout Behavior Fix (Importance: 6/10)
- Fixed `WiFiDeviceFinder.DiscoverAsync(CancellationToken)` to use `Timeout.InfiniteTimeSpan`
- Previously hardcoded 5-second timeout, now properly respects cancellation token only
- Consolidated timeout logic in private `DiscoverAsync(TimeSpan, CancellationToken)` method
- Added conditional timeout application: only calls `CancelAfter()` when timeout is not infinite

## Testing
- All 23 tests passing on .NET 8.0 and .NET 9.0
- Verified builds successfully

## Qodo PR Review
- ✅ Suggestion #1: Add SemaphoreSlim (importance 8/10)
- ✅ Suggestion #2: Fix timeout behavior (importance 6/10)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
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.

1 participant