在Cloud Foundry上部署的Travis CI Build失败

时间:2018-10-02 12:22:11

标签: travis-ci cloudfoundry

我正在尝试在Cloudfoundry上部署python Flask应用程序,但失败。 显示输出

  

由于路由存在于其他空间中,因此无法将应用程序映射到路由hello.cfapps.io。

Please find the screenshot of the error

这是我的travis.yml的样子:

    stages:
    - test
    - deploy
    language: python
    python:
    - '3.6'
    env:
    - PORT=8080
    cache: pip
    script: python hello.py &
    jobs:
    include:
    - stage: test
        install:
        - pip install -r requirements.txt
        - pip install -r tests/requirements_test.txt
        script:
        - python hello.py &
        - python tests/test.py
    - stage: deploy
        deploy:
          provider: cloudfoundry
          username: vaibhavgupta0702@gmail.com
          password:
            secure: myencrytedpassword
          api: https://api.run.pivotal.io
          organization: Hello_Flask
          space: development
          on:
            repo: vaibhavgupta0702/flask_helloWorld

这是我的manifest.yml文件的样子

---
applications:
- name: hello
  memory: 128M
  buildpacks:
    -  https://github.com/vaibhavgupta0702/flask_helloWorld.git
  command: python hello.py &
  timeout: 60
  env:
    PORT: 8080

我不明白为什么会出现错误。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

  

由于路由存在于其他空间中,因此无法将应用程序映射到路由hello.cfapps.io。

这就是它所说的意思。域cfapps.io是一个共享域,可以供平台上的许多人使用。当您看到此错误时,表明您正在使用该平台的其他人已经推送了使用该路由的应用程序。

这里有两种可能:

  1. 路由的作用域为空格。如果您有多个空格,则有问题的路由可能会被其他空格之一中的应用程序使用。您可以做的是运行cf routes --orglevel。这将列出您组织下所有空间中的所有路由。如果在其中一个空格下看到路由hello,只需在该路由存在的空格中运行cf delete-route cfapps.io --hostname hello。那将删除它。然后再次部署。

  2. 其他人正在使用该路线。这意味着它将在另一个组织和空间中看不到它的使用。在这种情况下,您无能为力。您只需要选择其他路由或使用custom, private domain(请注意,自定义私有域要求您注册域名并按照here的说明配置DNS)。

    您可以通过几种方式选择另一条路线。

    • 使用random route。对于测试,这可以正常进行,但对于需要一致地址的任何项目,则不能使用。要使用,只需将random-route: true添加到清单中即可。

    • 更改您的应用名称。默认情况下,分配给您的应用的路由为<app-name>.<default-domain>。因此,您将获得hello.cfapps.io,因为hello是您的应用程序名称,而cfapps.io是PWS上的默认域。如果您将应用程序名称更改为唯一的名称,则将产生一条唯一的路由,其他任何人都不会使用。

    • 具体定义一个或多个路由。您可以在your manifest.yml file中进行此操作。您需要添加一个routes:块,然后添加一个或多个路由。

      示例:

      ---
      ...
      routes:
      - route: route1.example.com
      - route: route2.example.com
      - route: route3.example.com