You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
root beccf3fe43 init 7 years ago
..
BUILD init 7 years ago
CHANGELOG.md init 7 years ago
LICENSE init 7 years ago
README.md init 7 years ago
access_requests.go init 7 years ago
award_emojis.go init 7 years ago
boards.go init 7 years ago
branches.go init 7 years ago
broadcast_messages.go init 7 years ago
build_variables.go init 7 years ago
ci_yml_templates.go init 7 years ago
commits.go init 7 years ago
custom_attributes.go init 7 years ago
deploy_keys.go init 7 years ago
deployments.go init 7 years ago
discussions.go init 7 years ago
environments.go init 7 years ago
event_parsing.go init 7 years ago
event_types.go init 7 years ago
events.go init 7 years ago
feature_flags.go init 7 years ago
gitignore_templates.go init 7 years ago
gitlab.go init 7 years ago
go.mod init 7 years ago
go.sum init 7 years ago
group_boards.go init 7 years ago
group_members.go init 7 years ago
group_milestones.go init 7 years ago
group_variables.go init 7 years ago
groups.go init 7 years ago
issue_links.go init 7 years ago
issues.go init 7 years ago
jobs.go init 7 years ago
keys.go init 7 years ago
labels.go init 7 years ago
license.go init 7 years ago
license_templates.go init 7 years ago
merge_request_approvals.go init 7 years ago
merge_requests.go init 7 years ago
milestones.go init 7 years ago
namespaces.go init 7 years ago
notes.go init 7 years ago
notifications.go init 7 years ago
pages_domains.go init 7 years ago
pipeline_schedules.go init 7 years ago
pipeline_triggers.go init 7 years ago
pipelines.go init 7 years ago
project_badges.go init 7 years ago
project_members.go init 7 years ago
project_snippets.go init 7 years ago
project_variables.go init 7 years ago
projects.go init 7 years ago
protected_branches.go init 7 years ago
repositories.go init 7 years ago
repository_files.go init 7 years ago
runners.go init 7 years ago
search.go init 7 years ago
services.go init 7 years ago
settings.go init 7 years ago
sidekiq_metrics.go init 7 years ago
snippets.go init 7 years ago
strings.go init 7 years ago
system_hooks.go init 7 years ago
tags.go init 7 years ago
time_stats.go init 7 years ago
todos.go init 7 years ago
users.go init 7 years ago
validate.go init 7 years ago
version.go init 7 years ago
wikis.go init 7 years ago

README.md

go-gitlab

A GitLab API client enabling Go programs to interact with GitLab in a simple and uniform way

Build Status GitHub license Sourcegraph GoDoc Go Report Card GitHub issues

NOTE

Release v0.6.0 (released on 25-08-2017) no longer supports the older V3 Gitlab API. If you need V3 support, please use the f-api-v3 branch. This release contains some backwards incompatible changes that were needed to fully support the V4 Gitlab API.

Coverage

This API client package covers most of the existing Gitlab API calls and is updated regularly to add new and/or missing endpoints. Currently the following services are supported:

  • Award Emojis
  • Branches
  • Broadcast Messages
  • Project-level Variables
  • Group-level Variables
  • Commits
  • Custom Attributes
  • Deployments
  • Deploy Keys
  • Environments
  • Epics
  • Epic Issues
  • Events
  • Feature flags
  • Geo Nodes
  • Gitignores templates
  • GitLab CI Config templates
  • Groups
  • Group Access Requests
  • Group Members
  • Issues
  • Issue Boards
  • Group Issue Boards
  • Jobs
  • Keys
  • Labels
  • License
  • Merge Requests
  • Merge Request Approvals
  • Project Milestones
  • Group Milestones
  • Namespaces
  • Notes (comments)
  • Discussions (threaded comments)
  • Notification settings
  • Open source license templates
  • Pages Domains
  • Pipelines
  • Pipeline Triggers
  • Pipeline Schedules
  • Projects (including setting Webhooks)
  • Project Access Requests
  • Project badges
  • Project import/export
  • Project Members
  • Project Snippets
  • Protected Branches
  • Repositories
  • Repository Files
  • Runners
  • Search
  • Services
  • Settings
  • Sidekiq metrics
  • System Hooks
  • Tags
  • Todos
  • Users
  • Validate CI configuration
  • Version
  • Wikis

Usage

import "github.com/xanzy/go-gitlab"

Construct a new GitLab client, then use the various services on the client to access different parts of the GitLab API. For example, to list all users:

git := gitlab.NewClient(nil, "yourtokengoeshere")
//git.SetBaseURL("https://git.mydomain.com/api/v3")
users, _, err := git.Users.ListUsers()

Some API methods have optional parameters that can be passed. For example, to list all projects for user "svanharmelen":

git := gitlab.NewClient(nil)
opt := &ListProjectsOptions{Search: gitlab.String("svanharmelen")}
projects, _, err := git.Projects.ListProjects(opt)

Examples

The examples directory contains a couple for clear examples, of which one is partially listed here as well:

package main

import (
	"log"

	"github.com/xanzy/go-gitlab"
)

func main() {
	git := gitlab.NewClient(nil, "yourtokengoeshere")

	// Create new project
	p := &gitlab.CreateProjectOptions{
		Name:                 gitlab.String("My Project"),
		Description:          gitlab.String("Just a test project to play with"),
		MergeRequestsEnabled: gitlab.Bool(true),
		SnippetsEnabled:      gitlab.Bool(true),
		Visibility:           gitlab.Visibility(gitlab.PublicVisibility),
	}
	project, _, err := git.Projects.CreateProject(p)
	if err != nil {
		log.Fatal(err)
	}

	// Add a new snippet
	s := &gitlab.CreateProjectSnippetOptions{
		Title:           gitlab.String("Dummy Snippet"),
		FileName:        gitlab.String("snippet.go"),
		Code:            gitlab.String("package main...."),
		Visibility:      gitlab.Visibility(gitlab.PublicVisibility),
	}
	_, _, err = git.ProjectSnippets.CreateSnippet(project.ID, s)
	if err != nil {
		log.Fatal(err)
	}
}

For complete usage of go-gitlab, see the full package docs.

ToDo

  • The biggest thing this package still needs is tests 😞

Issues

Author

Sander van Harmelen ([email protected])

License

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0