Google Cloud Storage (GCS) 部署

此页面记录了使用 dpl v1 的部署,dpl v1 目前是默认版本。下一个主要版本 dpl v2 将很快发布,我们建议开始使用它。请参阅 我们的博客文章 以了解详细信息。 dpl v2 文档可以在这里找到

Travis CI 支持上传到 Google Cloud Storage (GCS)。

最小的配置是

deploy:
  provider: gcs
  access_key_id: "GCS Interoperable Access Key ID"
  secret_access_key: "GCS Interoperable Access Secret"
  bucket: "GCS Bucket"

此示例几乎肯定不理想,因为您可能希望上传构建的二进制文件和文档。将 skip_cleanup 设置为 true 以防止 Travis CI 删除构建工件。

deploy:
  provider: gcs
  access_key_id: "GCS Interoperable Access Key ID"
  secret_access_key: "GCS Interoperable Access Secret"
  bucket: "GCS Bucket"
  skip_cleanup: true

您可以在 此处 找到您的 GCS 可互操作访问密钥。建议对该密钥进行加密。假设您已安装 Travis CI 命令行客户端,您可以像这样进行操作

travis encrypt --add deploy.secret_access_key

系统将提示您在命令行上输入您的 API 密钥。

您也可以让 travis 工具为您设置好一切

travis setup gcs

请记住,上述命令必须在您的项目目录中运行,以便它可以为您修改 .travis.yml

通过选项设置 GCS ACL #

您可以通过 acl 选项设置上传文件的 ACL,如下所示

deploy:
  provider: gcs
  access_key_id: "GCS Interoperable Access Key ID"
  secret_access_key: "GCS Interoperable Access Secret"
  bucket: "GCS Bucket"
  skip_cleanup: true
  acl: public-read

有效的 ACL 值为:privatepublic-readpublic-read-writeauthenticated-readbucket-owner-readbucket-owner-full-control。ACL 默认值为 private。请参阅 Google Cloud 上的完整文档

部署特定文件夹 #

您可以使用 local-dir 选项设置要上传的特定目录,如下所示

deploy:
  provider: gcs
  access_key_id: "GCS Interoperable Access Key ID"
  secret_access_key: "GCS Interoperable Access Secret"
  bucket: "GCS Bucket"
  skip_cleanup: true
  acl: public-read
  local-dir: directory-name

如果 directory-name 是在构建过程中生成的,它将在部署之前被删除(清理),除非 skip_cleanup 被设置为 true。

条件发布 #

您可以在满足特定条件时才进行部署。请参阅 使用 on: 的条件发布

设置 Content-Encoding 标头 #

GCS 上传可以选择设置 HTTP 标头 Content-Encoding。此标头允许以压缩形式发送文件,同时保留文件扩展名和相关的 MIME 类型。

要启用此功能,请添加

deploy:
  provider: gcs
  ...
  detect_encoding: true # <== default is false

如果文件使用 gzipcompress 压缩,它将以相应的标头上传。

HTTP 缓存控制 #

GCS 上传可以选择设置 Cache-Control HTTP 标头。

设置 HTTP 标头 Cache-Control 以建议浏览器缓存文件。默认值为 no-cache。有效选项为 no-cacheno-storemax-age=<seconds>s-maxage=<seconds> no-transformpublicprivate

deploy:
  provider: gcs
  ...
  cache_control: "max-age=31536000"

请参阅 Google Cloud 上的完整文档