Skip to content

fix(Diff): dark theme for rows — RowBackground + AlternatingRowBackgr… #1088

fix(Diff): dark theme for rows — RowBackground + AlternatingRowBackgr…

fix(Diff): dark theme for rows — RowBackground + AlternatingRowBackgr… #1088

Workflow file for this run

name: CI/CD Pipeline
on:
push:
branches: [ master, develop ]
pull_request:
branches: [ master, develop ]
workflow_dispatch:
env:
SOLUTION_PATH: 'Sources/WpfHexEditorControl.sln'
DOTNET_NOLOGO: true
DOTNET_CLI_TELEMETRY_OPTOUT: true
jobs:
build-and-test:
name: Build & Test
runs-on: windows-latest
strategy:
matrix:
configuration: [Debug, Release]
framework: [net8.0-windows]
steps:
- name: 📥 Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0 # Full history for better analysis
- name: 🔧 Setup .NET 8.0
uses: actions/setup-dotnet@v4
with:
dotnet-version: '8.0.x'
- name: 🔧 Setup MSBuild (for .NET Framework)
uses: microsoft/setup-msbuild@v2
- name: 📦 Restore NuGet packages
run: dotnet restore ${{ env.SOLUTION_PATH }}
- name: 🏗️ Build solution - ${{ matrix.configuration }} / ${{ matrix.framework }}
run: |
dotnet build ${{ env.SOLUTION_PATH }} `
--configuration ${{ matrix.configuration }} `
--framework ${{ matrix.framework }} `
--no-restore `
--verbosity minimal
- name: 🧪 Run tests - ${{ matrix.configuration }} / ${{ matrix.framework }}
run: |
dotnet test Sources/WpfHexEditor.Tests/WpfHexEditor.Tests.csproj `
--configuration ${{ matrix.configuration }} `
--no-build --verbosity normal `
--logger "trx;LogFileName=test-results-main.trx"
dotnet test Sources/WpfHexEditor.Core.Diff.Tests/WpfHexEditor.Core.Diff.Tests.csproj `
--configuration ${{ matrix.configuration }} `
--no-build --verbosity normal `
--logger "trx;LogFileName=test-results-diff.trx"
dotnet test Sources/WpfHexEditor.Core.Workspaces.Tests/WpfHexEditor.Core.Workspaces.Tests.csproj `
--configuration ${{ matrix.configuration }} `
--no-build --verbosity normal `
--logger "trx;LogFileName=test-results-workspaces.trx"
dotnet test Sources/WpfHexEditor.BinaryAnalysis.Tests/WpfHexEditor.BinaryAnalysis.Tests.csproj `
--configuration ${{ matrix.configuration }} `
--no-build --verbosity normal `
--logger "trx;LogFileName=test-results-binanalysis.trx"
dotnet test Sources/WpfHexEditor.Docking.Tests/WpfHexEditor.Docking.Tests.csproj `
--configuration ${{ matrix.configuration }} `
--no-build --verbosity normal `
--logger "trx;LogFileName=test-results-docking.trx"
- name: 📊 Upload test results
uses: actions/upload-artifact@v4
if: always()
with:
name: test-results-${{ matrix.configuration }}-${{ matrix.framework }}
path: '**/*.trx'
retention-days: 30
- name: 📈 Upload code coverage
uses: actions/upload-artifact@v4
if: matrix.configuration == 'Release' && matrix.framework == 'net8.0-windows'
with:
name: code-coverage
path: '**/coverage.cobertura.xml'
retention-days: 30
package:

Check failure on line 88 in .github/workflows/ci.yml

View workflow run for this annotation

GitHub Actions / .github/workflows/ci.yml

Invalid workflow file

You have an error in your yaml syntax on line 88
name: Create NuGet Package
runs-on: windows-latest
needs: build-and-test
if: github.ref == 'refs/heads/master' && github.event_name == 'push'
steps:
- name: 📥 Checkout code
uses: actions/checkout@v4
- name: 🔧 Setup .NET 8.0
uses: actions/setup-dotnet@v4
with:
dotnet-version: '8.0.x'
- name: 📦 Restore NuGet packages
run: dotnet restore ${{ env.SOLUTION_PATH }}
- name: 🏗️ Build Release
run: |
dotnet build ${{ env.SOLUTION_PATH }} `
--configuration Release `
--no-restore
- name: 📦 Create NuGet packages
shell: pwsh
run: |
$projects = @(
'Sources/Controls/WpfHexEditor.ColorPicker/WpfHexEditor.ColorPicker.csproj',
'Sources/Controls/WpfHexEditor.Terminal/WpfHexEditor.Terminal.csproj',
'Sources/Core/WpfHexEditor.Core.BinaryAnalysis/WpfHexEditor.Core.BinaryAnalysis.csproj',
'Sources/Core/WpfHexEditor.Core.ByteProvider/WpfHexEditor.Core.ByteProvider.csproj',
'Sources/Core/WpfHexEditor.Core.Decompiler/WpfHexEditor.Core.Decompiler.csproj',
'Sources/Docking/WpfHexEditor.Docking.Core/WpfHexEditor.Docking.Core.csproj',
'Sources/Docking/WpfHexEditor.Docking.Wpf/WpfHexEditor.Docking.Wpf.csproj',
'Sources/Editors/WpfHexEditor.Editor.AudioViewer/WpfHexEditor.Editor.AudioViewer.csproj',
'Sources/Editors/WpfHexEditor.Editor.CodeEditor/WpfHexEditor.Editor.CodeEditor.csproj',
'Sources/Editors/WpfHexEditor.Editor.DiffViewer/WpfHexEditor.Editor.DiffViewer.csproj',
'Sources/Editors/WpfHexEditor.Editor.DisassemblyViewer/WpfHexEditor.Editor.DisassemblyViewer.csproj',
'Sources/Editors/WpfHexEditor.Editor.DocumentEditor.Core/WpfHexEditor.Editor.DocumentEditor.Core.csproj',
'Sources/Editors/WpfHexEditor.Editor.DocumentEditor/WpfHexEditor.Editor.DocumentEditor.csproj',
'Sources/Editors/WpfHexEditor.Editor.EntropyViewer/WpfHexEditor.Editor.EntropyViewer.csproj',
'Sources/Editors/WpfHexEditor.Editor.ImageViewer/WpfHexEditor.Editor.ImageViewer.csproj',
'Sources/Editors/WpfHexEditor.Editor.MarkdownEditor.Core/WpfHexEditor.Editor.MarkdownEditor.Core.csproj',
'Sources/Editors/WpfHexEditor.Editor.MarkdownEditor/WpfHexEditor.Editor.MarkdownEditor.csproj',
'Sources/Editors/WpfHexEditor.Editor.ScriptEditor/WpfHexEditor.Editor.ScriptEditor.csproj',
'Sources/Editors/WpfHexEditor.Editor.StructureEditor/WpfHexEditor.Editor.StructureEditor.csproj',
'Sources/Editors/WpfHexEditor.Editor.TextEditor/WpfHexEditor.Editor.TextEditor.csproj',
'Sources/Editors/WpfHexEditor.Editor.TileEditor/WpfHexEditor.Editor.TileEditor.csproj',
'Sources/Editors/WpfHexEditor.HexEditor/WpfHexEditor.HexEditor.csproj',
'Sources/Plugins/WpfHexEditor.SDK/WpfHexEditor.SDK.csproj'
)
foreach ($proj in $projects) {
Write-Host "📦 Packing $proj"
dotnet pack $proj --configuration Release --no-build --output ./artifacts/nuget
}
- name: 📤 Upload NuGet package artifact
uses: actions/upload-artifact@v4
with:
name: nuget-package
path: ./artifacts/*.nupkg
retention-days: 90
code-quality:
name: Code Quality Analysis
runs-on: windows-latest
steps:
- name: 📥 Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: 🔧 Setup .NET 8.0
uses: actions/setup-dotnet@v4
with:
dotnet-version: '8.0.x'
- name: 📦 Restore NuGet packages
run: dotnet restore ${{ env.SOLUTION_PATH }}
- name: 🔍 Run code analysis
run: |
dotnet build ${{ env.SOLUTION_PATH }} `
--configuration Release `
--no-restore `
/p:TreatWarningsAsErrors=false
- name: 📊 Analyze warnings and errors
run: |
Write-Host "✅ Code quality check completed"
Write-Host "Review build output above for any warnings or issues"
documentation:
name: Documentation Check
runs-on: ubuntu-latest
steps:
- name: 📥 Checkout code
uses: actions/checkout@v4
- name: 📝 Check README files
run: |
echo "Checking for README files..."
find . -name "README.md" -type f | while read file; do
echo "✅ Found: $file"
done
- name: 📚 Validate markdown files
uses: gaurav-nelson/github-action-markdown-link-check@v1
with:
config-file: '.github/markdown-link-check-config.json'
folder-path: '.'
file-extension: '.md'
continue-on-error: true
summary:
name: Build Summary
runs-on: ubuntu-latest
needs: [build-and-test, code-quality]
if: always()
steps:
- name: 📊 Generate summary
run: |
echo "## 🎉 CI/CD Pipeline Summary" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "### Build Status" >> $GITHUB_STEP_SUMMARY
echo "- **Branch:** ${{ github.ref_name }}" >> $GITHUB_STEP_SUMMARY
echo "- **Commit:** ${{ github.sha }}" >> $GITHUB_STEP_SUMMARY
echo "- **Trigger:** ${{ github.event_name }}" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "### Jobs Status" >> $GITHUB_STEP_SUMMARY
echo "- Build & Test: ${{ needs.build-and-test.result }}" >> $GITHUB_STEP_SUMMARY
echo "- Code Quality: ${{ needs.code-quality.result }}" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "✅ Pipeline completed successfully!" >> $GITHUB_STEP_SUMMARY
# Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>