Google Cloud Storage (GCS) Deployment
This page documents deployments using the next major version dpl v2, which currently is in a beta release phase. Please see our blog post for details. The current default version is dpl v1. Check dpl v1 documentation here.
Be sure to read the v2 deployment overview.
Travis CI supports uploading to Google Cloud Storage (GCS).
For a minimal configuration, add the following to your .travis.yml
:
deploy:
provider: gcs
key_file: <key_file>
bucket: <bucket>
edge: true # opt in to dpl v2
Alternatively, you can use access_key_id
and secret_access_key
:
deploy:
provider: gcs
access_key_id: <encrypted access_key_id>
secret_access_key: <encrypted secret_access_key>
bucket: <bucket>
It is recommended to use a service account key file for authentication, and add it as an encrypted file to your repository. Alternatively, you can find per-user GCS Interoperable Access Keys here.
Status #
Support for deployments to Google Cloud Store is *stable**.
Known options #
Use the following options to further configure the deployment. Either key_file
or access_key_id
and secret_access_key
are required.
key_file |
Path to a GCS service account key JSON file — type: string |
access_key_id |
GCS Interoperable Access Key ID — secret, type: string |
secret_access_key |
GCS Interoperable Access Secret — secret, type: string |
bucket |
GCS Bucket — required, type: string |
local_dir |
Local directory to upload from — type: string, default: . |
upload_dir |
GCS directory to upload to — type: string |
dot_match |
Upload hidden files starting with a dot — type: boolean |
acl |
Access control to set for uploaded objects — type: string, default: private , known values: private , public-read , public-read-write , authenticated-read , bucket-owner-read , bucket-owner-full-control , see: https://cloud.google.com/storage/docs/reference-headers#xgoogacl |
detect_encoding |
HTTP header Content-Encoding to set for files compressed with gzip and compress utilities. — type: boolean |
cache_control |
HTTP header Cache-Control to suggest that the browser cache the file. — type: string, see: https://cloud.google.com/storage/docs/xml-api/reference-headers#cachecontrol |
glob |
type: string, default: **/* |
Shared options #
cleanup |
Clean up build artifacts from the Git working directory before the deployment — type: boolean |
run |
Commands to execute after the deployment finished successfully — type: string or array of strings |
Environment variables #
All options can be given as environment variables if prefixed with GCS_
.
For example, access_key_id
can be given as GCS_ACCESS_KEY_ID=<access_key_id>
.
Securing secrets #
Secret option values should be given as either encrypted strings in your build
configuration (.travis.yml
file) or environment variables in your repository
settings.
Environment variables can be set on the settings page of your repository, or
using travis env set
:
travis env set GCS_ACCESS_KEY_ID <access_key_id>
In order to encrypt option values when adding them to your .travis.yml
file
use travis encrypt
:
travis encrypt <access_key_id>
Or use --add
to directly add it to your .travis.yml
file. Note that this command has to be run in your repository’s root directory:
travis encrypt --add deploy.access_key_id <access_key_id>
Deploying a specific folder #
You can set specific directory to be uploaded using local-dir
option like this:
deploy:
provider: gcs
# ⋮
local_dir: ./build
Specifiying an ACL #
You can set the acl of your uploaded files via the acl
option like this:
deploy:
provider: gcs
# ⋮
acl: public-read
See the full documentation on Google Cloud.
HTTP cache control #
GCS uploads can optionally set the Cache-Control
HTTP header.
Set HTTP header Cache-Control
to suggest that the browser cache the file.
deploy:
provider: gcs
# ⋮
cache_control: max-age=31536000
See the full documentation on Google Cloud.
Pull Requests #
Note that pull request builds skip the deployment step altogether.