Files
PlayHours/docs/RELEASE.md
Mr¤KayJayDee a4fc6a158e
Some checks failed
CI / test (push) Has been cancelled
feat(build): add release automation tasks and CI/CD workflows
- Introduced Gradle tasks for release preparation, version bumping, and git tagging.
- Added CI workflow for continuous integration on pushes and pull requests.
- Implemented release workflow for automated builds and Gitea releases upon tag pushes.
- Created scripts for manual release processes on Windows and Linux/macOS.
- Documented the release process and Gitea Actions setup in the new RELEASE.md and setup-gitea-actions.md files.
2025-10-23 23:42:16 +02:00

169 lines
3.7 KiB
Markdown

# PlayHours Release Guide
This guide explains how to create releases for PlayHours, both manually and automatically.
## Prerequisites
- Git repository with proper remote configuration
- Gradle build system
- Access to your Gitea instance
- Java 17+ installed
## Manual Release Process
### Option 1: Using Release Scripts
#### Windows
```cmd
scripts\release.bat
```
#### Linux/macOS
```bash
./scripts/release.sh
```
### Option 2: Using Gradle Tasks
1. **Bump version** (optional):
```bash
./gradlew bumpVersion
```
2. **Create release**:
```bash
./gradlew release
```
### Option 3: Manual Steps
1. **Update version** in `gradle.properties`:
```
mod_version=1.0.1
```
2. **Build the project**:
```bash
./gradlew clean build
```
3. **Create and push git tag**:
```bash
git tag -a v1.0.1 -m "Release v1.0.1"
git push origin main
git push origin v1.0.1
```
4. **Create release on Gitea**:
- Go to your repository on Gitea
- Click "Releases" → "New Release"
- Select tag `v1.0.1`
- Upload JAR file from `build/libs/playhours-1.0.1.jar`
- Add release notes
## Automated Release Process
### Using Gitea Actions
The project includes automated workflows that trigger on:
1. **Tag pushes**: When you push a tag starting with `v` (e.g., `v1.0.1`)
2. **Manual dispatch**: Through the Gitea Actions interface
#### Setting up Gitea Actions
1. **Enable Actions** in your Gitea repository settings
2. **Configure secrets** (if needed):
- `GITEA_TOKEN`: For Gitea API access
- `GITEA_API_URL`: Your Gitea instance URL (optional, defaults to your current instance)
#### Workflow Files
- `.gitea/workflows/ci.yml`: Continuous integration on pushes/PRs
- `.gitea/workflows/release.yml`: Automated release builds
### Automated Release Steps
1. **Create and push a tag**:
```bash
git tag -a v1.0.1 -m "Release v1.0.1"
git push origin v1.0.1
```
2. **Gitea Actions will automatically**:
- Build the project
- Create a release
- Upload the JAR file
- Generate release notes
## Version Management
### Semantic Versioning
PlayHours uses semantic versioning (MAJOR.MINOR.PATCH):
- **MAJOR**: Breaking changes
- **MINOR**: New features (backward compatible)
- **PATCH**: Bug fixes (backward compatible)
### Version Bumping
Use the Gradle task to automatically bump the patch version:
```bash
./gradlew bumpVersion
```
For major/minor version changes, manually edit `gradle.properties`.
## Release Checklist
Before creating a release:
- [ ] Update `CHANGELOG.md` with new features/fixes
- [ ] Update version in `gradle.properties`
- [ ] Test the build locally
- [ ] Commit all changes
- [ ] Create and push tag
- [ ] Verify release on Gitea
## Troubleshooting
### Common Issues
1. **Build fails**: Check Java version (17+) and Gradle configuration
2. **Tag already exists**: Delete the tag and recreate, or use a new version
3. **Push fails**: Check git remote configuration and permissions
4. **Actions don't trigger**: Ensure Actions are enabled in repository settings
### Manual Recovery
If automated release fails:
1. Build manually: `./gradlew clean build`
2. Create release manually on Gitea
3. Upload JAR from `build/libs/`
## Advanced Configuration
### Custom Release Notes
Edit the release body template in `build.gradle`:
```gradle
body = """
## PlayHours v${mod_version}
Your custom release notes here...
"""
```
### Custom Gitea Instance
If your Gitea instance is not at the default URL, set the `GITEA_API_URL` secret:
- Go to repository settings → Secrets
- Add `GITEA_API_URL` with your instance URL (e.g., `https://your-gitea.com`)
## Security Notes
- Never commit API tokens or passwords
- Use repository secrets for sensitive data
- Regularly rotate access tokens
- Review release permissions carefully