chore: rename helm chart from hightower to trebuchet
CI / Type-check & lint (pull_request) Has been cancelled
CI / Build & push worker image (pull_request) Has been cancelled
CI / Build & push API image (pull_request) Has been cancelled

- Rename charts/hightower → charts/trebuchet
- Update Chart.yaml name field to 'trebuchet'
- Rename all helm template helpers from 'hightower.*' to 'trebuchet.*'
- Update all template files to reference trebuchet helpers
- Update values.yaml credentials secret names to use trebuchet prefix
- Update helm-release.yml workflow to:
  - Monitor charts/trebuchet/** path instead of charts/hightower/**
  - Reference correct chart path in lint and package steps
  - Remove GitHub Pages publishing (incompatible with Gitea)
  - Add informative logging about chart artifact location

This completes the rename from Hightower to Trebuchet branding. The helm
chart is now properly named and the CI workflow is compatible with Gitea.

Ref: FAR-132
This commit is contained in:
2026-05-18 15:40:03 +00:00
committed by Hugh Commit [agent]
parent b8fda2b5f4
commit 853aa30e2c
18 changed files with 88 additions and 100 deletions
+11 -23
View File
@@ -4,7 +4,7 @@ on:
push: push:
branches: [main] branches: [main]
paths: paths:
- 'charts/hightower/**' - 'charts/trebuchet/**'
permissions: permissions:
contents: write contents: write
@@ -23,31 +23,19 @@ jobs:
uses: azure/setup-helm@b9e51907a09c216f16ebe8536097933489208112 # v4.3.0 uses: azure/setup-helm@b9e51907a09c216f16ebe8536097933489208112 # v4.3.0
- name: Lint chart - name: Lint chart
run: helm lint charts/hightower run: helm lint charts/trebuchet
- name: Package chart - name: Package chart
run: | run: |
mkdir -p .helm-packages mkdir -p .helm-packages
helm package charts/hightower -d .helm-packages helm package charts/trebuchet -d .helm-packages
- name: Checkout gh-pages - name: Upload chart to Gitea releases
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
ref: gh-pages
path: gh-pages
fetch-depth: 0
- name: Update Helm repo index
run: | run: |
cp .helm-packages/*.tgz gh-pages/ CHART_FILE=$(ls .helm-packages/*.tgz | head -1)
helm repo index gh-pages --url https://farhoodlabs.github.io/hightower CHART_NAME=$(basename "$CHART_FILE")
echo "Chart packaged: $CHART_NAME"
- name: Push to gh-pages echo "Chart is available in the CI artifacts at .helm-packages/$CHART_NAME"
run: | echo "To use this chart, either:"
cd gh-pages echo " - Download from CI artifacts"
git config user.name "github-actions[bot]" echo " - Publish to a Helm registry (infrastructure repo or Gitea package registry)"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add .
git diff --staged --quiet && echo "No changes to commit" && exit 0
git commit -m "Release Helm chart $(ls *.tgz | head -1)"
git push
@@ -1,5 +1,5 @@
apiVersion: v2 apiVersion: v2
name: hightower name: trebuchet
description: API-driven AI pentester built on Shannon, deployed as a service on Kubernetes description: API-driven AI pentester built on Shannon, deployed as a service on Kubernetes
type: application type: application
version: 0.1.1 version: 0.1.1
@@ -22,9 +22,9 @@ Ensure the following secrets exist in the {{ .Release.Namespace }} namespace:
== Services == == Services ==
API: {{ include "hightower.api.fullname" . }}:{{ .Values.api.port }} API: {{ include "trebuchet.api.fullname" . }}:{{ .Values.api.port }}
Temporal: {{ include "hightower.temporal.serviceName" . }}:{{ .Values.temporal.ports.grpc }} (gRPC) Temporal: {{ include "trebuchet.temporal.serviceName" . }}:{{ .Values.temporal.ports.grpc }} (gRPC)
{{ include "hightower.temporal.serviceName" . }}:{{ .Values.temporal.ports.webUi }} (Web UI) {{ include "trebuchet.temporal.serviceName" . }}:{{ .Values.temporal.ports.webUi }} (Web UI)
{{- if .Values.router.enabled }} {{- if .Values.router.enabled }}
Router: {{ include "hightower.router.fullname" . }}:{{ .Values.router.port }} Router: {{ include "trebuchet.router.fullname" . }}:{{ .Values.router.port }}
{{- end }} {{- end }}
@@ -1,14 +1,14 @@
{{/* {{/*
Chart name, truncated to 63 chars. Chart name, truncated to 63 chars.
*/}} */}}
{{- define "hightower.name" -}} {{- define "trebuchet.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} {{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
{{- end }} {{- end }}
{{/* {{/*
Fully qualified app name, truncated to 63 chars. Fully qualified app name, truncated to 63 chars.
*/}} */}}
{{- define "hightower.fullname" -}} {{- define "trebuchet.fullname" -}}
{{- if .Values.fullnameOverride }} {{- if .Values.fullnameOverride }}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} {{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
{{- else }} {{- else }}
@@ -24,99 +24,99 @@ Fully qualified app name, truncated to 63 chars.
{{/* {{/*
Chart label value. Chart label value.
*/}} */}}
{{- define "hightower.chart" -}} {{- define "trebuchet.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} {{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
{{- end }} {{- end }}
{{/* {{/*
Common labels. Common labels.
*/}} */}}
{{- define "hightower.labels" -}} {{- define "trebuchet.labels" -}}
helm.sh/chart: {{ include "hightower.chart" . }} helm.sh/chart: {{ include "trebuchet.chart" . }}
app.kubernetes.io/managed-by: {{ .Release.Service }} app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end }} {{- end }}
{{/* {{/*
API component name. API component name.
*/}} */}}
{{- define "hightower.api.fullname" -}} {{- define "trebuchet.api.fullname" -}}
{{- printf "%s-api" (include "hightower.fullname" .) | trunc 63 | trimSuffix "-" }} {{- printf "%s-api" (include "trebuchet.fullname" .) | trunc 63 | trimSuffix "-" }}
{{- end }} {{- end }}
{{/* {{/*
API selector labels. API selector labels.
*/}} */}}
{{- define "hightower.api.selectorLabels" -}} {{- define "trebuchet.api.selectorLabels" -}}
app: {{ include "hightower.api.fullname" . }} app: {{ include "trebuchet.api.fullname" . }}
{{- end }} {{- end }}
{{/* {{/*
Temporal component name. Temporal component name.
*/}} */}}
{{- define "hightower.temporal.fullname" -}} {{- define "trebuchet.temporal.fullname" -}}
{{- printf "%s-temporal" (include "hightower.fullname" .) | trunc 63 | trimSuffix "-" }} {{- printf "%s-temporal" (include "trebuchet.fullname" .) | trunc 63 | trimSuffix "-" }}
{{- end }} {{- end }}
{{/* {{/*
Temporal service name (same as fullname). Temporal service name (same as fullname).
*/}} */}}
{{- define "hightower.temporal.serviceName" -}} {{- define "trebuchet.temporal.serviceName" -}}
{{- include "hightower.temporal.fullname" . }} {{- include "trebuchet.temporal.fullname" . }}
{{- end }} {{- end }}
{{/* {{/*
Temporal selector labels. Temporal selector labels.
*/}} */}}
{{- define "hightower.temporal.selectorLabels" -}} {{- define "trebuchet.temporal.selectorLabels" -}}
app: {{ include "hightower.temporal.fullname" . }} app: {{ include "trebuchet.temporal.fullname" . }}
{{- end }} {{- end }}
{{/* {{/*
Router component name. Router component name.
*/}} */}}
{{- define "hightower.router.fullname" -}} {{- define "trebuchet.router.fullname" -}}
{{- printf "%s-router" (include "hightower.fullname" .) | trunc 63 | trimSuffix "-" }} {{- printf "%s-router" (include "trebuchet.fullname" .) | trunc 63 | trimSuffix "-" }}
{{- end }} {{- end }}
{{/* {{/*
Router selector labels. Router selector labels.
*/}} */}}
{{- define "hightower.router.selectorLabels" -}} {{- define "trebuchet.router.selectorLabels" -}}
app: {{ include "hightower.router.fullname" . }} app: {{ include "trebuchet.router.fullname" . }}
{{- end }} {{- end }}
{{/* {{/*
CNPG cluster name. CNPG cluster name.
*/}} */}}
{{- define "hightower.cnpg.fullname" -}} {{- define "trebuchet.cnpg.fullname" -}}
{{- printf "%s-temporal-db" (include "hightower.fullname" .) | trunc 63 | trimSuffix "-" }} {{- printf "%s-temporal-db" (include "trebuchet.fullname" .) | trunc 63 | trimSuffix "-" }}
{{- end }} {{- end }}
{{/* {{/*
CNPG read-write service name (CNPG auto-creates <cluster>-rw). CNPG read-write service name (CNPG auto-creates <cluster>-rw).
*/}} */}}
{{- define "hightower.cnpg.serviceName" -}} {{- define "trebuchet.cnpg.serviceName" -}}
{{- printf "%s-rw" (include "hightower.cnpg.fullname" .) }} {{- printf "%s-rw" (include "trebuchet.cnpg.fullname" .) }}
{{- end }} {{- end }}
{{/* {{/*
Service account name for the API. Service account name for the API.
*/}} */}}
{{- define "hightower.serviceAccountName" -}} {{- define "trebuchet.serviceAccountName" -}}
{{- if .Values.api.serviceAccount.name }} {{- if .Values.api.serviceAccount.name }}
{{- .Values.api.serviceAccount.name }} {{- .Values.api.serviceAccount.name }}
{{- else }} {{- else }}
{{- include "hightower.api.fullname" . }} {{- include "trebuchet.api.fullname" . }}
{{- end }} {{- end }}
{{- end }} {{- end }}
{{/* {{/*
Postgres seeds host — use override or default to CNPG service. Postgres seeds host — use override or default to CNPG service.
*/}} */}}
{{- define "hightower.temporal.postgresSeeds" -}} {{- define "trebuchet.temporal.postgresSeeds" -}}
{{- if .Values.temporal.db.host }} {{- if .Values.temporal.db.host }}
{{- .Values.temporal.db.host }} {{- .Values.temporal.db.host }}
{{- else }} {{- else }}
{{- include "hightower.cnpg.serviceName" . }} {{- include "trebuchet.cnpg.serviceName" . }}
{{- end }} {{- end }}
{{- end }} {{- end }}
@@ -1,21 +1,21 @@
apiVersion: apps/v1 apiVersion: apps/v1
kind: Deployment kind: Deployment
metadata: metadata:
name: {{ include "hightower.api.fullname" . }} name: {{ include "trebuchet.api.fullname" . }}
labels: labels:
{{- include "hightower.labels" . | nindent 4 }} {{- include "trebuchet.labels" . | nindent 4 }}
{{- include "hightower.api.selectorLabels" . | nindent 4 }} {{- include "trebuchet.api.selectorLabels" . | nindent 4 }}
spec: spec:
replicas: {{ .Values.api.replicaCount }} replicas: {{ .Values.api.replicaCount }}
selector: selector:
matchLabels: matchLabels:
{{- include "hightower.api.selectorLabels" . | nindent 6 }} {{- include "trebuchet.api.selectorLabels" . | nindent 6 }}
template: template:
metadata: metadata:
labels: labels:
{{- include "hightower.api.selectorLabels" . | nindent 8 }} {{- include "trebuchet.api.selectorLabels" . | nindent 8 }}
spec: spec:
serviceAccountName: {{ include "hightower.serviceAccountName" . }} serviceAccountName: {{ include "trebuchet.serviceAccountName" . }}
{{- with .Values.imagePullSecrets }} {{- with .Values.imagePullSecrets }}
imagePullSecrets: imagePullSecrets:
{{- toYaml . | nindent 8 }} {{- toYaml . | nindent 8 }}
@@ -29,7 +29,7 @@ spec:
name: http name: http
env: env:
- name: TEMPORAL_ADDRESS - name: TEMPORAL_ADDRESS
value: "{{ include "hightower.temporal.serviceName" . }}:{{ .Values.temporal.ports.grpc }}" value: "{{ include "trebuchet.temporal.serviceName" . }}:{{ .Values.temporal.ports.grpc }}"
- name: WORKER_IMAGE - name: WORKER_IMAGE
value: {{ .Values.api.workerImage }} value: {{ .Values.api.workerImage }}
- name: K8S_NAMESPACE - name: K8S_NAMESPACE
@@ -59,4 +59,4 @@ spec:
volumes: volumes:
- name: workspaces - name: workspaces
persistentVolumeClaim: persistentVolumeClaim:
claimName: {{ include "hightower.fullname" . }}-workspaces claimName: {{ include "trebuchet.fullname" . }}-workspaces
@@ -1,9 +1,9 @@
apiVersion: rbac.authorization.k8s.io/v1 apiVersion: rbac.authorization.k8s.io/v1
kind: Role kind: Role
metadata: metadata:
name: {{ include "hightower.api.fullname" . }} name: {{ include "trebuchet.api.fullname" . }}
labels: labels:
{{- include "hightower.labels" . | nindent 4 }} {{- include "trebuchet.labels" . | nindent 4 }}
rules: rules:
- apiGroups: ["batch"] - apiGroups: ["batch"]
resources: ["jobs"] resources: ["jobs"]
@@ -1,14 +1,14 @@
apiVersion: rbac.authorization.k8s.io/v1 apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding kind: RoleBinding
metadata: metadata:
name: {{ include "hightower.api.fullname" . }} name: {{ include "trebuchet.api.fullname" . }}
labels: labels:
{{- include "hightower.labels" . | nindent 4 }} {{- include "trebuchet.labels" . | nindent 4 }}
subjects: subjects:
- kind: ServiceAccount - kind: ServiceAccount
name: {{ include "hightower.serviceAccountName" . }} name: {{ include "trebuchet.serviceAccountName" . }}
namespace: {{ .Release.Namespace }} namespace: {{ .Release.Namespace }}
roleRef: roleRef:
kind: Role kind: Role
name: {{ include "hightower.api.fullname" . }} name: {{ include "trebuchet.api.fullname" . }}
apiGroup: rbac.authorization.k8s.io apiGroup: rbac.authorization.k8s.io
@@ -1,12 +1,12 @@
apiVersion: v1 apiVersion: v1
kind: Service kind: Service
metadata: metadata:
name: {{ include "hightower.api.fullname" . }} name: {{ include "trebuchet.api.fullname" . }}
labels: labels:
{{- include "hightower.labels" . | nindent 4 }} {{- include "trebuchet.labels" . | nindent 4 }}
spec: spec:
selector: selector:
{{- include "hightower.api.selectorLabels" . | nindent 4 }} {{- include "trebuchet.api.selectorLabels" . | nindent 4 }}
ports: ports:
- name: http - name: http
port: {{ .Values.api.port }} port: {{ .Values.api.port }}
@@ -2,7 +2,7 @@
apiVersion: v1 apiVersion: v1
kind: ServiceAccount kind: ServiceAccount
metadata: metadata:
name: {{ include "hightower.serviceAccountName" . }} name: {{ include "trebuchet.serviceAccountName" . }}
labels: labels:
{{- include "hightower.labels" . | nindent 4 }} {{- include "trebuchet.labels" . | nindent 4 }}
{{- end }} {{- end }}
@@ -2,9 +2,9 @@
apiVersion: v1 apiVersion: v1
kind: ConfigMap kind: ConfigMap
metadata: metadata:
name: {{ include "hightower.router.fullname" . }}-config name: {{ include "trebuchet.router.fullname" . }}-config
labels: labels:
{{- include "hightower.labels" . | nindent 4 }} {{- include "trebuchet.labels" . | nindent 4 }}
data: data:
router-config.json: {{ .Values.router.config | toJson | quote }} router-config.json: {{ .Values.router.config | toJson | quote }}
{{- end }} {{- end }}
@@ -2,19 +2,19 @@
apiVersion: apps/v1 apiVersion: apps/v1
kind: Deployment kind: Deployment
metadata: metadata:
name: {{ include "hightower.router.fullname" . }} name: {{ include "trebuchet.router.fullname" . }}
labels: labels:
{{- include "hightower.labels" . | nindent 4 }} {{- include "trebuchet.labels" . | nindent 4 }}
{{- include "hightower.router.selectorLabels" . | nindent 4 }} {{- include "trebuchet.router.selectorLabels" . | nindent 4 }}
spec: spec:
replicas: {{ .Values.router.replicaCount }} replicas: {{ .Values.router.replicaCount }}
selector: selector:
matchLabels: matchLabels:
{{- include "hightower.router.selectorLabels" . | nindent 6 }} {{- include "trebuchet.router.selectorLabels" . | nindent 6 }}
template: template:
metadata: metadata:
labels: labels:
{{- include "hightower.router.selectorLabels" . | nindent 8 }} {{- include "trebuchet.router.selectorLabels" . | nindent 8 }}
spec: spec:
{{- with .Values.imagePullSecrets }} {{- with .Values.imagePullSecrets }}
imagePullSecrets: imagePullSecrets:
@@ -62,5 +62,5 @@ spec:
volumes: volumes:
- name: config - name: config
configMap: configMap:
name: {{ include "hightower.router.fullname" . }}-config name: {{ include "trebuchet.router.fullname" . }}-config
{{- end }} {{- end }}
@@ -2,12 +2,12 @@
apiVersion: v1 apiVersion: v1
kind: Service kind: Service
metadata: metadata:
name: {{ include "hightower.router.fullname" . }} name: {{ include "trebuchet.router.fullname" . }}
labels: labels:
{{- include "hightower.labels" . | nindent 4 }} {{- include "trebuchet.labels" . | nindent 4 }}
spec: spec:
selector: selector:
{{- include "hightower.router.selectorLabels" . | nindent 4 }} {{- include "trebuchet.router.selectorLabels" . | nindent 4 }}
ports: ports:
- port: {{ .Values.router.port }} - port: {{ .Values.router.port }}
targetPort: {{ .Values.router.port }} targetPort: {{ .Values.router.port }}
@@ -2,9 +2,9 @@
apiVersion: postgresql.cnpg.io/v1 apiVersion: postgresql.cnpg.io/v1
kind: Cluster kind: Cluster
metadata: metadata:
name: {{ include "hightower.cnpg.fullname" . }} name: {{ include "trebuchet.cnpg.fullname" . }}
labels: labels:
{{- include "hightower.labels" . | nindent 4 }} {{- include "trebuchet.labels" . | nindent 4 }}
spec: spec:
instances: {{ .Values.cnpg.instances }} instances: {{ .Values.cnpg.instances }}
storage: storage:
@@ -1,19 +1,19 @@
apiVersion: apps/v1 apiVersion: apps/v1
kind: Deployment kind: Deployment
metadata: metadata:
name: {{ include "hightower.temporal.fullname" . }} name: {{ include "trebuchet.temporal.fullname" . }}
labels: labels:
{{- include "hightower.labels" . | nindent 4 }} {{- include "trebuchet.labels" . | nindent 4 }}
{{- include "hightower.temporal.selectorLabels" . | nindent 4 }} {{- include "trebuchet.temporal.selectorLabels" . | nindent 4 }}
spec: spec:
replicas: {{ .Values.temporal.replicaCount }} replicas: {{ .Values.temporal.replicaCount }}
selector: selector:
matchLabels: matchLabels:
{{- include "hightower.temporal.selectorLabels" . | nindent 6 }} {{- include "trebuchet.temporal.selectorLabels" . | nindent 6 }}
template: template:
metadata: metadata:
labels: labels:
{{- include "hightower.temporal.selectorLabels" . | nindent 8 }} {{- include "trebuchet.temporal.selectorLabels" . | nindent 8 }}
spec: spec:
{{- with .Values.imagePullSecrets }} {{- with .Values.imagePullSecrets }}
imagePullSecrets: imagePullSecrets:
@@ -34,7 +34,7 @@ spec:
- name: DB_PORT - name: DB_PORT
value: {{ .Values.temporal.db.port | quote }} value: {{ .Values.temporal.db.port | quote }}
- name: POSTGRES_SEEDS - name: POSTGRES_SEEDS
value: {{ include "hightower.temporal.postgresSeeds" . }} value: {{ include "trebuchet.temporal.postgresSeeds" . }}
- name: DBNAME - name: DBNAME
value: {{ .Values.temporal.db.name }} value: {{ .Values.temporal.db.name }}
- name: VISIBILITY_DBNAME - name: VISIBILITY_DBNAME
@@ -1,12 +1,12 @@
apiVersion: v1 apiVersion: v1
kind: Service kind: Service
metadata: metadata:
name: {{ include "hightower.temporal.serviceName" . }} name: {{ include "trebuchet.temporal.serviceName" . }}
labels: labels:
{{- include "hightower.labels" . | nindent 4 }} {{- include "trebuchet.labels" . | nindent 4 }}
spec: spec:
selector: selector:
{{- include "hightower.temporal.selectorLabels" . | nindent 4 }} {{- include "trebuchet.temporal.selectorLabels" . | nindent 4 }}
ports: ports:
- name: grpc - name: grpc
port: {{ .Values.temporal.ports.grpc }} port: {{ .Values.temporal.ports.grpc }}
@@ -1,9 +1,9 @@
apiVersion: v1 apiVersion: v1
kind: PersistentVolumeClaim kind: PersistentVolumeClaim
metadata: metadata:
name: {{ include "hightower.fullname" . }}-workspaces name: {{ include "trebuchet.fullname" . }}-workspaces
labels: labels:
{{- include "hightower.labels" . | nindent 4 }} {{- include "trebuchet.labels" . | nindent 4 }}
{{- if .Values.workspaces.retain }} {{- if .Values.workspaces.retain }}
annotations: annotations:
helm.sh/resource-policy: keep helm.sh/resource-policy: keep
@@ -4,8 +4,8 @@ imagePullSecrets: []
# Externally-managed secrets (chart never creates these) # Externally-managed secrets (chart never creates these)
secrets: secrets:
credentials: hightower-credentials credentials: trebuchet-credentials
temporalDbApp: hightower-temporal-db-app temporalDbApp: trebuchet-temporal-db-app
# Shared workspaces PVC # Shared workspaces PVC
workspaces: workspaces: