feat: implement Candy Cannon mechanics, CI/CD pipelines, and version 2.3.7 updates
This commit is contained in:
@@ -0,0 +1,157 @@
|
||||
# Versioning & Artifact Storage Strategy
|
||||
|
||||
## Version Format
|
||||
|
||||
Tekton Armageddon uses semantic versioning: `MAJOR.MINOR.PATCH`
|
||||
|
||||
- **MAJOR**: Breaking changes, incompatible API changes
|
||||
- **MINOR**: New features, backward-compatible
|
||||
- **PATCH**: Bug fixes, content updates, backward-compatible
|
||||
|
||||
Current version source: `project.godot` → `config/version`
|
||||
|
||||
## Artifact Types
|
||||
|
||||
### 1. Patch PCK Files
|
||||
- **Purpose**: Hot-patch content updates without full client reinstall
|
||||
- **Storage**: GitHub Actions artifacts (90 days) + tekton-updates repo
|
||||
- **Naming**: `patch.pck` (latest), versioned in tekton-updates repo
|
||||
- **Integrity**: SHA256 checksums generated and stored alongside
|
||||
|
||||
### 2. Platform Builds
|
||||
- **Platforms**: Windows, Linux, Android
|
||||
- **Storage**: GitHub Actions artifacts (90 days) + GitHub Releases (permanent)
|
||||
- **Naming**: `tekton_armageddon_{Platform}_v{VERSION}.{ext}`
|
||||
- **Trigger**: Git tags (`v*.*.*`) or manual workflow dispatch
|
||||
- **Integrity**: SHA256 checksums for each platform build
|
||||
|
||||
### 3. Version Manifest
|
||||
- **File**: `assets/data/version.json`
|
||||
- **Purpose**: Client version checking, changelog delivery, patch URLs
|
||||
- **Storage**: Embedded in builds + tekton-updates repo
|
||||
- **Integrity**: SHA256 checksum
|
||||
|
||||
## Workflows
|
||||
|
||||
### Patch Deployment (`deploy_patch.yml`)
|
||||
**Trigger**: Push to `patch-release` branch or manual dispatch
|
||||
|
||||
**Process**:
|
||||
1. Auto-bump patch version from `project.godot`
|
||||
2. Extract changelog from `CHANGELOG_DRAFT.md` [NEXT] section
|
||||
3. Generate `version.json` with new release entry
|
||||
4. Commit version bump back to repo
|
||||
5. Build `patch.pck` from changed files
|
||||
6. Generate SHA256 checksums
|
||||
7. Upload artifacts to GitHub Actions (90-day retention)
|
||||
8. Push to `tekton-updates` public repo (`latest/` folder)
|
||||
|
||||
**Artifacts**:
|
||||
- `patch-pck-{SHA}`: patch.pck + checksum
|
||||
- `version-manifest-{SHA}`: version.json + checksum
|
||||
|
||||
### Platform Builds (`build_artifacts.yml`)
|
||||
**Trigger**: Git tag push (`v*.*.*`) or manual dispatch with version input
|
||||
|
||||
**Process**:
|
||||
1. Matrix build for Windows, Linux, Android
|
||||
2. Export using Godot export presets
|
||||
3. Generate SHA256 checksums per platform
|
||||
4. Upload artifacts to GitHub Actions (90-day retention)
|
||||
5. Create GitHub Release with all platform builds + checksums
|
||||
|
||||
**Artifacts**:
|
||||
- `tekton-{Platform}-v{VERSION}`: platform binary + checksum
|
||||
|
||||
## Artifact Retention
|
||||
|
||||
| Artifact Type | Storage Location | Retention | Purpose |
|
||||
|--------------|------------------|-----------|---------|
|
||||
| Patch PCK | GitHub Actions | 90 days | CI/CD history, rollback |
|
||||
| Patch PCK | tekton-updates repo | Permanent | Client downloads |
|
||||
| Platform Builds | GitHub Actions | 90 days | CI/CD history |
|
||||
| Platform Builds | GitHub Releases | Permanent | Distribution |
|
||||
| Version Manifest | tekton-updates repo | Permanent | Client version checks |
|
||||
|
||||
## Checksum Verification
|
||||
|
||||
All artifacts include SHA256 checksums for integrity verification:
|
||||
|
||||
```bash
|
||||
# Verify patch.pck
|
||||
sha256sum -c patch.pck.sha256
|
||||
|
||||
# Verify platform build
|
||||
sha256sum -c tekton_armageddon_Windows_v2.3.8.sha256
|
||||
```
|
||||
|
||||
## Version Compatibility
|
||||
|
||||
`version.json` includes `minimum_app_version` field:
|
||||
- Clients below this version must reinstall full build
|
||||
- Clients at or above can use patch system
|
||||
|
||||
## Changelog Management
|
||||
|
||||
**Source**: `CHANGELOG_DRAFT.md`
|
||||
|
||||
**Format**:
|
||||
```markdown
|
||||
## [NEXT]
|
||||
- Feature or fix description
|
||||
- Another change
|
||||
|
||||
## [2.3.7] — 2026-05-15
|
||||
- Archived release notes
|
||||
```
|
||||
|
||||
**Process**:
|
||||
1. Developers add entries under `[NEXT]`
|
||||
2. CI extracts `[NEXT]` entries on patch deployment
|
||||
3. CI archives to versioned section
|
||||
4. CI clears `[NEXT]` for next cycle
|
||||
|
||||
## Manual Version Bump
|
||||
|
||||
For local testing without CI:
|
||||
|
||||
```bash
|
||||
# Update versions but keep changelog
|
||||
python3 tools/generate_version_json.py --local
|
||||
|
||||
# Skip changelog update entirely
|
||||
python3 tools/generate_version_json.py --skip-changelog
|
||||
```
|
||||
|
||||
## Release Process
|
||||
|
||||
### Patch Release
|
||||
1. Merge changes to `patch-release` branch
|
||||
2. CI auto-bumps version, builds, deploys
|
||||
3. Clients auto-download on next launch
|
||||
|
||||
### Full Release
|
||||
1. Tag commit: `git tag v2.4.0`
|
||||
2. Push tag: `git push origin v2.4.0`
|
||||
3. CI builds all platforms, creates GitHub Release
|
||||
4. Distribute via Steam, Google Play, etc.
|
||||
|
||||
## Rollback Strategy
|
||||
|
||||
**Patch Rollback**:
|
||||
1. Locate previous patch in GitHub Actions artifacts or tekton-updates repo
|
||||
2. Manually push to `tekton-updates/latest/`
|
||||
3. Update `version.json` to point to previous version
|
||||
|
||||
**Full Build Rollback**:
|
||||
1. Download previous release from GitHub Releases
|
||||
2. Re-tag or create hotfix branch
|
||||
3. Redeploy via standard release process
|
||||
|
||||
## Future Enhancements
|
||||
|
||||
- [ ] Automated rollback on failed health checks
|
||||
- [ ] Delta patching for bandwidth optimization
|
||||
- [ ] Multi-region CDN distribution
|
||||
- [ ] Staged rollout (canary deployments)
|
||||
- [ ] Automated compatibility testing matrix
|
||||
Reference in New Issue
Block a user