1
0
Fork 0
mirror of https://github.com/imjasonh/git-k8s synced 2026-07-13 08:57:00 +00:00
git-k8s/config/crds/git.k8s.io_gitbranches.yaml
Claude 8e65104201
Implement Git-as-K8s control plane with Knative controllers
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
2026-02-27 23:58:44 +00:00

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