Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
60 commits
Select commit Hold shift + click to select a range
755fd89
Add comprehensive driver layer architecture and implementation plans
claude Nov 14, 2025
f13eb1a
Add FluentDocker v3.0.0 architecture with non-singleton kernel and Sy…
claude Nov 14, 2025
b513e4a
Add comprehensive architecture documentation overview and quick refer…
claude Nov 14, 2025
d1c7c4b
Add comprehensive error handling strategy and migration guide for v3.0.0
claude Nov 14, 2025
b07ae0f
Update architecture README with error handling documentation
claude Nov 14, 2025
fbd5561
Remove old v2.x.x compatible architecture documents
claude Nov 14, 2025
edc41b0
Add fluent API, composable interfaces, and enhanced capabilities docu…
claude Nov 14, 2025
f8305bd
Redesign fluent API with WithinDriver() scoping pattern
claude Nov 14, 2025
221c82e
Make Build() terminal in all fluent APIs (BREAKING CHANGE)
claude Nov 14, 2025
59a4ab9
Update README with terminal Build() pattern and .NET 10.0.100 targeting
claude Nov 14, 2025
c232f75
Add comprehensive async/await pattern to FluentDocker v3.0.0
claude Nov 14, 2025
5b439c3
Update README with comprehensive async/await pattern documentation
claude Nov 14, 2025
ecc8ec8
Implement Phase 1: Core Infrastructure for v3.0.0
claude Nov 14, 2025
5986c47
Implement Phase 2: Kernel Infrastructure for v3.0.0
claude Nov 14, 2025
9506770
Implement Phase 3: Async Builder with Terminal BuildAsync() for v3.0.0
claude Nov 14, 2025
23f477e
Add v3.0.0 unit tests and documentation
claude Nov 14, 2025
943346d
Add comprehensive test suite and missing IComposeDriver interface for…
claude Nov 15, 2025
a4e6b15
Implement Phases 4-6: Service async, Docker CLI driver, and integrati…
claude Nov 15, 2025
efdf588
Fix compilation errors for v3.0.0 implementation
claude Nov 15, 2025
0903ac1
Add critical unit tests for v3.0.0 and comprehensive test gap analysis
claude Nov 15, 2025
20ad9f6
Implement comprehensive test suite from V3_TEST_GAP_ANALYSIS.md (108+…
claude Nov 15, 2025
15bf8ab
Add comprehensive test implementation summary document
claude Nov 15, 2025
9f0eca4
Implement critical driver operations and enable 40+ integration tests…
claude Nov 15, 2025
b087f13
Fix compilation errors for multi-target framework support
claude Nov 15, 2025
8694f8a
Fix compilation errors for multi-target framework support (netstandar…
claude Nov 15, 2025
400d008
Fix CommandResponse ambiguity by fully qualifying all references
claude Nov 15, 2025
a6cf33c
Fix remaining compilation errors across all target frameworks
claude Nov 15, 2025
4a49409
Make IServiceAsync inherit from IService for backward compatibility
claude Nov 15, 2025
9f6103a
Replace MSTest with xUnit test framework
claude Nov 15, 2025
8ad93eb
Remove all V2 test infrastructure and resources
claude Nov 15, 2025
40498d0
Update global.json SDK version and remove obsolete test documentation
mariotoffia Nov 27, 2025
538e3dd
Update project to target .NET 10.0 and enhance Builder functionality
mariotoffia Nov 27, 2025
81da9c5
Refactor Builder and Command classes for improved functionality and c…
mariotoffia Nov 27, 2025
0e5ba94
Enhance documentation and update architecture files for V3 migration
mariotoffia Nov 27, 2025
ecdc0a0
Add struct-based command methods for Docker operations
mariotoffia Nov 27, 2025
1cb1bd2
Refactor Docker Compose command methods to use struct-based arguments
mariotoffia Nov 27, 2025
b5e9d1a
Enhance Docker driver interfaces with structured configurations
mariotoffia Nov 27, 2025
7258ebe
Deprecate FluentDocker.Commands namespace in preparation for v4.0.0
mariotoffia Nov 28, 2025
e151b05
Refactor FluentDocker to remove deprecated classes and enhance V3 arc…
mariotoffia Nov 28, 2025
5baccad
Implement wait conditions and lifecycle hooks in FluentDocker V3
mariotoffia Nov 28, 2025
6db0e9e
Refactor FluentDocker to use FluentBuilder across the codebase
mariotoffia Nov 28, 2025
f280625
Refactor FluentDocker to replace FluentBuilder with Builder class
mariotoffia Nov 28, 2025
1f157ee
Update TEST_COMPARISON.md to include planned test structures and stat…
mariotoffia Nov 28, 2025
5446b2e
Implement image and Dockerfile builders in FluentDocker
mariotoffia Nov 28, 2025
6834c90
Remove DockerCliDriver and enhance DriverRegistry for driver packs
mariotoffia Nov 28, 2025
c71b3c4
Add container linking support to Builder and Driver interfaces
mariotoffia Nov 28, 2025
9de7c2c
Update test comparison and improve container test implementations
mariotoffia Nov 28, 2025
3165f3d
Enhance Docker driver models and test resources
mariotoffia Nov 28, 2025
1d0e07f
Refactor system and version info models to support Docker-specific me…
mariotoffia Nov 28, 2025
85ddb3c
Enhance Docker CLI driver functionality with improved command argumen…
mariotoffia Nov 28, 2025
8287099
added docs
mariotoffia Nov 28, 2025
f0ef7c2
Deleted all commands since now we have drivers :)
mariotoffia Nov 28, 2025
333b923
remove .files
mariotoffia Nov 28, 2025
abbd8ec
update .gitignore
mariotoffia Nov 28, 2025
1d319b6
Add unit tests for Builder network and volume operations, and enhance…
mariotoffia Jan 19, 2026
4281595
Add unit tests for capability checks and error context extensions
mariotoffia Jan 20, 2026
e73b2ed
Refactor tests and remove deprecated Fd class
mariotoffia Jan 21, 2026
cd30fda
Refactor Docker CLI Driver Pack and Binary Resolution
mariotoffia Jan 23, 2026
0cb0b48
Remove obsolete command argument structures for Docker Machine, Netwo…
mariotoffia Jan 23, 2026
ed1df24
Add documentation for testing, utilities, and volume management
mariotoffia Jan 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
107 changes: 53 additions & 54 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ on:
branches:
- master
- main
- ci-gh-action-migration # For testing GitHub Action Workflows
- fdv3
pull_request:

jobs:
Expand All @@ -23,7 +23,7 @@ jobs:
else
echo "running_in_act=false" >> $GITHUB_OUTPUT
fi

- name: Echo environment
run: |
echo "Running in act environment: ${{ steps.detect-env.outputs.running_in_act }}"
Expand All @@ -37,15 +37,14 @@ jobs:
uses: actions/setup-dotnet@v4
with:
dotnet-version: |
6.0.x
8.0.x
9.0.x
10.0.x

- name: Install GitVersion
uses: gittools/actions/gitversion/setup@v1
with:
versionSpec: '5.x'

- name: Determine version
id: gitversion
uses: gittools/actions/gitversion/execute@v1
Expand Down Expand Up @@ -80,60 +79,24 @@ jobs:
--filter "TestCategory=CI" \
--logger "console;verbosity=detailed"

- name: Run tests (in GitHub)
- name: Run tests with coverage (in GitHub)
if: steps.detect-env.outputs.running_in_act != 'true'
run: >
dotnet test
--no-build
--configuration Release
dotnet test
--no-build
--configuration Release
--framework net8.0
--filter "TestCategory=CI"
--collect:"XPlat Code Coverage"
--collect:"XPlat Code Coverage"
--results-directory ./coverage
--settings coverletArgs.runsettings

- name: Detect branch for SonarCloud
id: detect-branch
run: |
if [ "${{ steps.detect-env.outputs.running_in_act }}" == "true" ]; then
# Use git to determine branch name when running in act
BRANCH_NAME=$(git rev-parse --abbrev-ref HEAD)
echo "Using git to determine branch: $BRANCH_NAME"
echo "branch=$BRANCH_NAME" >> $GITHUB_OUTPUT
else
# In GitHub Actions, we can use GitHub's environment variables
echo "Using GitHub environment for branch info"
echo "branch=$GITHUB_REF_NAME" >> $GITHUB_OUTPUT
fi

# Prepare environment variables for SonarCloud
- name: Setup SonarCloud environment variables
id: sonar-env
run: |
# Ensure the token is available regardless of environment
if [ "${{ steps.detect-env.outputs.running_in_act }}" == "true" ] && [ -n "$SONAR_TOKEN" ]; then
echo "Using SONAR_TOKEN from environment file"
echo "token=$SONAR_TOKEN" >> $GITHUB_OUTPUT
else
echo "Using SONAR_TOKEN from GitHub secrets"
echo "token=${{ secrets.SONAR_TOKEN }}" >> $GITHUB_OUTPUT
fi

# Single SonarCloud scan step for both environments
- name: SonarCloud Scan
uses: SonarSource/sonarqube-scan-action@master
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ steps.sonar-env.outputs.token }}
- name: Upload coverage reports to Codecov
if: steps.detect-env.outputs.running_in_act != 'true'
uses: codecov/codecov-action@v5
with:
args: >
-Dsonar.projectKey=mariotoffia_FluentDocker
-Dsonar.organization=mariotoffia
-Dsonar.cs.opencover.reportsPaths=./coverage/**/coverage.opencover.xml
-Dsonar.coverage.exclusions=**Tests*.cs
-Dsonar.branch.name=${{ steps.detect-branch.outputs.branch }}
-Dsonar.projectVersion=${{ steps.gitversion.outputs.AssemblySemVer }}

