gitlab

package
v0.0.0-...-4551d9b Latest Latest
Warning

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

Go to latest
Published: Nov 21, 2023 License: CC0-1.0 Imports: 18 Imported by: 0

Documentation

Overview

Package gitlab is an internal wrapper for the go-gitlab package

Most functions serve to expose debug logging if set and accept a project name string over an ID.

Index

Constants

View Source
const (
	TmplMR    = "merge_request_templates/default.md"
	TmplIssue = "issue_templates/default.md"
)

Defines filepath for default GitLab templates

Variables

View Source
var (
	// ErrActionRepeated is returned when a GitLab action is executed again.  For example
	// this can be returned when an MR is approved twice.
	ErrActionRepeated = errors.New("GitLab action repeated")
	// ErrGroupNotFound is returned when a GitLab group cannot be found.
	ErrGroupNotFound = errors.New("GitLab group not found")
	// ErrNotModified is returned when adding an already existing item to a Todo list
	ErrNotModified = errors.New("Not Modified")
	// ErrProjectNotFound is returned when a GitLab project cannot be found.
	ErrProjectNotFound = errors.New("GitLab project not found, verify you have access to the requested resource")
	// ErrStatusForbidden is returned when attempting to access a GitLab project with insufficient permissions
	ErrStatusForbidden = errors.New("Insufficient permissions for GitLab project")
)

Functions

func AddIssueDiscussionNote

func AddIssueDiscussionNote(project string, issueNum int, discussionID string, body string) (string, error)

AddIssueDiscussionNote adds a note to an existing issue discussion on GitLab

func AddMRDiscussionNote

func AddMRDiscussionNote(project string, mrNum int, discussionID string, body string) (string, error)

AddMRDiscussionNote adds a note to an existing MR discussion on GitLab

func BranchList

func BranchList(project string, opts *gitlab.ListBranchesOptions) ([]*gitlab.Branch, error)

BranchList get all branches from the project that somehow matches the requested options

func CIArtifacts

func CIArtifacts(pid interface{}, id int, name, path string, followBridge bool) (io.Reader, string, error)

CIArtifacts searches by name for a job and returns its artifacts archive together with the upstream filename. If path is specified and refers to a single file within the artifacts archive, that file is returned instead. If no name is provided, the last job with an artifacts file is picked.

func CICancel

func CICancel(pid interface{}, jobID int) (*gitlab.Job, error)

CICancel cancels a job for a given project by its ID.

func CICreate

func CICreate(pid interface{}, opts *gitlab.CreatePipelineOptions) (*gitlab.Pipeline, error)

CICreate creates a pipeline for given ref

func CIPlayOrRetry

func CIPlayOrRetry(pid interface{}, jobID int, status string) (*gitlab.Job, error)

CIPlayOrRetry runs a job either by playing it for the first time or by retrying it based on the currently known job state

func CITrace

func CITrace(pid interface{}, id int, name string, followBridge bool) (io.Reader, *gitlab.Job, error)

CITrace searches by name for a job and returns its trace file. The trace is static so may only be a portion of the logs if the job is till running. If no name is provided job is picked using the first available: 1. Last Running Job 2. First Pending Job 3. Last Job in Pipeline

func CITrigger

func CITrigger(pid interface{}, opts gitlab.RunPipelineTriggerOptions) (*gitlab.Pipeline, error)

CITrigger triggers a pipeline for given ref

func FileGet

func FileGet(project string, fileName string, ref string) (string, error)

func FindProject

func FindProject(project string) (*gitlab.Project, error)

FindProject looks up the Gitlab project. If the namespace is not provided in the project string it will search for projects in the users namespace

func Fork

func Fork(project string, opts *gitlab.ForkProjectOptions, useHTTP bool, wait bool) (string, error)

Fork creates a user fork of a GitLab project using the specified protocol

func GetCommit

func GetCommit(pid interface{}, ref string) (*gitlab.Commit, error)

GetCommit returns top Commit by ref (hash, branch or tag).

func GetCommitMergeRequest

func GetCommitMergeRequest(pid interface{}, sha string) ([]*gitlab.MergeRequest, error)

func GetMRApprovalState

func GetMRApprovalState(project string, mrNum int) (*gitlab.MergeRequestApprovalState, error)

func GetMRApprovalsConfiguration

func GetMRApprovalsConfiguration(project string, mrNum int) (*gitlab.MergeRequestApprovals, error)

func GetProject

func GetProject(projectID interface{}) (*gitlab.Project, error)

GetProject looks up a Gitlab project by ID.

func GroupSearch

func GroupSearch(query string) (*gitlab.Group, error)

GroupSearch searches for a namespace on GitLab

func Host

func Host() string

Host exposes the GitLab scheme://hostname used to interact with the API

func Init

func Init(_host, _user, _token string)

Init initializes a gitlab client for use throughout lab.

func InitWithCustomCA

func InitWithCustomCA(_host, _user, _token, caFile string) error

func IssueClose

func IssueClose(pid interface{}, id int) error

IssueClose closes an issue on a GitLab project

func IssueCreate

func IssueCreate(project string, opts *gitlab.CreateIssueOptions) (string, error)

IssueCreate opens a new issue on a GitLab project

func IssueCreateNote

func IssueCreateNote(project string, issueNum int, opts *gitlab.CreateIssueNoteOptions) (string, error)

IssueCreateNote creates a new note on an issue and returns the note URL

func IssueDuplicate

func IssueDuplicate(pid interface{}, id int, dupId string) error

IssueDuplicate closes an issue as duplicate of another

func IssueGet

func IssueGet(project interface{}, issueNum int) (*gitlab.Issue, error)

IssueGet retrieves the issue information from a GitLab project

func IssueList

func IssueList(project string, opts gitlab.ListProjectIssuesOptions, n int) ([]*gitlab.Issue, error)

IssueList gets a list of issues on a GitLab Project

func IssueListDiscussions

func IssueListDiscussions(project string, issueNum int) ([]*gitlab.Discussion, error)

IssueListDiscussions retrieves the discussions (aka notes & comments) for an issue

func IssueReopen

func IssueReopen(pid interface{}, id int) error

IssueReopen reopens a closed issue

func IssueSubscribe

func IssueSubscribe(pid interface{}, id int) error

IssueSubscribe subscribes to an issue on a GitLab project

func IssueUnsubscribe

func IssueUnsubscribe(pid interface{}, id int) error

IssueUnsubscribe unsubscribes from an issue on a GitLab project

func IssueUpdate

func IssueUpdate(project string, issueNum int, opts *gitlab.UpdateIssueOptions) (string, error)

IssueUpdate edits an issue on a GitLab project

func LabelCreate

func LabelCreate(project string, opts *gitlab.CreateLabelOptions) error

LabelCreate creates a new project label

func LabelDelete

func LabelDelete(project, name string) error

LabelDelete removes a project label

func LabelList

func LabelList(project string) ([]*gitlab.Label, error)

LabelList gets a list of labels on a GitLab Project

func Lint

func Lint(content string) (bool, error)

Lint validates .gitlab-ci.yml contents

func ListIssuesClosedOnMerge

func ListIssuesClosedOnMerge(project string, mrNum int) ([]int, error)

func ListMRsClosingIssue

func ListMRsClosingIssue(project string, issueNum int) ([]int, error)

func ListMRsRelatedToIssue

func ListMRsRelatedToIssue(project string, issueNum int) ([]int, error)

func LoadGitLabTmpl

func LoadGitLabTmpl(tmplName string) string

LoadGitLabTmpl loads gitlab templates for use in creating Issues and MRs

https://gitlab.com/help/user/project/description_templates.md#setting-a-default-template-for-issues-and-merge-requests

func MRApprove

func MRApprove(pid interface{}, id int) error

MRApprove approves an mr on a GitLab project

func MRClose

func MRClose(pid interface{}, id int) error

MRClose closes an mr on a GitLab project

func MRCreate

func MRCreate(project string, opts *gitlab.CreateMergeRequestOptions) (string, error)

MRCreate opens a merge request on GitLab

func MRCreateDiscussion

func MRCreateDiscussion(project string, mrNum int, opts *gitlab.CreateMergeRequestDiscussionOptions) (string, error)

MRCreateDiscussion creates a discussion on a merge request on GitLab

func MRCreateNote

func MRCreateNote(project string, mrNum int, opts *gitlab.CreateMergeRequestNoteOptions) (string, error)

MRCreateNote adds a note to a merge request on GitLab

func MRDelete

func MRDelete(project string, mrNum int) error

MRDelete deletes an merge request on a GitLab project

func MRGet

func MRGet(project interface{}, mrNum int) (*gitlab.MergeRequest, error)

MRGet retrieves the merge request from GitLab project

func MRList

MRList lists the MRs on a GitLab project

func MRListDiscussions

func MRListDiscussions(project string, mrNum int) ([]*gitlab.Discussion, error)

MRListDiscussions retrieves the discussions (aka notes & comments) for a merge request

func MRMerge

func MRMerge(pid interface{}, id int, opts *gitlab.AcceptMergeRequestOptions) error

MRMerge merges an mr on a GitLab project

func MRRebase

func MRRebase(pid interface{}, id int) error

MRRebase merges an mr on a GitLab project

func MRReopen

func MRReopen(pid interface{}, id int) error

MRReopen reopen an already close mr on a GitLab project

func MRSubscribe

func MRSubscribe(pid interface{}, id int) error

MRSubscribe subscribes to an mr on a GitLab project

func MRThumbDown

func MRThumbDown(pid interface{}, id int) error

MRThumbDown places a thumb up/down on a merge request

func MRThumbUp

func MRThumbUp(pid interface{}, id int) error

