158 lines
4.7 KiB
Markdown
158 lines
4.7 KiB
Markdown
# 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
|