token: ${{ secrets.CODECOV_TOKEN }}

- name: Create NuGet packages
run: |
echo "Creating NuGet packages with version: ${{ steps.gitversion.outputs.NuGetVersion }}"
Expand All @@ -143,7 +106,7 @@ jobs:
run: |
echo "Created NuGet packages:"
ls -la packages/*.nupkg

- name: Upload NuGet packages as artifacts
uses: actions/upload-artifact@v4
with:
Expand All @@ -158,7 +121,7 @@ jobs:
echo "Publishing NuGet packages with version: ${{ steps.gitversion.outputs.NuGetVersion }}"
dotnet nuget push "packages/*.nupkg" --api-key ${{ secrets.NUGET_API_KEY }} --source https://api.nuget.org/v3/index.json --skip-duplicate
continue-on-error: ${{ steps.detect-env.outputs.running_in_act == 'true' }}

- name: Create and push Git tag for release
if: (github.ref == 'refs/heads/master' || github.ref == 'refs/heads/main') && steps.detect-env.outputs.running_in_act != 'true'
run: |
Expand All @@ -168,4 +131,40 @@ jobs:
git tag ${{ steps.gitversion.outputs.NuGetVersion }}
git push origin ${{ steps.gitversion.outputs.NuGetVersion }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

# CodeQL Security Analysis
codeql:
name: CodeQL Security Analysis
runs-on: ubuntu-latest
if: github.event_name == 'pull_request' || github.ref == 'refs/heads/master' || github.ref == 'refs/heads/main'
permissions:
security-events: write
actions: read
contents: read
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: csharp
queries: +security-and-quality

- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: |
8.0.x
10.0.x

- name: Build for CodeQL
run: |
dotnet restore
dotnet build --configuration Release

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
with:
category: "/language:csharp"
62 changes: 62 additions & 0 deletions .github/workflows/pages.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
name: Deploy Documentation to GitHub Pages

on:
push:
branches:
- master
- main
paths:
- 'docs/**'
- '.github/workflows/pages.yml'
workflow_dispatch:

permissions:
contents: read
pages: write
id-token: write

concurrency:
group: "pages"
cancel-in-progress: false

jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: '3.2'
bundler-cache: true
working-directory: docs

- name: Setup Pages
id: pages
uses: actions/configure-pages@v4

- name: Build with Jekyll
run: |
cd docs
bundle install
bundle exec jekyll build --baseurl "${{ steps.pages.outputs.base_path }}"
env:
JEKYLL_ENV: production

- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: docs/_site

deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
needs: build
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -224,4 +224,5 @@ _Pvt_Extensions/
ModelManifest.xml

# JetBrains IDEs
.idea
.idea
.claude
6 changes: 5 additions & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,5 +19,9 @@
"dotnet-test-explorer.runInParallel": false,
"dotnet-test-explorer.treeMode": "full",
"dotnet.completion.showCompletionItemsFromUnimportedNamespaces": true,
"dotnet.formatting.organizeImportsOnFormat": true
"dotnet.formatting.organizeImportsOnFormat": true,
"chat.tools.terminal.autoApprove": {
"dotnet test": true,
"dotnet build": true
}
}
77 changes: 0 additions & 77 deletions Ductus.FluentDocker.MsTest/FluentDockerComposeTestBase.cs

This file was deleted.

Loading
Loading