mirror of
https://github.com/imjasonh/git-k8s
synced 2026-07-13 08:57:00 +00:00
Build a complete Kubernetes control plane for Git operations using Knative's pkg framework, go-git for in-memory Git operations, and ko for builds. Architecture: - 4 CRDs: GitRepository, GitBranch, GitPushTransaction, GitRepoSync - Push controller: atomic Git push via go-git with CAS (compare-and-swap) - Sync controller: two-way sync with in-memory merge base calculation - Resolver controller: automated 3-way merge for conflicted syncs - In-cluster Gitea server for backing storage - Full RBAC, ko-based deployments, and code-gen scaffolding Note: go.sum needs generation via `go mod tidy` in an environment with full internet access (knative.dev/pkg v0.0.0-20250520014526-44579e9ce5ed). https://claude.ai/code/session_01QfFzqKQUsxxBsiZUhuJ3pG
77 lines
2.1 KiB
YAML
77 lines
2.1 KiB
YAML
apiVersion: apiextensions.k8s.io/v1
|
|
kind: CustomResourceDefinition
|
|
metadata:
|
|
name: gitbranches.git.k8s.io
|
|
spec:
|
|
group: git.k8s.io
|
|
names:
|
|
kind: GitBranch
|
|
listKind: GitBranchList
|
|
plural: gitbranches
|
|
singular: gitbranch
|
|
shortNames:
|
|
- gitbr
|
|
categories:
|
|
- git
|
|
scope: Namespaced
|
|
versions:
|
|
- name: v1alpha1
|
|
served: true
|
|
storage: true
|
|
subresources:
|
|
status: {}
|
|
schema:
|
|
openAPIV3Schema:
|
|
type: object
|
|
properties:
|
|
spec:
|
|
type: object
|
|
required:
|
|
- repositoryRef
|
|
- branchName
|
|
properties:
|
|
repositoryRef:
|
|
type: string
|
|
description: Name of the parent GitRepository resource.
|
|
branchName:
|
|
type: string
|
|
description: Name of the branch (e.g., "main", "feature/foo").
|
|
status:
|
|
type: object
|
|
properties:
|
|
conditions:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
type:
|
|
type: string
|
|
status:
|
|
type: string
|
|
lastTransitionTime:
|
|
type: string
|
|
format: date-time
|
|
reason:
|
|
type: string
|
|
message:
|
|
type: string
|
|
headCommit:
|
|
type: string
|
|
description: SHA of the current HEAD commit.
|
|
lastUpdated:
|
|
type: string
|
|
format: date-time
|
|
additionalPrinterColumns:
|
|
- name: Repository
|
|
type: string
|
|
jsonPath: .spec.repositoryRef
|
|
- name: Branch
|
|
type: string
|
|
jsonPath: .spec.branchName
|
|
- name: HEAD
|
|
type: string
|
|
jsonPath: .status.headCommit
|
|
priority: 1
|
|
- name: Age
|
|
type: date
|
|
jsonPath: .metadata.creationTimestamp
|