policy

package
v1.9.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 25, 2024 License: Apache-2.0 Imports: 49 Imported by: 0

Documentation

Index

Constants

View Source
const (
	UNKNOWN_VALIDATOR validator = iota
	GORELEASER
	GHA
)
View Source
const (
	Testsuite = 0
	Branch    = 1
	Trigger   = 2
	Repo      = 3
)

Tree depth of ghMatrix

Variables

View Source
var Green = "\033[32m"
View Source
var LBlue = "\033[94m"
View Source
var NoPRs = errors.New("no matching PRs found")
View Source
var Red = "\033[31m"
View Source
var Reset = "\033[0m"
View Source
var White = "\033[97m"
View Source
var Yellow = "\033[33m"

Functions

func LoadRepoPolicies

func LoadRepoPolicies(policies *Policies) error

LoadRepoPolicies populates the supplied policies with the policy key from a the config file This will panic if the type assertions fail

func NewParams added in v1.6.1

func NewParams(paramNames ...string) runParameters

NewParams looks in the environment for the named parameters and returns a map suitable for usage in versions.env and to decide the test scope

func NewVariations added in v1.9.1

func NewVariations() *variations

func NonTrivialDiff added in v1.6.0

func NonTrivialDiff(dir string, op, colours bool) ([]string, error)

func Serve added in v1.9.0

func Serve(port, tvDir string) error

Serve starts the embedded test controller UI

Types

type AllTestsuiteVariations added in v1.9.1

type AllTestsuiteVariations map[string]variations

RepoTestsuiteVariations maps file→variations

func (AllTestsuiteVariations) Files added in v1.9.1

func (av AllTestsuiteVariations) Files() []string

type AuthConfig added in v1.9.0

type AuthConfig struct {
	Auth string `json:"auth"`
}

type Bundle added in v1.4.7

type Bundle struct {
	Name string
	// contains filtered or unexported fields
}

Bundle represents a directory tree, instantiated by NewBundle()

func NewBundle added in v1.4.7

func NewBundle(features []string) (*Bundle, error)

Returns a bundle by walking templates/<features>

func (*Bundle) Add added in v1.4.7

func (b *Bundle) Add(path string, template *template.Template)

Add adds the path and corresponding template into the templateNode tree This code due to ChatGPT

func (*Bundle) Count added in v1.6.0

func (b *Bundle) Count() int

Count is the public function that wraps the implementation

func (*Bundle) Render added in v1.4.7

func (b *Bundle) Render(bv any, opDir string, n *bundleNode) ([]string, error)

Render will walk a tree given in n, depth first, rendering leaves bv will accept any type which will used directly to render the templates

func (*Bundle) String added in v1.4.7

func (b *Bundle) String() string

String will provide a human readable bundle listing

type DockerConfig added in v1.9.0

type DockerConfig struct {
	Auths map[string]AuthConfig `json:"auths"`
}

func NewDockerAuths added in v1.9.0

func NewDockerAuths(fname string) (*DockerConfig, error)

func (*DockerConfig) GetMatches added in v1.9.0

func (d *DockerConfig) GetMatches(registry, tag string, repos []string) (Matches, error)

type GHoutput added in v1.7.2

type GHoutput struct {
	TestVariations map[string][]string
	Exclusions     []map[string]string
}

type GitRepo added in v1.6.0

type GitRepo struct {
	// contains filtered or unexported fields
}

GitRepo models a local git worktree with the authentication and enough metadata to allow it to be pushed it to github

func InitGit added in v1.6.0

func InitGit(url, branch, dir, ghToken string) (*GitRepo, error)

InitGit is a constructor for the GitRepo type private repos will need ghToken

func (*GitRepo) AddFile added in v1.6.0

func (r *GitRepo) AddFile(path string) (plumbing.Hash, error)

AddFile adds a file in the worktree to the index. The file is assumed to have been updated prior to calling this function.

func (*GitRepo) Branch added in v1.6.0

func (r *GitRepo) Branch() string

Branch returns the short name of the ref HEAD is pointing to - provided the ref is a branch. Returns empty string if ref is not a branch.

func (*GitRepo) Branches added in v1.6.0

