pFad - Phone/Frame/Anonymizer/Declutterfier! Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

URL: http://github.com/drone/go-scm

//github.githubassets.com/assets/github-cf976967feea1e66.css" /> GitHub - drone/go-scm: Package scm provides a unified interface to multiple source code management systems. · GitHub
Skip to content

drone/go-scm

Repository files navigation

go-scm

Go Doc

Package scm provides a unified interface to multiple source code management systems including GitHub, GitHub Enterprise, Bitbucket, Bitbucket Server, Gitee, Gitea and Gogs.

Getting Started

Create a GitHub client:

package main

import (
  "github.com/drone/go-scm/scm"
  "github.com/drone/go-scm/scm/driver/github"
)

func main() {
client := github.NewDefault()
}

Create a GitHub Enterprise client:

import (
  "github.com/drone/go-scm/scm"
  "github.com/drone/go-scm/scm/driver/github"
)

func main() {
    client, err := github.New("https://github.company.com/api/v3")
}

Create a Bitbucket client:

import (
  "github.com/drone/go-scm/scm"
  "github.com/drone/go-scm/scm/driver/bitbucket"
)

func main() {
    client, err := bitbucket.New()
}

Create a Bitbucket Server (Stash) client:

import (
  "github.com/drone/go-scm/scm"
  "github.com/drone/go-scm/scm/driver/stash"
)

func main() {
    client, err := stash.New("https://stash.company.com")
}

Create a Gitea client:

import (
  "github.com/drone/go-scm/scm"
  "github.com/drone/go-scm/scm/driver/gitea"
)

func main() {
  client, err := gitea.New("https://gitea.company.com")
}

Create a Gitee client:

import (
  "github.com/drone/go-scm/scm"
  "github.com/drone/go-scm/scm/driver/gitee"
)

func main() {
  client, err := gitee.New("https://gitee.com/api/v5")
}

Authentication

The scm client does not directly handle authentication. Instead, when creating a new client, provide an http.Client that can handle authentication for you. For convenience, this library includes oauth1 and oauth2 implementations that can be used to authenticate requests.

package main

import (
  "github.com/drone/go-scm/scm"
  "github.com/drone/go-scm/scm/driver/github"
  "github.com/drone/go-scm/scm/transport"
  "github.com/drone/go-scm/scm/transport/oauth2"
)

func main() {
  client := github.NewDefault()

  // provide a custom http.Client with a transport
  // that injects the oauth2 token.
  client.Client = &http.Client{
    Transport: &oauth2.Transport{
      Source: oauth2.StaticTokenSource(
        &scm.Token{
          Token: "ecf4c1f9869f59758e679ab54b4",
        },
      ),
    },
  }

  // provide a custom http.Client with a transport
  // that injects the private GitLab token through
  // the PRIVATE_TOKEN header variable.
  client.Client = &http.Client{
    Transport: &transport.PrivateToken{
      Token: "ecf4c1f9869f59758e679ab54b4",
    },
  }
}

Usage

The scm client exposes dozens of endpoints for working with repositories, issues, comments, files and more. Please see the godocs to learn more.

Example code to get an issue:

issue, _, err := client.Issues.Find(ctx, "octocat/Hello-World", 1)

Example code to get a list of issues:

opts := scm.IssueListOptions{
  Page:   1,
  Size:   30,
  Open:   true,
  Closed: false,
}

issues, _, err := client.Issues.List(ctx, "octocat/Hello-World", opts)

Example code to create an issue comment:

in := &scm.CommentInput{
  Body: "Found a bug",
}

comment, _, err := client.Issues.CreateComment(ctx, "octocat/Hello-World", 1, in)

Useful links

Here are some useful links to providers API documentation:

Release procedure

Run the changelog generator.

docker run -it --rm -v "$(pwd)":/usr/local/src/your-app githubchangeloggenerator/github-changelog-generator -u drone -p go-scm -t <secret github token>

You can generate a token by logging into your GitHub account and going to Settings -> Personal access tokens.

Next we tag the PR's with the fixes or enhancements labels. If the PR does not fufil the requirements, do not add a label.

Run the changelog generator again with the future version according to semver.

docker run -it --rm -v "$(pwd)":/usr/local/src/your-app githubchangeloggenerator/github-changelog-generator -u drone -p go-scm -t <secret token> --future-release v1.15.2

Create your pull request for the release. Get it merged then tag the release.

Releases

Packages

Used by

Contributors

Languages

pFad - Phonifier reborn

Pfad - The Proxy pFad © 2024 Your Company Name. All rights reserved.





Check this box to remove all script contents from the fetched content.



Check this box to remove all images from the fetched content.


Check this box to remove all CSS styles from the fetched content.


Check this box to keep images inefficiently compressed and original size.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy