You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

254 lines
5.7 KiB
Markdown

# Publishing the Openclaw Helm Chart
This guide covers how to publish the Helm chart to make it available for users.
## Quick Start (Automated)
The chart is automatically published to GitHub Pages when you:
1. Update `charts/openclaw/Chart.yaml` version
2. Commit and push to `main` branch
3. GitHub Actions automatically packages and publishes
## Publishing Methods
### Option 1: GitHub Pages (Recommended)
#### Initial Setup
1. **Enable GitHub Pages:**
- Go to repository Settings → Pages
- Source: Deploy from a branch
- Branch: `gh-pages``/ (root)`
- Click Save
2. **Create gh-pages branch (first time only):**
```bash
# Create empty gh-pages branch
git checkout --orphan gh-pages
git rm -rf .
echo "# Openclaw Helm Charts" > README.md
git add README.md
git commit -m "Initial gh-pages"
git push origin gh-pages
git checkout main
```
3. **The workflow will automatically:**
- Package the chart
- Create a GitHub release
- Update the chart repository index
- Publish to GitHub Pages
#### Manual Publishing (if needed)
```bash
# 1. Package the chart
helm package charts/openclaw -d .cr-release-packages
# 2. Create index
helm repo index .cr-release-packages --url https://openclaw.github.io/openclaw
# 3. Commit to gh-pages branch
git checkout gh-pages
cp .cr-release-packages/* .
git add .
git commit -m "Release chart version X.Y.Z"
git push origin gh-pages
git checkout main
```
#### Usage for End Users
Once published, users can install via:
```bash
# Add repo
helm repo add openclaw https://openclaw.github.io/openclaw
helm repo update
# Install
helm install my-openclaw openclaw/openclaw
```
### Option 2: OCI Registry (GitHub Container Registry)
Modern approach using OCI registries:
#### Setup
```bash
# Login to GHCR
echo $GITHUB_TOKEN | helm registry login ghcr.io -u USERNAME --password-stdin
# Package chart
helm package charts/openclaw
# Push to GHCR
helm push openclaw-1.0.0.tgz oci://ghcr.io/openclaw
```
#### Automate in GitHub Actions
```yaml
- name: Login to GHCR
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Push chart to GHCR
run: |
helm package charts/openclaw
helm push openclaw-*.tgz oci://ghcr.io/${{ github.repository_owner }}
```
#### Usage for End Users
```bash
# Install directly from OCI
helm install my-openclaw oci://ghcr.io/openclaw/openclaw --version 1.0.0
```
### Option 3: Artifact Hub
Make your chart discoverable on [Artifact Hub](https://artifacthub.io).
#### Prerequisites
- Chart published to GitHub Pages or OCI registry
- Artifact Hub metadata file
#### Add Artifact Hub metadata
Create `charts/openclaw/artifacthub-repo.yml`:
```yaml
repositoryID: <your-repo-id>
owners:
- name: Openclaw Team
email: team@openclaw.com
```
#### Submit to Artifact Hub
1. Go to https://artifacthub.io
2. Sign in with GitHub
3. Add repository
4. Provide repository URL: `https://openclaw.github.io/openclaw`
5. Wait for verification
### Option 4: ChartMuseum (Self-Hosted)
For private/internal charts:
```bash
# Run ChartMuseum
docker run -d \
-p 8080:8080 \
-v $(pwd)/charts:/charts \
ghcr.io/helm/chartmuseum:latest \
--storage local \
--storage-local-rootdir /charts
# Upload chart
curl --data-binary "@openclaw-1.0.0.tgz" http://localhost:8080/api/charts
```
## Versioning
Follow Semantic Versioning:
- **Chart version** (`version` in Chart.yaml): Chart changes
- **App version** (`appVersion` in Chart.yaml): Openclaw version
### Bumping Versions
```bash
# Update chart version
vim charts/openclaw/Chart.yaml
# Change version: 1.0.0 → 1.1.0
# Update app version (when openclaw version changes)
vim charts/openclaw/Chart.yaml
# Change appVersion: "2026.1.25" → "2026.1.26"
```
### Version Guidelines
- **Major** (1.0.0 → 2.0.0): Breaking changes to values.yaml or behavior
- **Minor** (1.0.0 → 1.1.0): New features, non-breaking changes
- **Patch** (1.0.0 → 1.0.1): Bug fixes, documentation
## Release Checklist
- [ ] Update `version` in `Chart.yaml`
- [ ] Update `appVersion` if openclaw version changed
- [ ] Update `CHANGELOG.md` (if you have one)
- [ ] Test chart locally: `./scripts/test-helm-local.sh`
- [ ] Lint chart: `helm lint charts/openclaw`
- [ ] Commit changes
- [ ] Push to main (triggers automated release)
- [ ] Verify GitHub Pages deployment
- [ ] Test installation from published repo
## Testing Published Chart
```bash
# Add your published repo
helm repo add openclaw https://openclaw.github.io/openclaw
helm repo update
# Search for chart
helm search repo openclaw
# Install from published repo
helm install test openclaw/openclaw --dry-run --debug
```
## Troubleshooting
### Chart not appearing after publish
1. Check GitHub Actions logs
2. Verify gh-pages branch exists
3. Check GitHub Pages settings are enabled
4. Wait 5-10 minutes for GitHub Pages to deploy
### Users getting "not found" error
```bash
# Check index.yaml exists
curl https://openclaw.github.io/openclaw/index.yaml
# Verify chart package exists
curl https://openclaw.github.io/openclaw/openclaw-1.0.0.tgz
```
### Permission denied during publishing
Ensure GitHub Actions has write permissions:
- Settings → Actions → General → Workflow permissions
- Select "Read and write permissions"
## Advanced: Multi-Chart Repository
If you add more charts:
```
charts/
openclaw/
openclaw-operator/
openclaw-monitoring/
```
The `helm/chart-releaser-action` automatically handles multiple charts.
## References
- [Helm Chart Repository Guide](https://helm.sh/docs/topics/chart_repository/)
- [Chart Releaser Action](https://github.com/helm/chart-releaser-action)
- [Artifact Hub](https://artifacthub.io/docs/topics/repositories/)
- [OCI Registry Support](https://helm.sh/docs/topics/registries/)