func (r *GitRepo) Branches(re string) ([]string, error)

(r *GitRepo) Branches will return a list of branches matching the supplied regexp for the repo

func (*GitRepo) Commit added in v1.6.0

func (r *GitRepo) Commit(msg string) error

Commit adds all unstaged changes and commits the current worktree, confirming if asked Note that this commit will be lost if it is not pushed to a remote.

func (*GitRepo) CreateFile added in v1.6.0

func (r *GitRepo) CreateFile(path string) (*os.File, error)

CreateFile will create a file in a directory, truncating it if it already exists with the embedded git worktree. Any intermediate directories are also created.

func (*GitRepo) DeleteRemoteBranch added in v1.6.0

func (r *GitRepo) DeleteRemoteBranch(remoteBranch string) error

DeleteRemoteBranch deletes the given branch from the remote origin, this is mainly used in the test functions to delete the test branches, but can also be called from other contexts. Please note that it operates only on the origin remote.

func (*GitRepo) EnableSigning added in v1.6.0

func (r *GitRepo) EnableSigning(key *openpgp.Entity) error

(r *GitRepo) EnableSignging will enable commits to be signed for this repo

func (*GitRepo) FetchBranch added in v1.6.0

func (r *GitRepo) FetchBranch(branch string) error

(r *GitRepo) FetchBranch fetches the given ref and then checks it out to the worktree Any local changes are lost. If the branch does not exist in the `origin` remote, an error is returned

func (*GitRepo) PullBranch added in v1.6.0

func (r *GitRepo) PullBranch(branch string) error

(r *GitRepo) PullBranch will incorporate changes from origin. Only ff changes can be merged.

func (*GitRepo) Push added in v1.6.0

func (r *GitRepo) Push(remoteBranch string) error

Push will push the current worktree to origin

func (*GitRepo) RemoveAll added in v1.7.0

func (r *GitRepo) RemoveAll(path string) error

RemoveAll removes all files matching the supplied path from the worktree.

type GithubClient added in v1.7.1

type GithubClient struct {
	// contains filtered or unexported fields
}

func NewGithubClient added in v1.7.1

func NewGithubClient(ghToken string) *GithubClient

NewGithubClient returns a client that uses the v3 (REST) API to talk to Github

func (*GithubClient) ClosePR added in v1.7.1

func (gh *GithubClient) ClosePR(prOpts *PullRequest) error

(gh *GithubClient) ClosePR will close matching PRs without merging

func (*GithubClient) CreatePR added in v1.7.1

func (gh *GithubClient) CreatePR(bv any, prOpts *PullRequest) (*github.PullRequest, error)

CreatePR will create a PR using the user supplied title and the embedded PR body If a PR already exists, it will return that PR

func (*GithubClient) EnableAutoMerge added in v1.7.1

func (gh *GithubClient) EnableAutoMerge(prID string) error

EnableAutoMergePR uses the graphQL github v4 API with the PR ID (not number) to mutate graphQL PR object to enable automerge

func (*GithubClient) Open added in v1.7.1

func (gh *GithubClient) Open(prOpts *PullRequest) error

(gh *GithubClient) Open will open the PR matching prOpts in the default browser

func (*GithubClient) RenderPRTemplate added in v1.7.1

func (gh *GithubClient) RenderPRTemplate(body *string, bv any) (*bytes.Buffer, error)

RenderPRTemplate will fill in the supplied template body with values from GitRepo

func (*GithubClient) UpdatePrBranch added in v1.7.1

func (gh *GithubClient) UpdatePrBranch(prOpts *PullRequest) error

(gh *GithubClient) UpdatePR will update prOpts.PrBranch without needing a git checkout

type JiraClient added in v1.7.1

type JiraClient struct {
	// contains filtered or unexported fields
}

func NewJiraClient added in v1.7.1

func NewJiraClient(email, token string) *JiraClient

NewJiraClient returns a client for v3 REST operations

func (*JiraClient) GetIssue added in v1.7.1

func (j *JiraClient) GetIssue(id string) (*JiraIssue, error)

