go-travis is a Go client library to interact with the Travis CI API V3.
$ go get github.com/shuheiktgw/go-travis
Interaction with the Travis CI API is done through a Client
instance.
import "github.com/shuheiktgw/go-travis"
client := travis.NewClient(travis.ApiOrgUrl, "TravisApiToken")
// List all the builds which belongs to the current user
builds, res, err := client.Builds.List(context.Background(), nil)
Currently, there are two possible options for Travis CI API URL.
https://api.travis-ci.org/
https://api.travis-ci.com/
You should know which URL your project belongs to, and hand it in to NewClient
method as an argument. We provide two constants, ApiOrgUrl
for https://api.travis-ci.org/
and ApiComUrl
for https://api.travis-ci.com/
, so please choose one of them.
Travis CI is migrating projects in https://api.travis-ci.org/
to https://api.travis-ci.com/
, and please visit their documentation page for more information on the migration.
client := travis.NewClient(travis.ApiOrgUrl, "TravisApiToken")
// Jobs.Cancel will success
_, _, err := client.Jobs.Cancel(context.Background(), 12345)
You can issue Travis API token and hand it in to NewClient
method directly. You can issue your token by visiting your Travis CI Profile page or using Travis CI command line tool.
For more information on how to issue Travis CI API token, please visit their documentation.
It is possible to interact with the API without authentication. However, most resources are not accessible.
client := travis.NewClient(travis.ApiOrgUrl, "")
// Builds.ListByRepoSlug is available without authentication
builds, resp, err := client.Builds.ListByRepoSlug(context.Background(), "shuheiktgw/go-travis", nil)
// Jobs.Cancel is unavailable without authentication
_, _, err = client.Jobs.Cancel(context.Background(), 12345)
Travis CI API V3 provides two types of resource representations, standard and minimal. The API returns the resource you request in a standard representation and the resources related to the original resource in a minimal representation.
If you want the related resources in a standard representation, you need to eager load them by specifying include
option.
For example, to eager load repository
and commits
when fetching a build, one can specify Include
in BuildOption
:
opt := BuildOption{Include: []string{"build.repository", "build.commits"}}
build, _, err := client.Builds.Find(context.Background(), 123, &opt)
Contributions are of course always welcome!
- Fork shuheiktgw/go-travis (https://github.com/shuheiktgw/go-travis/fork)
- Run
make install
to install dependencies - Create a feature branch
- Commit your changes
- Run test using
make test
- Create a Pull Request
See CONTRIBUTING.md
for details.
This library is originally forked from Ableton/go-travis and most of the credits of this library is attributed to them.