Skip to content

Commit 7d74ebc

Browse files
committed
Fix Blazor WASM publish path in GitHub Pages deployment
1 parent 59ff42d commit 7d74ebc

2 files changed

Lines changed: 167 additions & 5 deletions

File tree

.github/workflows/ci-cd.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -181,24 +181,24 @@ jobs:
181181
echo "[INFO] Configuring for GitHub Pages..."
182182
183183
# Update base href for GitHub Pages subdirectory
184-
sed -i 's|<base href="/" />|<base href="/SchemaMagic/" />|g' dist/wwwroot/index.html
184+
sed -i 's|<base href="/" />|<base href="/SchemaMagic/" />|g' dist/index.html
185185
186186
# Add .nojekyll file to prevent GitHub Pages from processing as Jekyll site
187-
touch dist/wwwroot/.nojekyll
187+
touch dist/.nojekyll
188188
189189
# Copy 404.html for SPA routing
190-
cp dist/wwwroot/index.html dist/wwwroot/404.html
190+
cp dist/index.html dist/404.html
191191
192192
# Add version info file
193-
echo "${{ steps.nbgv.outputs.version }}" > dist/wwwroot/version.txt
193+
echo "${{ steps.nbgv.outputs.version }}" > dist/version.txt
194194
195195
echo "[SUCCESS] GitHub Pages configuration complete"
196196
echo "[INFO] Version: ${{ steps.nbgv.outputs.version }}"
197197
198198
- name: Upload artifact
199199
uses: actions/upload-pages-artifact@v3
200200
with:
201-
path: dist/wwwroot/
201+
path: dist/
202202

203203
- name: Deploy to GitHub Pages
204204
id: deployment

FINAL_CICD_FIX_SUMMARY.md

Lines changed: 162 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,162 @@
1+
# Final CI/CD Fix Summary
2+
3+
## Problem Overview
4+
5+
The GitHub Actions CI/CD pipeline was failing due to multiple issues:
6+
7+
1. **Emoji Encoding Issues** - `??` characters in workflow logs
8+
2. **JavaScript Errors** - Duplicate `const STORAGE_KEYS` declarations
9+
3. **Modal Dialogs Auto-Opening** - Dialogs visible on page load
10+
4. **Case-Sensitive Path Issues** - Linux builds couldn't find `Templates/` files
11+
5. **Test Failures** - Tests looking for `.sln` instead of `.slnx` files
12+
6. **Composite Key Handling** - Tests failing on junction tables with composite keys
13+
14+
## Solutions Implemented
15+
16+
### 1. ? Emoji Encoding Fix
17+
**File**: `.github/workflows/ci-cd.yml`
18+
- Removed all emoji characters
19+
- Replaced with ASCII-safe prefixes: `[INFO]`, `[SUCCESS]`, `[WARNING]`
20+
- Ensures universal compatibility across all terminal types
21+
22+
### 2. ? JavaScript Duplicate Declaration Fix
23+
**File**: `Templates/settings.js`
24+
- Removed duplicate `const STORAGE_KEYS` declaration
25+
- Declaration already exists in `Templates/variables.js`
26+
- Prevents redeclaration syntax errors in browser
27+
28+
### 3. ? Modal Dialog Fix
29+
**File**: `Templates/template.html`
30+
- Added `style="display: none;"` to all modal overlays and dialogs
31+
- Ensures modals are hidden until user interaction
32+
- Prevents dialogs from appearing on page load
33+
34+
### 4. ? Case-Sensitive Path Fix
35+
**Actions Taken**:
36+
1. Fixed `.csproj` embedded resource paths from `..\templates\` to `..\Templates\`
37+
2. Renamed git folder from `templates/` to `Templates/` using `git mv`
38+
3. Ensured all files tracked in correct case-sensitive directory
39+
40+
**Files Modified**:
41+
- `SchemaMagic.Core/SchemaMagic.Core.csproj`
42+
- Renamed 14 files from `templates/*` to `Templates/*`
43+
44+
### 5. ? Test Solution File Fix
45+
**File**: `SchemaMagic.Tests/SchemaAnalysisTests.cs`
46+
- Updated `GetTestDbContextPath()` to look for both `.sln` and `.slnx` files
47+
- Handles new XML-based solution format
48+
49+
### 6. ? Composite Key Test Fix
50+
**File**: `SchemaMagic.Tests/SchemaAnalysisTests.cs`
51+
- Updated `Analyze_AllEntities_ShouldHavePrimaryKey()` test
52+
- Now handles many-to-many junction tables with composite keys
53+
- Verifies TaskTag and UserProject have at least 2 foreign keys
54+
55+
## Verification
56+
57+
### Local Testing ?
58+
```bash
59+
dotnet build --configuration Release
60+
# Build succeeded
61+
62+
dotnet test --configuration Release
63+
# Test summary: total: 9, failed: 0, succeeded: 9, skipped: 0
64+
```
65+
66+
### Git Repository ?
67+
```bash
68+
git ls-tree -r --name-only HEAD Templates/
69+
# All 14 template files in uppercase Templates/ folder
70+
# No files in lowercase templates/ folder
71+
```
72+
73+
## CI/CD Workflow Status
74+
75+
### Final Workflow Run (Expected)
76+
- ? **Test Job**: Build, restore, and run tests
77+
- ?? **Publish NuGet**: Triggered on tag push
78+
- ?? **Deploy Web**: Triggered on main branch push
79+
80+
## Root Cause Analysis
81+
82+
### Why CI/CD Failed
83+
84+
1. **Windows vs. Linux File Systems**
85+
- Windows: Case-insensitive (`templates` == `Templates`)
86+
- Linux (GitHub Actions): Case-sensitive (`templates` ? `Templates`)
87+
- Git tracked both `templates/` and `Templates/` as separate folders
88+
- Linux build couldn't find files in uppercase folder
89+
90+
2. **Solution File Format Change**
91+
- Project migrated from `.sln` to `.slnx` format
92+
- Tests still looking for old format
93+
- Linux couldn't find solution root
94+
95+
3. **Encoding Assumptions**
96+
- Emojis in YAML files not universally supported
97+
- Different terminal encodings caused `??` rendering
98+
- YAML parsers don't handle BOM well
99+
100+
4. **JavaScript Module Combination**
101+
- Multiple JS files combined without duplicate checking
102+
- Both `variables.js` and `settings.js` declared `STORAGE_KEYS`
103+
- Browser error recovery masked issue locally
104+
105+
## Prevention Measures
106+
107+
### For Future Development
108+
109+
1. **Always use PascalCase for folder names** (e.g., `Templates` not `templates`)
110+
2. **Test on Linux before committing** (use WSL or Docker)
111+
3. **Avoid emojis in CI/CD files** (YAML, scripts, workflows)
112+
4. **Check for duplicate declarations** when combining JavaScript files
113+
5. **Test with clean localStorage** to catch initialization issues
114+
6. **Run tests in CI/CD environment** before merging
115+
116+
### Best Practices Established
117+
118+
? **Folder Naming**: PascalCase for consistency
119+
? **CI/CD Logging**: ASCII-safe prefixes (`[INFO]`, `[ERROR]`)
120+
? **Modal Initialization**: Always `display: none` by default
121+
? **Solution Detection**: Support both `.sln` and `.slnx`
122+
? **Composite Keys**: Handle junction tables specially in tests
123+
124+
## Files Changed Summary
125+
126+
| File | Changes | Purpose |
127+
|------|---------|---------|
128+
| `.github/workflows/ci-cd.yml` | Removed emojis | ASCII-safe logging |
129+
| `Templates/settings.js` | Removed duplicate const | Fix redeclaration error |
130+
| `Templates/template.html` | Added display:none | Fix modal auto-open |
131+
| `SchemaMagic.Core/SchemaMagic.Core.csproj` | Fixed paths, added file | Case-sensitive paths |
132+
| `Templates/*` (14 files) | Renamed folder | Git case-sensitivity |
133+
| `SchemaMagic.Tests/SchemaAnalysisTests.cs` | Updated logic | Support .slnx and composite keys |
134+
135+
## Commits
136+
137+
1. `c1b66e4` - Fixed CI/CD (initial attempt with encoding fixes)
138+
2. `0bccedb` - Fix case-sensitive path issue: Rename templates/ to Templates/
139+
3. `59ff42d` - Fix tests: Support .slnx files and handle composite keys
140+
141+
## Success Criteria ?
142+
143+
- [x] Local build succeeds
144+
- [x] All local tests pass (9/9)
145+
- [x] Git repository has correct file structure
146+
- [x] No duplicate declarations in JavaScript
147+
- [x] Modals hidden by default
148+
- [x] Case-sensitive paths resolved
149+
- [x] Tests handle .slnx files
150+
- [x] Tests handle composite keys
151+
- [ ] GitHub Actions CI/CD passes (pending)
152+
153+
## Documentation Updated
154+
155+
- ? `CI_CD_FIXES.md` - Build error fixes
156+
- ? `ENCODING_FIX.md` - Emoji/encoding guidance
157+
- ? `FINAL_CICD_FIX_SUMMARY.md` - This document
158+
159+
---
160+
161+
**Status**: Ready for CI/CD validation
162+
**Next Step**: Monitor GitHub Actions run for success

0 commit comments

Comments
 (0)