mirror of
https://github.com/lukaszraczylo/kportal.git
synced 2026-06-20 03:32:25 +00:00
1167847fd4
* Add mDNS resolution. * Update the website and documentation
127 lines
2.8 KiB
Markdown
127 lines
2.8 KiB
Markdown
# Release Infrastructure
|
|
|
|
Documentation for kportal's release automation and distribution.
|
|
|
|
## 🔄 CI/CD Pipeline
|
|
|
|
**File**: `.github/workflows/release.yml`
|
|
|
|
The pipeline builds multi-platform binaries, creates GitHub releases, and updates Homebrew on version tags.
|
|
|
|
### Trigger a Release
|
|
|
|
```bash
|
|
git tag -a v0.2.0 -m "Release v0.2.0"
|
|
git push origin v0.2.0
|
|
```
|
|
|
|
The pipeline will:
|
|
1. Build binaries for all platforms
|
|
2. Create GitHub release with binaries and checksums
|
|
3. Update Homebrew tap formula
|
|
|
|
## 📦 Installation Methods
|
|
|
|
### Homebrew
|
|
|
|
**File**: `Formula/kportal.rb`
|
|
|
|
```bash
|
|
brew install lukaszraczylo/tap/kportal
|
|
```
|
|
|
|
Formula is automatically updated by CI/CD. Requires:
|
|
- Tap repository: `https://github.com/lukaszraczylo/brew-taps`
|
|
- Secret: `HOMEBREW_TAP_TOKEN` with `repo` scope
|
|
|
|
### Install Script
|
|
|
|
**File**: `install.sh`
|
|
|
|
```bash
|
|
curl -fsSL https://raw.githubusercontent.com/lukaszraczylo/kportal/main/install.sh | bash
|
|
```
|
|
|
|
Auto-detects OS/architecture and installs to `/usr/local/bin`.
|
|
|
|
### Manual Download
|
|
|
|
Download from [releases page](https://github.com/lukaszraczylo/kportal/releases).
|
|
|
|
## Platform Support
|
|
|
|
| OS | Architecture | Format |
|
|
|----|--------------|--------|
|
|
| Linux | amd64, arm64 | tar.gz |
|
|
| macOS | amd64, arm64 | tar.gz |
|
|
| Windows | amd64, arm64 | zip |
|
|
|
|
## 🚀 Release Process
|
|
|
|
1. **Make changes and test**
|
|
```bash
|
|
make test && make all
|
|
```
|
|
|
|
2. **Update CHANGELOG.md**
|
|
|
|
3. **Tag and push**
|
|
```bash
|
|
git tag -a v0.2.0 -m "Release v0.2.0"
|
|
git push origin main
|
|
git push origin v0.2.0
|
|
```
|
|
|
|
## Version Bumping
|
|
|
|
Version determined by commit message keywords:
|
|
|
|
| Bump | Keywords |
|
|
|------|----------|
|
|
| Patch (0.0.X) | `fix`, `bugfix`, `docs`, `test`, `refactor` |
|
|
| Minor (0.X.0) | `feat`, `feature`, `add`, `enhance`, `update` |
|
|
| Major (X.0.0) | `breaking`, `major`, `BREAKING CHANGE` |
|
|
|
|
## Required Secrets
|
|
|
|
| Secret | Purpose |
|
|
|--------|---------|
|
|
| `GITHUB_TOKEN` | Provided by GitHub Actions |
|
|
| `HOMEBREW_TAP_TOKEN` | Personal access token with `repo` scope |
|
|
|
|
## ⚙️ Initial Setup
|
|
|
|
### 1. Enable GitHub Pages
|
|
|
|
Repository Settings → Pages → Source: main branch, /docs folder
|
|
|
|
### 2. Create Homebrew Tap
|
|
|
|
```bash
|
|
gh repo create lukaszraczylo/brew-taps --public
|
|
cd brew-taps
|
|
mkdir Formula
|
|
# Formula will be auto-updated by CI
|
|
```
|
|
|
|
### 3. Add Token Secret
|
|
|
|
Repository Settings → Secrets → Actions → New secret:
|
|
- Name: `HOMEBREW_TAP_TOKEN`
|
|
- Value: Personal access token with `repo` scope
|
|
|
|
## 🐛 Troubleshooting
|
|
|
|
### Release workflow fails
|
|
- Check GitHub Actions logs
|
|
- Verify secrets are configured
|
|
- Ensure tag follows `v\d+.\d+.\d+` format
|
|
|
|
### Homebrew not updating
|
|
- Verify `HOMEBREW_TAP_TOKEN` is valid
|
|
- Check tap repository permissions
|
|
|
|
### Install script fails
|
|
- Verify release binaries are attached
|
|
- Check binary naming matches script expectations
|