v0.2.1 release
This commit is contained in:
209
RELEASE.md
Normal file
209
RELEASE.md
Normal file
@@ -0,0 +1,209 @@
|
||||
# FlexLöve Release Process
|
||||
|
||||
This document describes how to create and publish a new release of FlexLöve.
|
||||
|
||||
## Automated Release (Recommended)
|
||||
|
||||
The easiest way to create a release is using the automated script:
|
||||
|
||||
```bash
|
||||
./scripts/make-tag.sh
|
||||
```
|
||||
|
||||
This interactive script will:
|
||||
1. Show your current version
|
||||
2. Ask you to select: Major / Minor / Patch / Custom version bump
|
||||
3. Calculate the new version (resetting lower components to 0)
|
||||
4. Update `FlexLove.lua` with the new version
|
||||
5. Update `README.md` first line with the new version
|
||||
6. Create a git commit: `v{version} release`
|
||||
7. Create a git tag: `v{version}`
|
||||
8. Prompt you to push the changes
|
||||
|
||||
After pushing the tag, GitHub Actions automatically:
|
||||
- Archives previous documentation
|
||||
- Generates new documentation
|
||||
- Creates release package with SHA256 checksums
|
||||
- Publishes GitHub release with download assets
|
||||
|
||||
### Example Usage
|
||||
|
||||
```bash
|
||||
$ ./scripts/make-tag.sh
|
||||
|
||||
═══════════════════════════════════════
|
||||
FlexLöve Version Bump & Tag Tool
|
||||
═══════════════════════════════════════
|
||||
|
||||
Current version: v0.2.0
|
||||
|
||||
Select version bump type:
|
||||
1) Major (breaking changes) 0.2.0 → 1.0.0
|
||||
2) Minor (new features) 0.2.0 → 0.3.0
|
||||
3) Patch (bug fixes) 0.2.0 → 0.2.1
|
||||
4) Custom version
|
||||
5) Cancel
|
||||
|
||||
Enter choice (1-5): 2
|
||||
|
||||
New version: v0.3.0
|
||||
|
||||
This will:
|
||||
1. Update FlexLove.lua → flexlove._VERSION = "0.3.0"
|
||||
2. Update README.md → first line version
|
||||
3. Stage changes for commit
|
||||
4. Create git tag v0.3.0
|
||||
|
||||
Proceed? (y/n) y
|
||||
|
||||
✓ Version bump complete!
|
||||
|
||||
Next steps:
|
||||
1. Push commit and tag:
|
||||
git push && git push origin v0.3.0
|
||||
|
||||
2. GitHub Actions will automatically:
|
||||
• Archive previous documentation
|
||||
• Generate new documentation
|
||||
• Create release package with checksums
|
||||
• Publish GitHub release
|
||||
```
|
||||
|
||||
## Manual Release Workflow
|
||||
|
||||
If you need more control, follow these steps:
|
||||
|
||||
### 1. Update Version
|
||||
|
||||
Edit `FlexLove.lua` and update the version:
|
||||
|
||||
```lua
|
||||
flexlove._VERSION = "0.3.0" -- Update this line
|
||||
```
|
||||
|
||||
Also update `README.md` first line:
|
||||
```markdown
|
||||
# FlexLöve v0.3.0
|
||||
```
|
||||
|
||||
### 2. Commit and Tag
|
||||
|
||||
```bash
|
||||
git add FlexLove.lua README.md
|
||||
git commit -m "v0.3.0 release"
|
||||
git tag -a v0.3.0 -m "Release version 0.3.0"
|
||||
git push && git push origin v0.3.0
|
||||
```
|
||||
|
||||
### 3. GitHub Actions Takes Over
|
||||
|
||||
Once you push the tag, the automated workflow handles everything else.
|
||||
|
||||
## Local Release Package (Optional)
|
||||
|
||||
To create a local release package without GitHub Actions:
|
||||
|
||||
```bash
|
||||
./scripts/create-release.sh
|
||||
```
|
||||
|
||||
Output files:
|
||||
- `releases/flexlove-v{version}.zip`
|
||||
- `releases/flexlove-v{version}.zip.sha256`
|
||||
|
||||
### Verify Local Package
|
||||
|
||||
```bash
|
||||
cd releases
|
||||
shasum -a 256 -c flexlove-v0.3.0.zip.sha256
|
||||
# Expected: flexlove-v0.3.0.zip: OK
|
||||
```
|
||||
|
||||
## Release Checklist
|
||||
|
||||
- [ ] Version updated in `FlexLove.lua`
|
||||
- [ ] Documentation regenerated (`./scripts/generate_docs.sh`)
|
||||
- [ ] Changes committed and pushed
|
||||
- [ ] Release package created (`./scripts/create-release.sh`)
|
||||
- [ ] Checksum verified (`shasum -a 256 -c *.sha256`)
|
||||
- [ ] Release package tested
|
||||
- [ ] Git tag created and pushed
|
||||
- [ ] GitHub release published with zip and checksum files
|
||||
|
||||
## Versioning
|
||||
|
||||
FlexLöve follows [Semantic Versioning](https://semver.org/):
|
||||
|
||||
- **MAJOR** version: Incompatible API changes
|
||||
- **MINOR** version: New functionality (backwards-compatible)
|
||||
- **PATCH** version: Bug fixes (backwards-compatible)
|
||||
|
||||
Example: `0.2.0` → `0.2.1` (bug fix) or `0.3.0` (new feature)
|
||||
|
||||
## What Gets Released
|
||||
|
||||
The release package includes **only** the files needed to use FlexLöve:
|
||||
|
||||
✅ **Included:**
|
||||
- `FlexLove.lua` - Main library
|
||||
- `modules/` - All module files
|
||||
- `LICENSE` - License terms
|
||||
- `README.txt` - Installation instructions
|
||||
|
||||
❌ **Not included:**
|
||||
- `docs/` - Documentation (hosted on GitHub Pages)
|
||||
- `examples/` - Example code (available in repository)
|
||||
- `testing/` - Test suite
|
||||
- `themes/` - Theme examples
|
||||
- Development tools
|
||||
|
||||
Users who want examples, documentation source, or development tools should clone the full repository.
|
||||
|
||||
## Checksum Verification
|
||||
|
||||
Every release includes a SHA256 checksum file for security verification.
|
||||
|
||||
### For Developers (Creating Release)
|
||||
|
||||
The checksum is automatically generated when running `./scripts/create-release.sh`:
|
||||
|
||||
```bash
|
||||
./scripts/create-release.sh
|
||||
# Creates:
|
||||
# - releases/flexlove-v0.3.0.zip
|
||||
# - releases/flexlove-v0.3.0.zip.sha256
|
||||
|
||||
# Verify before publishing
|
||||
cd releases
|
||||
shasum -a 256 -c flexlove-v0.3.0.zip.sha256
|
||||
# Output: flexlove-v0.3.0.zip: OK
|
||||
```
|
||||
|
||||
### For End Users (Downloading Release)
|
||||
|
||||
After downloading a release from GitHub:
|
||||
|
||||
```bash
|
||||
# Download both files:
|
||||
# - flexlove-v0.3.0.zip
|
||||
# - flexlove-v0.3.0.zip.sha256
|
||||
|
||||
# Verify integrity
|
||||
shasum -a 256 -c flexlove-v0.3.0.zip.sha256
|
||||
|
||||
# If OK, safe to use
|
||||
unzip flexlove-v0.3.0.zip
|
||||
```
|
||||
|
||||
**macOS/Linux:** Use `shasum -a 256 -c`
|
||||
**Windows:** Use `certutil -hashfile flexlove-v0.3.0.zip SHA256` and compare manually
|
||||
|
||||
## Automated Releases (Future)
|
||||
|
||||
Consider adding GitHub Actions workflow to automate:
|
||||
- Version extraction
|
||||
- Release package creation
|
||||
- Documentation deployment
|
||||
- GitHub release creation
|
||||
|
||||
See `.github/workflows/release.yml` (to be created)
|
||||
Reference in New Issue
Block a user