Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

295 Commits

Repository files navigation

go-gitlab

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

Build StatusGitHub licenseSourcegraphGoDocGo Report CardGitHub 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 100% of the existing GitLab API calls! So this includes all calls to the following services:

  • Branches
  • Commits
  • Deploy Keys
  • Environments
  • Groups
  • Issues
  • Labels
  • Merge Requests
  • Milestones
  • Namespaces
  • Notes (comments)
  • Pipelines
  • Project Snippets
  • Projects (including setting Webhooks)
  • Repositories
  • Repository Files
  • Services
  • Session
  • Settings
  • System Hooks
  • Users
  • 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"
)
funcmain() {
git:=gitlab.NewClient(nil, "yourtokengoeshere")
// Create new projectp:=&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.VisibilityLevel(gitlab.PublicVisibility),
}
project, _, err:=git.Projects.CreateProject(p)
iferr!=nil {
log.Fatal(err)
}
// Add a new snippets:=&gitlab.CreateSnippetOptions{
Title: gitlab.String("Dummy Snippet"),
FileName: gitlab.String("snippet.go"),
Code: gitlab.String("package main...."),
Visibility: gitlab.VisibilityLevel(gitlab.PublicVisibility),
}
_, _, err=git.ProjectSnippets.CreateSnippet(project.ID, s)
iferr!=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 (sander@xanzy.io)

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

About

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

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages