This guide explains how to publish the Traktor Helm chart to Artifact Hub and GitHub Pages.
Artifact Hub is a web-based application that enables finding, installing, and publishing packages and configurations for CNCF projects. It provides a central place for discovering Helm charts.
- GitHub repository with Helm chart
- GitHub Pages enabled
- Repository admin access
- Go to your GitHub repository
- Navigate to Settings → Pages
- Under "Source", select:
- Branch:
gh-pages - Folder:
/ (root)
- Branch:
- Click Save
- Note your GitHub Pages URL:
https://gdxbsv.github.io/traktor
# Create orphan branch for GitHub Pages
git checkout --orphan gh-pages
git rm -rf .
# Create initial index
cat > index.html << 'EOF'
<!DOCTYPE html>
<html>
<head>
<title>Traktor Helm Repository</title>
<style>
body { font-family: Arial, sans-serif; max-width: 800px; margin: 50px auto; padding: 20px; }
h1 { color: #333; }
code { background: #f4f4f4; padding: 2px 6px; border-radius: 3px; }
pre { background: #f4f4f4; padding: 15px; border-radius: 5px; overflow-x: auto; }
</style>
</head>
<body>
<h1>Traktor Helm Repository</h1>
<p>Official Helm repository for Traktor - Kubernetes operator that automatically restarts deployments when secrets change.</p>
<h2>Add Repository</h2>
<pre>helm repo add traktor https://gdxbsv.github.io/traktor
helm repo update</pre>
<h2>Install Chart</h2>
<pre>helm install traktor traktor/traktor</pre>
<h2>Links</h2>
<ul>
<li><a href="https://github.com/GDXbsv/traktor">GitHub Repository</a></li>
<li><a href="https://artifacthub.io/packages/helm/traktor/traktor">Artifact Hub</a></li>
<li><a href="index.yaml">Helm Repository Index</a></li>
</ul>
</body>
</html>
EOF
# Create Artifact Hub metadata
cat > artifacthub-repo.yml << 'EOF'
repositoryID: traktor
owners:
- name: GDX Cloud
email: support@gdxcloud.net
EOF
# Commit and push
git add .
git commit -m "Initial GitHub Pages setup"
git push origin gh-pagesWait a few minutes, then check:
https://gdxbsv.github.io/traktor
You should see the Helm repository homepage.
-
Go to https://artifacthub.io
-
Sign in with your GitHub account
-
Click Add repository in the control panel
-
Fill in the form:
- Kind: Helm charts
- Repository name: traktor
- Display name: Traktor Operator
- URL:
https://gdxbsv.github.io/traktor - Official: Yes (if you're the maintainer)
- Verified Publisher: Request verification
-
Click Add
After a few minutes, your chart will appear on Artifact Hub:
https://artifacthub.io/packages/helm/traktor/traktor
The workflow .github/workflows/helm-repo.yml automatically:
-
On new version tag (e.g.,
v1.0.0):- Packages the Helm chart
- Updates the version in Chart.yaml
- Publishes to GitHub Pages
- Updates the Helm repository index
- Artifact Hub automatically syncs within 30 minutes
-
What happens:
git tag -a v1.0.0 -m "Release v1.0.0" git push origin v1.0.0 → Workflow runs → Chart packaged: traktor-1.0.0.tgz → Pushed to gh-pages branch → Available at: https://gdxbsv.github.io/traktor → Synced to Artifact Hub
The chart includes Artifact Hub annotations in Chart.yaml:
annotations:
artifacthub.io/license: Apache-2.0
artifacthub.io/operator: "true"
artifacthub.io/operatorCapabilities: Basic Install
artifacthub.io/prerelease: "false"
artifacthub.io/crds: |
- kind: SecretsRefresh
version: v1alpha1
name: secretsrefreshes.traktor.gdxcloud.net
artifacthub.io/links: |
- name: Documentation
url: https://github.com/GDXbsv/traktor/blob/main/README.mdThese annotations provide rich metadata on Artifact Hub.
helm repo add traktor https://gdxbsv.github.io/traktor
helm repo updatehelm search repo traktorOutput:
NAME CHART VERSION APP VERSION DESCRIPTION
traktor/traktor 1.0.0 1.0.0 A Kubernetes operator that automatically rest...
# Install latest version
helm install traktor traktor/traktor
# Install specific version
helm install traktor traktor/traktor --version 1.0.0
# Install with custom values
helm install traktor traktor/traktor -f values.yaml# Update repository
helm repo update
# Upgrade to latest
helm upgrade traktor traktor/traktor
# Upgrade to specific version
helm upgrade traktor traktor/traktor --version 1.1.0Once published, your chart will have:
- Description and README
- Installation instructions
- Values.yaml documentation
- Version history
- Security report (if vulnerabilities found)
- Searchable on artifacthub.io
- Categories and keywords
- Verified publisher badge (after verification)
- CRD documentation
- Example configurations
- Links to GitHub, docs, etc.
- Maintainer information
- Webhook for new versions
- Email alerts for users tracking the chart
- Security alerts for vulnerabilities
To get the "Verified Publisher" badge:
- Go to your Artifact Hub settings
- Add your GitHub repository
- Add
artifacthub-repo.ymlto your repository - Request verification in Artifact Hub
- Artifact Hub team will verify ownership
Enhance your chart's Artifact Hub page:
Create charts/traktor/screenshots/ and reference in Chart.yaml:
annotations:
artifacthub.io/screenshots: |
- title: Operator Dashboard
url: https://raw.githubusercontent.com/GDXbsv/traktor/main/docs/images/dashboard.pngannotations:
artifacthub.io/videos: |
- title: Getting Started
url: https://www.youtube.com/watch?v=xxxxxArtifact Hub automatically scans for:
- CVEs in container images
- Deprecated Kubernetes APIs
- Security best practices
- Go to Artifact Hub control panel
- View your repository
- Check "Last scan" timestamp
- View any errors or warnings
If changes don't appear:
- Go to repository settings on Artifact Hub
- Click "Request rescan"
- Wait a few minutes
Check:
- GitHub Pages is enabled and working
artifacthub-repo.ymlexists in gh-pages branch- Repository is registered on Artifact Hub
- Wait 30 minutes for automatic sync
Verify GitHub Pages:
curl -I https://gdxbsv.github.io/traktor/index.yamlShould return 200 OK.
Error: "Repository not found"
Solution:
- Verify URL:
https://gdxbsv.github.io/traktor(no trailing slash) - Check index.yaml exists and is valid
- Ensure gh-pages branch is published
Error: Annotations not appearing on Artifact Hub
Solution:
- Check Chart.yaml syntax
- Ensure annotations use correct format
- Request rescan on Artifact Hub
Error: Old version still showing
Solution:
- Verify workflow ran successfully
- Check gh-pages branch has new package
- Request manual rescan on Artifact Hub
- Clear browser cache
Follow semantic versioning for chart versions:
v1.0.0 - Initial release
v1.1.0 - New features
v1.1.1 - Bug fixes
v2.0.0 - Breaking changes
Update Chart.yaml annotations with each release:
artifacthub.io/changes: |
- kind: added
description: Add support for network policies
- kind: changed
description: Update default memory limits
- kind: fixed
description: Fix RBAC permissionsKeep chart README up to date:
- Installation instructions
- Configuration options
- Examples
- Troubleshooting
- Scan images for vulnerabilities
- Use specific image tags (not
latest) - Document security considerations
- Keep dependencies updated
Artifact Hub provides analytics:
- Downloads per version
- Repository views
- Installs tracking
- Popular versions
Access in your Artifact Hub dashboard.
- Documentation: https://artifacthub.io/docs
- GitHub: https://github.com/artifacthub/hub
- Slack: CNCF Slack #artifact-hub
- GitHub Issues: https://github.com/GDXbsv/traktor/issues
- Documentation: https://github.com/GDXbsv/traktor
# Add repository
helm repo add traktor https://gdxbsv.github.io/traktor
# Update repositories
helm repo update
# Search for chart
helm search repo traktor
# View chart info
helm show chart traktor/traktor
helm show values traktor/traktor
helm show readme traktor/traktor
# Install chart
helm install traktor traktor/traktor
# Upgrade chart
helm upgrade traktor traktor/traktor
# Uninstall chart
helm uninstall traktor- Update Chart.yaml version
- Update Chart.yaml appVersion
- Update CHANGELOG in annotations
- Tag release:
git tag -a vX.Y.Z - Push tag:
git push origin vX.Y.Z - Workflow publishes to GitHub Pages
- Verify on:
https://gdxbsv.github.io/traktor - Wait for Artifact Hub sync (30 mins)
- Verify on:
https://artifacthub.io/packages/helm/traktor/traktor - Announce release
Your Helm chart will now be discoverable on Artifact Hub! 🎉