Skip to content

kununu/go-github

Repository files navigation

go-github

With the migration of our GitHub organisation to Single Sign-On (SSO), the GitHub user that was being used in our tools (like Jenkins) was not being added as a new LDAP user. With this in mind, we had the need to have a way of authenticating using GitHub Apps.

The creation of this Go library is to be able to use in any codebase that needs to authenticate on GitHub, like our fetch-bots-ips.

Usage

Get a new Access Token

To generate a new GitHub App access token that can be used to authenticate.

package main

import "github.com/kununu/go-github"

func main() {
	// Create a new GithubApp with JWT authentication
	ghApp, err := github.NewGitHubApp(&github.GitHubAppConfig{
		// GitHub APP ID to use to authenticate
		ApplicationID:  appId,
		// GitHub Installation ID for the APP
		InstallationID: instId,
		// GitHub APP generated private key path to file
		PrivateKeyFile: string,
		// GitHub APP generated private key value
		PrivateKey:     keyBytes,
	})

	token, err := ghApp.GetAccessToken()
	if err != nil {
		panic(err)
	}
}

Provided binary

We also provide a binary that outputs a GitHub token and can be in any a Linux command line by setting the GIT_ASKPASS environment variable to the binary.

The binary can be configured to be used by setting the environment variables GITHUB_APP_ID GITHUB_INST_ID and GITHUB_KEY_PATH or by passing the values using flags. Use the -h flag for more information on the available flags.

NOTE: If both GITHUB_KEY_PATH and GITHUB_KEY_VALUE are passed, only the first one is used.

GIT_ASKPASS=<path_to_binary>

About

Tool to interact with Github Apps

Resources

License

Stars

Watchers

Forks

Packages

No packages published