OpenShift 部署

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

Travis CI 可以在构建成功后自动部署您的 OpenShift 应用程序。

对于最小配置,您只需将以下内容添加到您的 .travis.yml

deploy:
  provider: openshift
  user: "YOU USER NAME"
  password: "YOUR PASSWORD" # can be encrypted
  domain: "YOUR OPENSHIFT DOMAIN"

目前,无法使用令牌代替密码,因为这些令牌过期得太快。我们正在与 OpenShift 团队合作寻找解决方案。

您还可以让 travis 工具为您设置所有内容

travis setup openshift

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

为了提供尽可能好的服务,Travis CI 已与 OpenShift 合作成为 合作伙伴,并且有一个官方的 Travis CI 快速入门 来帮助您入门。

要部署的应用程序 #

默认情况下,我们将尝试部署到与存储库同名的应用程序。例如,如果您从 GitHub 存储库 travis-ci/travis-chat 部署应用程序,而没有显式指定应用程序的名称,则 Travis CI 将尝试部署到名为 travis-chat 的 OpenShift 应用程序。

您可以通过 app 选项显式设置名称

deploy:
  provider: openshift
  ...
  app: my-app-123

也可以将不同的分支部署到不同的应用程序

deploy:
  provider: openshift
  ...
  app:
    master: my-app-staging
    production: my-app-production

如果这些应用程序属于不同的 OpenShift 域,则必须对域执行相同的操作

deploy:
  provider: openshift
  ...
  domain:
    master: ...
    production: ...
  app:
    master: my-app-staging
    production: my-app-production

要从中部署的分支 #

如果您有特定于分支的选项,如 上面所示,Travis CI 将自动确定要从中部署的分支。否则,它将仅从您的 master 分支部署。

您还可以使用 on 选项显式指定要从中部署的分支

deploy:
  provider: openshift
  ...
  on: production

或者,您还可以将其配置为从所有分支部署。

deploy:
  provider: openshift
  ...
  on:
    all_branches: true

从 Pull Request 触发的构建永远不会触发部署。

部署构建工件 #

在您的测试运行完毕且在部署之前,Travis CI 将清理您进行的任何其他文件和更改。

这可能不是您想要的,因为您可能会生成一些也应该部署的工件(例如资产编译)。现在有一个选项可以跳过清理

deploy:
  provider: openshift
  ...
  skip_cleanup: true

条件发布 #

只有在满足某些条件时才能部署。请参阅 使用 on: 进行条件发布

关于 .gitignore 的说明 #

由于此部署策略依赖于 git,请注意部署将遵守 .gitignore

如果您的 .gitignore 文件匹配构建创建的内容,请使用 before_deploy 更改其内容。

在部署前后运行命令 #

有时您希望在部署之前或之后运行命令。您可以为此使用 before_deployafter_deploy 阶段。只有在 Travis CI 实际进行部署时才会触发这些阶段。

before_deploy: "echo 'ready?'"
deploy:
  ..
after_deploy:
  - ./after_deploy_1.sh
  - ./after_deploy_2.sh

部署分支 #

OpenShift 可以配置为通过 rhc app-configure --deployment-branch mybranch 从与默认 master 不同的分支进行部署。

如果您已对您的应用程序执行此操作,请使用 deployment_branch 指定此所需分支

deploy:
  provider: openshift
  ...
  deployment_branch: mybranch