Skip to content
GitHub no longer supports this web browser. Learn more about the browsers we support.
The Go Cloud Development Kit (Go CDK): A library and tools for open cloud development in Go.
Go Shell HCL Other
Branch: master
Clone or download
petr-tichy blob: ReadTo/Write from should return the original err (#2735)
Allows the caller to detect the error type instead of returning a
formatted string
Latest commit d780487 Jan 31, 2020
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github github: retry issue and pull request templates (#539) Oct 12, 2018
.vscode .vscode: use runchecks.sh as default test action (#2369) Jun 19, 2019
aws docstore: add wire sets to docstore (#2579) Jul 17, 2019
azure mysql/azuremysql: substitute URLOpener for Open BREAKING_CHANGE_OK (#… Jun 21, 2019
blob blob: ReadTo/Write from should return the original err (#2735) Jan 31, 2020
docstore docstore: fix batch Creates (#2726) Jan 28, 2020
gcerrors docs: update godoc uses of "provider" to "driver" or "service" in a b… Jul 16, 2019
gcp docstore: add wire sets to docstore (#2579) Jul 17, 2019
internal all: update cloudproxy dependency (#2729) Jan 25, 2020
mysql mysql: Use TrimPrefix instead of TrimLeft. (#2685) Oct 4, 2019
postgres postgres/gcppostgres: fix example (#2669) Sep 17, 2019
pubsub all: update cloudproxy dependency (#2729) Jan 25, 2020
runtimevar all: update cloudproxy dependency (#2729) Jan 25, 2020
samples all: update cloudproxy dependency (#2729) Jan 25, 2020
secrets all: update cloudproxy dependency (#2729) Jan 25, 2020
server server: use ochttp to create spans (#2723) Jan 12, 2020
wire wire: add back README.md (#968) Dec 14, 2018
.codecov.yml codecov: re-enable comments (#1437) Mar 3, 2019
.gitattributes internal/website/content/howto/pubsub: use godoc examples (#1936) Apr 26, 2019
.gitignore internal/travis: various runchecks improvements (#2482) Jul 9, 2019
.travis.yml all: enable go 1.13 build (#2661) Sep 5, 2019
AUTHORS postgres: implemented new URL design (#1371) Mar 1, 2019
CODE_OF_CONDUCT.md CODE_OF_CONDUCT: add notice (#79) Jun 8, 2018
CONTRIBUTING.md CONTRIBUTING: add acceptable licenses (#2394) Jun 24, 2019
CONTRIBUTORS postgres: implemented new URL design (#1371) Mar 1, 2019
LICENSE Initial commit Mar 21, 2018
README.md docs: add legal disclaimers (#2624) Jul 31, 2019
allmodules internal/gocdk: remove CLI code (#2663) Sep 5, 2019
doc.go docs: update godoc uses of "provider" to "driver" or "service"… (#2557) Jul 16, 2019
go.mod all: update cloudproxy dependency (#2729) Jan 25, 2020
go.sum all: update cloudproxy dependency (#2729) Jan 25, 2020
gocloud.code-workspace samples/order: add genericy Go-brand styling (#2533) Jul 12, 2019

README.md

The Go Cloud Development Kit (Go CDK)

Write once, run on any cloud ☁️

Build Status godoc Coverage Go Report Card

The Go Cloud Development Kit (Go CDK) allows Go application developers to seamlessly deploy cloud applications on any combination of cloud providers. It does this by providing stable, idiomatic interfaces for common uses like storage and databases. Think database/sql for cloud products.

Imagine writing this to read from blob storage (like Google Cloud Storage or S3):

ctx := context.Background()
bucket, err := blob.OpenBucket(ctx, "s3://my-bucket")
if err != nil {
    return err
}
defer bucket.Close()
blobReader, err := bucket.NewReader(ctx, "my-blob", nil)
if err != nil {
    return err
}

and being able to run that code on any cloud you want, avoiding all the ceremony of cloud-specific authorization, tracing, SDKs and all the other code required to make an application portable across cloud platforms.

The project works well with a code generator called Wire. It creates human-readable code that only imports the cloud SDKs for services you use. This allows the Go CDK to grow to support any number of cloud services, without increasing compile times or binary sizes, and avoiding any side effects from init() functions.

You can learn more about the project from our announcement blog post, or our talk at Next 2018:

Video: Building Go Applications for the Open Cloud (Cloud Next '18)

Installation

# First "cd" into your project directory if you have one to ensure "go get" uses
# Go modules (or not) appropriately. See "go help modules" for more info.
go get gocloud.dev

The Go CDK builds at the latest stable release of Go. Previous Go versions may compile but are not supported.

Documentation

Documentation for the project lives primarily on https://gocloud.dev/, including tutorials.

You can also browse Go package reference on godoc.org.

Project status

The APIs are still in alpha, but we think they are production-ready and are actively looking for feedback from early adopters. If you have comments or questions, you can post to the go-cloud mailing list or email us at go-cdk-feedback@google.com.

Current features

The Go CDK provides generic APIs for:

  • Unstructured binary (blob) storage
  • Publish/Subscribe (pubsub)
  • Variables that change at runtime (runtimevar)
  • Connecting to MySQL and PostgreSQL databases (mysql, postgres)
  • Server startup and diagnostics: request logging, tracing, and health checking (server)

Contributing

Thank you for your interest in contributing to the Go Cloud Development Kit! ❤️

Everyone is welcome to contribute, whether it's in the form of code, documentation, bug reports, feature requests, or anything else. We encourage you to experiment with the Go CDK and make contributions to help evolve it to meet your needs!

The GitHub repository at google/go-cloud contains some driver implementations for each portable API. We intend to include Google Cloud Platform, Amazon Web Services, and Azure implementations, as well as prominent open source services and at least one implementation suitable for use in local testing. Unfortunately, we cannot support every service directly from the project; however, we encourage contributions in separate repositories.

If you create a repository that implements the Go CDK interfaces for other services, let us know! We would be happy to link to it here and give you a heads-up before making any breaking changes.

See the contributing guide for more details.

Community

You can contact us on the go-cloud mailing list.

This project is covered by the Go Code of Conduct.

Legal disclaimer

The Go CDK is open-source and released under an Apache 2.0 License. Copyright © 2018–2019 The Go Cloud Development Kit Authors.

If you are looking for the website of GoCloud Systems, which is unrelated to the Go CDK, visit https://gocloud.systems.

You can’t perform that action at this time.