Files
huly-selfhost/.github/workflows/helm-chart.yml
5dc03d01aa feat: add Helm chart for Kubernetes deployment (#280)
* feat: add Helm chart for Kubernetes deployment

Comprehensive Helm chart for deploying Huly to Kubernetes:
- All core services (front, account, transactor, collaborator, etc.)
- Infrastructure (CockroachDB, Redpanda, Elasticsearch, MinIO)
- Optional AI bot with MongoDB
- Automated backup CronJobs to S3-compatible storage
- Configurable image registry and version pinning
- Auto-generated secrets with persistence across upgrades
- NGINX ingress with TLS via cert-manager
- CI workflow for lint, template validation, and OCI publish

Chart lives at helm/ (outside kube/) to avoid conflict with the
existing kubectl-based CI that recursively applies kube/*.yaml.

Signed-off-by: Daniel Kendall <dkendall@ledoweb.com>

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Don Kendall <kendall@donkendall.com>

* feat(helm): add optional GitHub integration service

Deploy pod-github for bidirectional sync of issues, PRs, and comments
between Huly and GitHub. Gated behind githubIntegration.enabled (false
by default).

Adds:
- templates/github/deployment.yaml + service.yaml
- GITHUB_URL to configmap and front deployment
- GitHub App credentials to shared secret
- /_github ingress backend
- README documentation for GitHub integration and AI bot

Signed-off-by: Daniel Kendall <dkendall@ledoweb.com>

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Don Kendall <kendall@donkendall.com>

---------

Signed-off-by: Don Kendall <kendall@donkendall.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 13:38:08 +07:00

53 lines
1.3 KiB
YAML

name: Helm Chart
on:
push:
branches: [main]
paths:
- "helm/**"
pull_request:
paths:
- "helm/**"
permissions:
contents: read
packages: write
env:
CHART_PATH: helm/huly
OCI_REGISTRY: oci://ghcr.io/${{ github.repository_owner }}/charts
jobs:
lint:
name: Lint & Template
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: azure/setup-helm@v4
- run: helm lint ${{ env.CHART_PATH }}
- run: helm template huly ${{ env.CHART_PATH }} --set domain=ci.example.com
publish:
name: Package & Push OCI
needs: lint
if: github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: azure/setup-helm@v4
- name: Extract chart version
id: chart
run: |
version=$(grep '^version:' ${{ env.CHART_PATH }}/Chart.yaml | awk '{print $2}')
echo "version=$version" >> "$GITHUB_OUTPUT"
- name: Login to GHCR
run: echo "${{ secrets.GITHUB_TOKEN }}" | helm registry login ghcr.io -u ${{ github.actor }} --password-stdin
- name: Package chart
run: helm package ${{ env.CHART_PATH }} -d /tmp/charts
- name: Push to OCI registry
run: helm push /tmp/charts/huly-${{ steps.chart.outputs.version }}.tgz ${{ env.OCI_REGISTRY }}