Documentation
¶
Index ¶
- Variables
- type ActionSpec
- type Changelog
- type GitHubClient
- type Github
- func (g *Github) Add(files []string) error
- func (g *Github) Changelog(version version.Version) (string, error)
- func (g *Github) ChangelogV3(version string) (string, error)
- func (g *Github) Checkout() error
- func (g *Github) Clean() error
- func (g *Github) Clone() (string, error)
- func (g *Github) Commit(message string) error
- func (g *Github) CreateCommit(workingDir string, commitMessage string) error
- func (g *Github) GetBranches() (sourceBranch, workingBranch, targetBranch string)
- func (g *Github) GetChangedFiles(workingDir string) ([]string, error)
- func (g *Github) GetDirectory() (directory string)
- func (g *Github) GetLatestCommitHash(workingBranch string) (*RepositoryRef, error)
- func (g *Github) GetURL() string
- func (g *Github) IsRemoteBranchUpToDate() (bool, error)
- func (g *Github) Push() (bool, error)
- func (g *Github) PushBranch(branch string) error
- func (g *Github) PushTag(tag string) error
- func (g *Github) SearchReleases(releaseType ReleaseType) (releases []string, err error)
- func (g *Github) SearchTags() (tags []string, err error)
- type GithubHandler
- type MockGitHubClient
- type PageInfo
- type PullRequest
- func (p *PullRequest) CleanAction(report reports.Action) error
- func (p *PullRequest) CreateAction(report reports.Action, resetDescription bool) error
- func (p *PullRequest) EnablePullRequestAutoMerge() error
- func (p *PullRequest) GetPullRequestLabelsInformation() ([]repositoryLabelApi, error)
- func (p *PullRequest) OpenPullRequest() error
- type PullRequestApi
- type RateLimit
- type ReleaseType
- type Repository
- type RepositoryRef
- type Spec
Constants ¶
This section is empty.
Variables ¶
var ( ErrAutomergeNotAllowOnRepository = errors.New("automerge is not allowed on repository") ErrBadMergeMethod = errors.New("wrong merge method defined, accepting one of 'squash', 'merge', 'rebase', or ''") ErrPullRequestIsInCleanStatus = errors.New("Pull request Pull request is in clean status") )
Functions ¶
This section is empty.
Types ¶
type ActionSpec ¶ added in v0.40.0
type ActionSpec struct {
// automerge allows to enable/disable the automerge feature on new pullrequest
//
// compatible:
// * action
//
// default:
// false
AutoMerge bool `yaml:",omitempty"`
// title allows to override the pull request title
//
// compatible:
// * action
//
// default:
// The default title is fetch from the first following location:
// 1. The action title
// 2. The target title if only one target
// 3. The pipeline target
//
Title string `yaml:",omitempty"`
// description allows to prepend information to the pullrequest description.
//
// compatible:
// * action
//
// default:
// empty
//
Description string `yaml:",omitempty"`
// labels specifies repository labels used for the Pull Request.
//
// compatible:
// * action
//
// default:
// empty
//
// remark:
// Labels must already exist on the repository
//
Labels []string `yaml:",omitempty"`
// draft allows to set pull request in draft
//
// compatible:
// * action
//
// default:
// false
Draft bool `yaml:",omitempty"`
// maintainercannotmodify allows to specify if maintainer can modify pullRequest
//
// compatible:
// * action
//
// default:
// false
MaintainerCannotModify bool `yaml:",omitempty"`
// mergemethod allows to specifies what merge method is used to incorporate the pull request.
//
// compatible:
// * action
//
// default:
// ""
//
// remark:
// Accept "merge", "squash", "rebase", or ""
MergeMethod string `yaml:",omitempty"`
// usetitleforautomerge allows to specifies to use the Pull Request title as commit message when using auto merge,
//
// compatible:
// * action
//
// default:
// ""
//
// remark:
// Only works for "squash" or "rebase"
UseTitleForAutoMerge bool `yaml:",omitempty"`
// parent allows to specifies if a pull request should be sent to the parent of the current fork.
//
// compatible:
// * action
//
// default:
// false
//
Parent bool `yaml:",omitempty"`
}
ActionSpec specifies the configuration of an action of type "GitHub Pull Request"
func (*ActionSpec) Validate ¶ added in v0.40.0
func (s *ActionSpec) Validate() error
Validate ensures that the provided ActionSpec is valid
type GitHubClient ¶
type GitHubClient interface {
Query(ctx context.Context, q interface{}, variables map[string]interface{}) error
Mutate(ctx context.Context, m interface{}, input githubv4.Input, variables map[string]interface{}) error
}
GitHubClient must be implemented by any GitHub query client (v4 API)
type Github ¶
type Github struct {
// Spec contains inputs coming from updatecli configuration
Spec Spec
// contains filtered or unexported fields
}
GitHub contains settings to interact with GitHub
func (*Github) ChangelogV3 ¶ added in v0.49.0
ChangelogV3 returns a changelog description based on a release name using the GitHub api v3 version
func (*Github) CreateCommit ¶ added in v0.76.0
func (*Github) GetBranches ¶ added in v0.53.0
func (*Github) GetChangedFiles ¶
func (*Github) GetDirectory ¶
GetDirectory returns the local git repository path.
func (*Github) GetLatestCommitHash ¶ added in v0.76.1
func (g *Github) GetLatestCommitHash(workingBranch string) (*RepositoryRef, error)
func (*Github) IsRemoteBranchUpToDate ¶ added in v0.45.0
IsRemoteBranchUpToDate checks if the branch reference name is published on on the default remote
func (*Github) PushBranch ¶ added in v0.44.0
PushBranch push tags
func (*Github) SearchReleases ¶
func (g *Github) SearchReleases(releaseType ReleaseType) (releases []string, err error)
SearchReleases return every releases from the github api ordered by reverse order of created time. Draft and pre-releases are filtered out.
func (*Github) SearchTags ¶
SearchTags return every tags from the github api return in reverse order of commit tags.
type GithubHandler ¶
type GithubHandler interface {
SearchReleases(releaseType ReleaseType) (releases []string, err error)
SearchTags() (tags []string, err error)
Changelog(version.Version) (string, error)
}
GithubHandler must be implemented by any GitHub module
type MockGitHubClient ¶
type MockGitHubClient struct {
// contains filtered or unexported fields
}
type PullRequest ¶
func NewAction ¶ added in v0.40.0
func NewAction(spec ActionSpec, gh *Github) (PullRequest, error)
func (*PullRequest) CleanAction ¶ added in v0.75.0
func (p *PullRequest) CleanAction(report reports.Action) error
CleanAction verifies if an existing action requires some cleanup such as closing a pullrequest with no changes.
func (*PullRequest) CreateAction ¶ added in v0.40.0
func (p *PullRequest) CreateAction(report reports.Action, resetDescription bool) error
CreateAction creates a new GitHub Pull Request or update an existing one.
func (*PullRequest) EnablePullRequestAutoMerge ¶
func (p *PullRequest) EnablePullRequestAutoMerge() error
EnablePullRequestAutoMerge updates an existing pullrequest with the flag automerge
func (*PullRequest) GetPullRequestLabelsInformation ¶
func (p *PullRequest) GetPullRequestLabelsInformation() ([]repositoryLabelApi, error)
getPullRequestLabelsInformation queries GitHub Api to retrieve every labels assigned to a pullRequest
func (*PullRequest) OpenPullRequest ¶
func (p *PullRequest) OpenPullRequest() error
OpenPullRequest creates a new GitHub Pull Request.
type PullRequestApi ¶
type PullRequestApi struct {
ChangedFiles int
BaseRefName string
Body string
HeadRefName string
ID string
State string
Title string
Url string
Number int
}
PullRequest contains multiple fields mapped to GitHub V4 api
type ReleaseType ¶ added in v0.38.0
type ReleaseType struct {
// "Draft" enable/disable GitHub draft release
Draft bool
// "PreRelease" enable/disable GitHub PreRelease
PreRelease bool
// "Release" enable/disable GitHub release
Release bool
// "Latest" if set to true will only filter the release flag as latest.
Latest bool
}
ReleaseType specifies accepted GitHub Release type
func (*ReleaseType) Init ¶ added in v0.38.0
func (r *ReleaseType) Init()
func (ReleaseType) IsZero ¶ added in v0.38.0
func (r ReleaseType) IsZero() bool
IsZero checks if all release type are set to disable
type Repository ¶ added in v0.45.0
type Repository struct {
ID string
Name string
Owner string
ParentID string
ParentName string
ParentOwner string
Status string
}
Repository contains GitHub repository data
type RepositoryRef ¶ added in v0.76.1
type Spec ¶
type Spec struct {
// "branch" defines the git branch to work on.
//
// compatible:
// * scm
//
// default:
// main
//
// remark:
// depending on which resource references the GitHub scm, the behavior will be different.
//
// If the scm is linked to a source or a condition (using scmid), the branch will be used to retrieve
// file(s) from that branch.
//
// If the scm is linked to target then Updatecli creates a new "working branch" based on the branch value.
// The working branch created by Updatecli looks like "updatecli_<pipelineID>".
// The working branch can be disabled using the "workingBranch" parameter set to false.
Branch string `yaml:",omitempty"`
// "directory" defines the local path where the git repository is cloned.
//
// compatible:
// * scm
//
// remark:
// Unless you know what you are doing, it is recommended to use the default value.
// The reason is that Updatecli may automatically clean up the directory after a pipeline execution.
//
// default:
// The default value is based on your local temporary directory like: (on Linux)
// /tmp/updatecli/github/<owner>/<repository>
Directory string `yaml:",omitempty"`
// "email" defines the email used to commit changes.
//
// compatible:
// * scm
//
// default:
// default set to your global git configuration
Email string `yaml:",omitempty"`
// "owner" defines the owner of a repository.
//
// compatible:
// * scm
Owner string `yaml:",omitempty" jsonschema:"required"`
// "repository" specifies the name of a repository for a specific owner.
//
// compatible:
// * scm
Repository string `yaml:",omitempty" jsonschema:"required"`
// "token" specifies the credential used to authenticate with GitHub API.
//
// compatible:
// * scm
Token string `yaml:",omitempty" jsonschema:"required"`
// "url" specifies the default github url in case of GitHub enterprise
//
// compatible:
// * scm
//
// default:
// github.com
//
// remark:
// A token is a sensitive information, it's recommended to not set this value directly in the configuration file
// but to use an environment variable or a SOPS file.
//
// The value can be set to `{{ requiredEnv "GITHUB_TOKEN"}}` to retrieve the token from the environment variable `GITHUB_TOKEN`
// or `{{ .github.token }}` to retrieve the token from a SOPS file.
//
// For more information, about a SOPS file, please refer to the following documentation:
// https://github.com/getsops/sops
//
URL string `yaml:",omitempty"`
// "username" specifies the username used to authenticate with GitHub API.
//
// compatible:
// * scm
//
// remark:
// the token is usually enough to authenticate with GitHub API.
Username string `yaml:",omitempty"`
// "user" specifies the user associated with new git commit messages created by Updatecli
//
// compatible:
// * scm
User string `yaml:",omitempty"`
// "gpg" specifies the GPG key and passphrased used for commit signing
//
// compatible:
// * scm
GPG sign.GPGSpec `yaml:",omitempty"`
// "force" is used during the git push phase to run `git push --force`.
//
// compatible:
// * scm
//
// default:
// false
//
// remark:
// When force is set to true, Updatecli also recreates the working branches that
// diverged from their base branch.
Force *bool `yaml:",omitempty"`
// "commitMessage" is used to generate the final commit message.
//
// compatible:
// * scm
//
// remark:
// it's worth mentioning that the commit message settings is applied to all targets linked to the same scm.
CommitMessage commit.Commit `yaml:",omitempty"`
// "submodules" defines if Updatecli should checkout submodules.
//
// compatible:
// * scm
//
// default: true
Submodules *bool `yaml:",omitempty"`
// "workingBranch" defines if Updatecli should use a temporary branch to work on.
// If set to `true`, Updatecli create a temporary branch to work on, based on the branch value.
//
// compatible:
// * scm
//
// default: true
WorkingBranch *bool `yaml:",omitempty"`
// "commitUsingApi" defines if Updatecli should use GitHub GraphQL API to create the commit.
//
// compatible:
// * scm
//
// default: false
CommitUsingAPI *bool `yaml:",omitempty"`
}
Spec represents the configuration input
func (*Spec) Merge ¶ added in v0.28.0
Merge returns nil if it successfully merges the child Spec into target receiver. Please note that child attributes always overrides receiver's
func (*Spec) MergeFromEnv ¶ added in v0.28.0
MergeFromEnv updates the target receiver with the "non zero-ed" environment variables