Documentation
¶
Index ¶
Constants ¶
const ( // SecretTokenName is the name of the secret entry containing the token SecretTokenName = "token" // SecretHostKeysName is the name of the secret entry containing the SSH host keys SecretHostKeysName = "hostKeys" // SecretEndpointName is the name of the secret entry containing the api endpoint SecretEndpointName = "endpoint" // DeletionMagicString defines when a file should be deleted from the repository //TODO it will be replaced with something better in the future TODO DeletionMagicString = "{delete}" )
Variables ¶
This section is empty.
Functions ¶
func Register ¶
func Register(i Implementation)
Register adds a type to the list of supported Git implementations.
Types ¶
type CommitFile ¶
CommitFile contains all information about a file that should be committed to git TODO migrate to the CRDs in the future.
type Credentials ¶
type Credentials struct {
Token string
}
Credentials holds the authentication information for the API. Most of the times this is just a token.
type Implementation ¶
type Implementation interface {
// IsType returns true, if the given URL is handleable by the given implementation (Github,Gitlab, etc.)
IsType(URL *url.URL) (bool, error)
// New returns a clean new Repo implementation with the given URL
New(options RepoOptions) (Repo, error)
}
Implementation is a set of functions needed to get the right git implementation for the given URL.
type Repo ¶
type Repo interface {
// Type returns the type of the repo
Type() string
// FullURL returns the full url to the repository for ssh pulling
FullURL() *url.URL
Create() error
// Update will enforce the defined keys to be deployed to the repository, it will return true if an actual change
// happened
Update() (bool, error)
// Read will read the repository and populate it with the deployed keys. It will throw an
// error if the repo is not found on the server.
Read() error
// Remove will remove the git project according to the recycle policy
Remove() error
Connect() error
// CommitTemplateFiles uploads given files to the repository.
// files that contain exactly the deletion magic string should be removed
// when calling this function. TODO: will be replaced with something better in the future.
CommitTemplateFiles() error
}
Repo represents a repository that lives on some git server
func GetGitClient ¶
func GetGitClient(instance *synv1alpha1.GitRepoTemplate, namespace string, reqLogger logr.Logger, client client.Client) (Repo, string, error)
GetGitClient will return a git client from a provided template. This does a lot more plumbing than the simple NewClient() call. If you're needing a git client from a reconcile function, this is the way to go.
func NewRepo ¶
func NewRepo(opts RepoOptions) (Repo, error)
NewRepo returns a Repo object that can handle the specific URL
type RepoOptions ¶
type RepoOptions struct {
Credentials Credentials
DeployKeys map[string]synv1alpha1.DeployKey
Logger logr.Logger
URL *url.URL
Path string
RepoName string
DisplayName string
TemplateFiles map[string]string
DeletionPolicy synv1alpha1.DeletionPolicy
}
RepoOptions hold the options for creating a repository. The credentials are required to work. The deploykeys are optional but desired. If not provided DeletionPolicy will default to archive.