(j *JiraClient) GetIssue returns the issue after serialising the description Jira v3 API returns a structured version of the description, this function only understands a few types. Unknown content types are ignored.

type JiraIssue added in v1.7.1

type JiraIssue struct {
	Id    string
	Title string
	Body  string
}

type Matches added in v1.9.0

type Matches struct {
	Repos    map[string]string
	Registry string
}

func (Matches) Len added in v1.9.0

func (m Matches) Len() int

func (Matches) Match added in v1.9.0

func (m Matches) Match(repo string) string

type ParsedImageName added in v1.9.0

type ParsedImageName struct {
	Registry string
	Repo     string
	Tag      string
}

func ParseImageName added in v1.9.0

func ParseImageName(imageName string) *ParsedImageName

type Policies

type Policies struct {
	Owner        string
	DeletedFiles []string
	Groups       map[string]repoConfig
}

Policies models the config file structure. There are three levels at which a particular value can be set: group-level, repo, branch. The group level is applicable for all the repos in that group. Repeating the same repo in multiple groups is UB

func (*Policies) GetRepoPolicy added in v1.6.0

func (p *Policies) GetRepoPolicy(repo string) (RepoPolicy, error)

GetRepoPolicy will fetch the RepoPolicy for the supplied repo with all overrides (group, repo, branch levels) processed. This is the constructor for RepoPolicy.

func (Policies) String

func (p Policies) String() string

Stringer implementation for Policies

type PullRequest added in v1.7.1

type PullRequest struct {
	Jira                 *JiraIssue
	BaseBranch, PrBranch string
	Owner, Repo          string
	AutoMerge            bool
}

type PushOptions added in v1.7.1

type PushOptions struct {
	OpDir        string
	Branch       string
	RemoteBranch string
	CommitMsg    string
	Repo         *GitRepo
}

PushOptions collects the input required to update templates for a branch in git and push changes upstream

type RepoPolicy

type RepoPolicy struct {
	Owner          string
	Name           string
	Description    string
	Default        string
	PCRepo         string
	DHRepo         string
	CSRepo         string
	Binary         string
	PackageName    string
	Reviewers      []string
	ExposePorts    string
	Cgo            bool
	ConfigFile     string
	VersionPackage string
	UpgradeFromVer string
	Branch         string
	Branchvals     branchVals
	Branches       map[string]branchVals

	Timestamp  string
	Visibility string
	// contains filtered or unexported fields
}

RepoPolicy is used to render templates. It provides an abstraction between config.yaml and the templates. It is instantiated from Policies for a particular repo and branch and the constructor implements all the overriding/merging logic between the various levels of the Policies type.

func (*RepoPolicy) GetAllBranches added in v1.6.0

func (rp *RepoPolicy) GetAllBranches() []string

GetAllBranches returns all the branches that are managed for this repo

func (*RepoPolicy) GetTimeStamp

func (rp *RepoPolicy) GetTimeStamp() (time.Time, error)

GetTimeStamp returns the timestamp currently set for the given repopolicy.

func (*RepoPolicy) ProcessBranch added in v1.6.0

func (rp *RepoPolicy) ProcessBranch(pushOpts *PushOptions) error

ProcessBranch will render the templates into a git worktree for the supplied branch, commit and push the changes upstream The upstream branch name is the supplied branch name prefixed with releng/ and is returned

func (*RepoPolicy) SetBranch added in v1.6.0

func (rp *RepoPolicy) SetBranch(branch string) error

SetBranch sets the Branch and Branchvals properties so that templates can simply access them instead of looking them up in the Branches map

func (*RepoPolicy) SetTimestamp

func (rp *RepoPolicy) SetTimestamp(ts time.Time)

SetTimestamp Sets the given time as the repopolicy timestamp. If called with zero time sets the current time in UTC

func (RepoPolicy) String added in v1.6.0

func (rp RepoPolicy) String() string

Stringer implementation for RepoPolicy

type Server added in v1.9.0

type Server struct {
	Router         *chi.Mux
	ProdVariations variations
	SaveDir        string
	AllVariations  AllTestsuiteVariations
}

func CreateNewServer added in v1.9.0

func CreateNewServer(tvDir string, creds map[string]string) *Server

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL