Travis CI Build 在 Cloud Foundry 上部署失败

Vai*_*pta 1 cloud-foundry travis-ci

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

该应用程序无法映射到路由 hello.cfapps.io,因为该路由存在于不同的空间中。

请找到错误的截图

这是我的 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
Run Code Online (Sandbox Code Playgroud)

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

---
applications:
- name: hello
  memory: 128M
  buildpacks:
    -  https://github.com/vaibhavgupta0702/flask_helloWorld.git
  command: python hello.py &
  timeout: 60
  env:
    PORT: 8080
Run Code Online (Sandbox Code Playgroud)

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

Dan*_*usa 7

该应用程序无法映射到路由 hello.cfapps.io,因为该路由存在于不同的空间中。

这正是它所说的意思。该域名cfapps.io是一个共享域名,可以被平台上的很多人使用。当您看到此错误时,它告诉您使用该平台的其他人已经推送了使用该路线的应用程序。

这里有几种可能性:

  1. 路由的范围是一个空间。如果您有多个空间,则您其他空间之一中的应用程序可能会使用相关路线。你能做的就是跑cf routes --orglevel。这将列出您组织下的所有空间中的所有路线。hello如果您看到某一空间下列出的路线,只需cf delete-route cfapps.io --hostname hello在该路线所在的空间中跑步即可。这将删除它。然后再次部署。

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

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

    • 使用随机路线。这对于测试来说是可以的,但对于任何你想要一致地址的地方来说就不行了。要使用,只需添加random-route: true到您的清单中即可。

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

    • 具体定义一条或多条路线。您可以在manifest.yml 文件中执行此操作。您需要添加一个routes:块,然后添加一条或多条路线。

      例子:

      ---
      ...
      routes:
      - route: route1.example.com
      - route: route2.example.com
      - route: route3.example.com
      
      Run Code Online (Sandbox Code Playgroud)