Blobs (s3, gcs, azblob)¶
The blobs allows you to upload artifacts to Amazon S3, Azure Blob and Google GCS.
Customization¶
# .goreleaser.yaml
blobs:
  # You can have multiple blob configs
  -
    # Cloud provider name:
    # - s3 for AWS S3 Storage
    # - azblob for Azure Blob Storage
    # - gs for Google Cloud Storage
    #
    # Templateable.
    provider: azblob
    # Set a custom endpoint, useful if you're using a minio backend or
    # other s3-compatible backends.
    #
    # Implies s3ForcePathStyle and requires provider to be `s3`
    #
    # Templateable.
    endpoint: https://minio.foo.bar
    # Sets the bucket region.
    # Requires provider to be `s3`
    # Defaults to empty.
    #
    # Templateable.
    region: us-west-1
    # Disables SSL
    # Requires provider to be `s3`
    # Defaults to false
    disableSSL: true
    # Template for the bucket name
    #
    # Templateable.
    bucket: goreleaser-bucket
    # IDs of the artifacts you want to upload.
    ids:
    - foo
    - bar
    # Template for the path/name inside the bucket.
    # Default is `{{ .ProjectName }}/{{ .Tag }}`
    folder: "foo/bar/{{.Version}}"
    # You can add extra pre-existing files to the bucket.
    # The filename on the release will be the last part of the path (base).
    # If another file with the same name exists, the last one found will be used.
    # These globs can also include templates.
    #
    # Defaults to empty.
    extra_files:
      - glob: ./path/to/file.txt
      - glob: ./glob/**/to/**/file/**/*
      - glob: ./glob/foo/to/bar/file/foobar/override_from_previous
      - glob: ./single_file.txt
        name_template: file.txt # note that this only works if glob matches 1 file only
  -
    provider: gs
    bucket: goreleaser-bucket
    folder: "foo/bar/{{.Version}}"
  -
    provider: s3
    bucket: goreleaser-bucket
    folder: "foo/bar/{{.Version}}"
Tip
Learn more about the name template engine.
Authentication¶
GoReleaser's blob pipe authentication varies depending upon the blob provider as mentioned below:
S3 Provider¶
S3 provider support AWS default credential provider chain in the following order:
- Environment variables.
 - Shared credentials file.
 - If your application is running on an Amazon EC2 instance, IAM role for Amazon EC2.
 
Azure Blob Provider¶
It supports authentication only with environment variables:
AZURE_STORAGE_ACCOUNTAZURE_STORAGE_KEYorAZURE_STORAGE_SAS_TOKEN
GCS Provider¶
GCS provider uses Application Default Credentials in the following order:
- Environment Variable (
GOOGLE_APPLICATION_CREDENTIALS) - Default Service Account from the compute instance (Compute Engine, Kubernetes Engine, Cloud function etc).
 
ACLs¶
There is no common way to set ACLs across all bucket providers, so, go-cloud does not support it yet.
You are expected to set the ACLs on the bucket/folder/etc, depending on your provider.