MRThumbUp places a thumb up/down on a merge request

func MRUnapprove

func MRUnapprove(pid interface{}, id int) error

MRUnapprove Unapproves a previously approved mr on a GitLab project

func MRUnsubscribe

func MRUnsubscribe(pid interface{}, id int) error

MRUnsubscribe unsubscribes from a previously mr on a GitLab project

func MRUpdate

func MRUpdate(project string, mrNum int, opts *gitlab.UpdateMergeRequestOptions) (string, error)

MRUpdate edits an merge request on a GitLab project

func MilestoneCreate

func MilestoneCreate(project string, opts *gitlab.CreateMilestoneOptions) error

MilestoneCreate creates a new project milestone

func MilestoneDelete

func MilestoneDelete(project, name string) error

MilestoneDelete deletes a project milestone

func MilestoneGet

func MilestoneGet(project string, name string) (*gitlab.Milestone, error)

func MilestoneList

func MilestoneList(project string, opt *gitlab.ListMilestonesOptions) ([]*gitlab.Milestone, error)

MilestoneList gets a list of milestones on a GitLab Project

func MoveIssue

func MoveIssue(project string, issueNum int, dest string) (string, error)

func ProjectCreate

func ProjectCreate(opts *gitlab.CreateProjectOptions) (*gitlab.Project, error)

ProjectCreate creates a new project on GitLab

func ProjectDelete

func ProjectDelete(pid interface{}) error

ProjectDelete creates a new project on GitLab

func ProjectList

func ProjectList(opts gitlab.ListProjectsOptions, n int) ([]*gitlab.Project, error)

ProjectList gets a list of projects on GitLab

func ProjectSnippetCreate

func ProjectSnippetCreate(pid interface{}, opts *gitlab.CreateProjectSnippetOptions) (*gitlab.Snippet, error)

ProjectSnippetCreate creates a snippet in a project

func ProjectSnippetDelete

func ProjectSnippetDelete(pid interface{}, id int) error

ProjectSnippetDelete deletes a project snippet

func ProjectSnippetList

func ProjectSnippetList(pid interface{}, opts gitlab.ListProjectSnippetsOptions, n int) ([]*gitlab.Snippet, error)

ProjectSnippetList lists snippets on a project

func ResolveMRDiscussion

func ResolveMRDiscussion(project string, mrNum int, discussionID string, noteID int) (string, error)

func SnippetCreate

func SnippetCreate(opts *gitlab.CreateSnippetOptions) (*gitlab.Snippet, error)

SnippetCreate creates a personal snippet

func SnippetDelete

func SnippetDelete(id int) error

SnippetDelete deletes a personal snippet

func SnippetList

func SnippetList(opts gitlab.ListSnippetsOptions, n int) ([]*gitlab.Snippet, error)

SnippetList lists snippets on a project

func TodoList

func TodoList(opts gitlab.ListTodosOptions, n int) ([]*gitlab.Todo, error)

func TodoMRCreate

func TodoMRCreate(project string, mrNum int) (int, error)

func TodoMarkAllDone

func TodoMarkAllDone() error

func TodoMarkDone

func TodoMarkDone(todoNum int) error

func UpdateIssueDiscussionNote

func UpdateIssueDiscussionNote(project string, issueNum int, discussionID string, noteID int, body string) (string, error)

func UpdateMRDiscussionNote

func UpdateMRDiscussionNote(project string, issueNum int, discussionID string, noteID int, body string) (string, error)

func User

func User() string

User exposes the configured GitLab user

func UserID

func UserID() (int, error)

func UserIDFromEmail

func UserIDFromEmail(email string) (int, error)

UserIDFromEmail returns the associated Users ID in GitLab. This is useful for API calls that allow you to reference a user, but only by ID.

func UserIDFromUsername

func UserIDFromUsername(username string) (int, error)

UserIDFromUsername returns the associated Users ID in GitLab. This is useful for API calls that allow you to reference a user, but only by ID.

Types

type JobSorter

type JobSorter struct{ Jobs []JobStruct }

func (JobSorter) Len

func (s JobSorter) Len() int

func (JobSorter) Less

func (s JobSorter) Less(i, j int) bool

func (JobSorter) Swap

func (s JobSorter) Swap(i, j int)

type JobStruct

type JobStruct struct {
	Job *gitlab.Job
	// A project ID can either be a string or an integer
	ProjectID interface{}
}

JobStruct maps the project ID to which a certain job belongs to. It's needed due to multi-projects pipeline, which allows jobs from different projects be triggered by the current project. CIJob() is currently the function handling the mapping.

func CIJobs

func CIJobs(pid interface{}, id int, followBridge bool) ([]JobStruct, error)

CIJobs returns a list of jobs in the pipeline with given id. This function by default doesn't follow bridge jobs. The jobs are returned sorted by their CreatedAt time

Jump to

Keyboard shortcuts

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