A small library with minimal dependencies for working with Webhooks, Commits, Issues, Pull Requests, Comments, Reviews, Teams and more on multiple git provider:
When testing the use of go-scm its really handy to use the fake provider which lets you populate the in memory resources inside the driver or query resources after a test has run.
client, data := fake.NewDefault()
Community
We have a kanban board of stuff to work on if you fancy contributing!
go-scm
A small library with minimal dependencies for working with Webhooks, Commits, Issues, Pull Requests, Comments, Reviews, Teams and more on multiple git provider:
Building
See the guide to prerequisites, building and running the code
Working on the code
Clone this repository and use go test…
Writing tests
There are lots of tests for each driver; using sample JSON that comes from the git provider together with the expected canonical JSON.
e.g. I added this test for ListTeams on github: https://github.com/jenkins-x/go-scm/blob/main/scm/driver/github/org_test.go#L83-116
you then add some real json from the git provider: https://github.com/jenkins-x/go-scm/blob/main/scm/driver/github/testdata/teams.json and provide the expected json: https://github.com/jenkins-x/go-scm/blob/main/scm/driver/github/testdata/teams.json.golden
Trying the client on a provider
There are a few little sample programs in scm/factory/examples which are individual binaries you can run from the command line or your IDE.
To test against a git provider of your choice try defining these environment variables:
GIT_KINDfor the kind of git provider (e.g.github,bitbucketserver,gitlabetc)GIT_SERVERfor the URL of the server to communicate withGIT_USERfor git user name if usingbitbucketclientGIT_TOKENfor the git OAuth/private token to talk to the git serverGit API Reference docs
To help hack on the different drivers here’s a list of docs which outline the git providers REST APIs
GitHub
Bitbucket Server
Bitbucket Cloud
Gitlab
Fake driver for testing
When testing the use of go-scm its really handy to use the fake provider which lets you populate the in memory resources inside the driver or query resources after a test has run.
Community
We have a kanban board of stuff to work on if you fancy contributing!
You can also find us on Slack at kubernetes.slack.com: