Gollum is a Kubernetes operator designed to monitor GitHub release assets. If the required assets for a specified version are missing, Gollum triggers a Tekton PipelineRun
to generate them.
- Monitors GitHub releases for specified repositories.
- Detects missing release assets for a given version.
- Triggers a Tekton
PipelineRun
to build and publish the missing assets. - Configurable through Kubernetes Custom Resources.
- Kubernetes cluster (v1.20+ recommended)
- Tekton installed in the cluster
- GitHub API access token (if monitoring private repositories)
- Clone the repository:
git clone https://github.com/your-org/gollum.git cd gollum
- Apply the CRDs and Operator:
kubectl apply -f deploy/crds/ kubectl apply -f deploy/operator.yaml
- Verify installation:
Ensure the operator is running properly.
kubectl get pods -n gollum
To monitor a repository, create a GollumReleaseMonitor
Custom Resource:
apiVersion: gollum.soeren.cloud/v1alpha1
kind: Repository
metadata:
labels:
app.kubernetes.io/name: gollum
app.kubernetes.io/managed-by: kustomize
name: soerenschneider-tunnelguard
spec:
owner: "soerenschneider"
repo: "tunnelguard"
cloneUsingSsh: false
pipelineRunName: "gollum"
pipelineNames:
assets: "build-gh-release"
versionFilter:
impl: "semver"
arg: ">= v1.0.0"
workspaces:
signify:
type: "secret"
secretName: "signify"
shared-data:
type: "volume"
storageClassName: "openebs-hostpath"
github-token:
type: "secret"
secretName: "github"
Apply it using:
kubectl apply -f example-repo-monitor.yaml
- Gollum continuously monitors the specified GitHub repository for new releases.
- If a release is missing any required assets, Gollum triggers the specified Tekton
PipelineRun
. - Tekton builds and uploads the missing assets to the release.
- Gollum updates the status of the
GollumReleaseMonitor
resource.
- GitHub Authentication: Use a Kubernetes secret to store a GitHub personal access token (PAT) for private repositories.
- Tekton Integration: Specify an existing Tekton pipeline reference in the CR.
- Polling Interval: Configure how frequently Gollum checks GitHub releases.
go run main.go
docker build -t your-org/gollum:latest .
kubectl apply -f deploy/