Hướng dẫn tạo release tự động với GitHub Actions
Khi bạn tạo git tag với format v*.*.* (ví dụ: v1.0.0), GitHub Actions sẽ tự động:
- ✅ Build ứng dụng với .NET Framework
- ✅ Cập nhật version trong AssemblyInfo.cs và MainForm.cs
- ✅ Tạo package ZIP với tất cả files cần thiết
- ✅ Tính toán SHA256 hashes để bảo mật
- ✅ Tạo GitHub Release với mô tả chi tiết
- ✅ Upload ZIP file và hash file
# Test build với version mặc định (1.0.0)
.\build.ps1
# Test build với version cụ thể
.\build.ps1 -Version "1.2.3"
# Clean build (xóa files cũ trước khi build)
.\build.ps1 -Version "1.2.3" -Clean# Commit tất cả thay đổi
git add .
git commit -m "Release v1.0.0"
# Tạo và push tag
git tag v1.0.0
git push origin v1.0.0- Vào GitHub repository → Actions tab
- Xem workflow "Build and Release" đang chạy
- Kiểm tra logs nếu có lỗi
- Sau khi hoàn thành, vào Releases để xem kết quả
Mỗi release sẽ chứa:
FirewallPortManager-v1.0.0-Windows.zip
├── FirewallPortManager.exe # Ứng dụng chính
├── FirewallPortManager.exe.config # Config file (nếu có)
├── *.dll # Dependencies (nếu có)
├── sample_rules.xml # Sample XML rules
├── sample_rules.json # Sample JSON rules
└── README.txt # Hướng dẫn cài đặt
Mỗi release bao gồm:
- SHA256 hash của ZIP file
- SHA256 hash của executable
- File
HASHES.mdvới thông tin chi tiết
Edit file .github/workflows/release.yml để:
- Thay đổi .NET Framework version
- Thêm/bớt files trong package
- Tùy chỉnh release notes
- Thay đổi naming convention
Workflow hỗ trợ các format tag:
v1.0.0→ Version:1.0.0v2.1.3→ Version:2.1.3v1.0.0-beta→ Version:1.0.0-beta
Workflow sử dụng:
GITHUB_TOKEN- Tự động có sẵngithub.ref_name- Tên tag (v1.0.0)github.repository- Tên repository
-
NuGet restore failed
- Kiểm tra
packages.confighoặc project references - Đảm bảo NuGet packages tồn tại
- Kiểm tra
-
MSBuild failed
- Kiểm tra syntax errors trong code
- Đảm bảo .NET Framework version đúng
-
Missing files
- Kiểm tra file paths trong workflow
- Đảm bảo sample files tồn tại
-
Permission denied
- Kiểm tra repository settings → Actions → General
- Đảm bảo "Read and write permissions" được bật
-
Tag already exists
- Xóa tag cũ:
git tag -d v1.0.0 && git push origin :refs/tags/v1.0.0 - Tạo tag mới với version khác
- Xóa tag cũ:
Sử dụng Semantic Versioning:
v1.0.0- Major releasev1.1.0- Minor update (new features)v1.0.1- Patch (bug fixes)v2.0.0-beta- Pre-release
Workflow tự động tạo release notes, nhưng bạn có thể:
- Edit release sau khi tạo
- Thêm changelog chi tiết
- Thêm screenshots hoặc demo
Luôn test local trước khi release:
# Test build
.\build.ps1 -Version "1.0.0" -Clean
# Test executable
.\release\FirewallPortManager.exe
# Verify version
Get-ItemProperty .\release\FirewallPortManager.exe | Select-Object VersionInfo- Trigger: Push tag
v*.*.* - Extract version:
v1.0.0→1.0.0 - Update files: AssemblyInfo.cs, MainForm.cs
- Restore packages: NuGet restore
- Build: MSBuild Release configuration
- Package: Copy files to release folder
- Archive: Create ZIP file
- Hash: Calculate SHA256
- Release: Create GitHub release
- Upload: Attach ZIP and hash files
Nếu gặp vấn đề:
- Kiểm tra Actions logs trên GitHub
- Test build local với
build.ps1 - Kiểm tra file permissions và repository settings
- Tạo issue trên GitHub repository
Happy releasing! 🎉