Vaibhav Gupta
Vaibhav Gupta

Reputation: 41

Travis CI Build to deploy on Cloud Foundry fails

I am trying to deploy a python Flask Application on Cloudfoundry but it fails. It shows the output

The app cannot be mapped to route hello.cfapps.io because the route exists in a different space.

Please find the screenshot of the error

Here is what my travis.yml looks like:

    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: [email protected]
          password:
            secure: myencrytedpassword
          api: https://api.run.pivotal.io
          organization: Hello_Flask
          space: development
          on:
            repo: vaibhavgupta0702/flask_helloWorld

Here is what my manifest.yml file looks like

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

I do not understand why the error is coming. Any help would be highly appreciated.

Upvotes: 1

Views: 2548

Answers (1)

Daniel Mikusa
Daniel Mikusa

Reputation: 15051

The app cannot be mapped to route hello.cfapps.io because the route exists in a different space.

This means exactly what it says. The domain cfapps.io is a shared domain which can be used by many people on the platform. When you see this error, it is telling you that someone else using the platform has already pushed an app which is utilizing that route.

There's a couple possibilities here:

  1. Routes are scoped to a space. If you have multiple spaces, it's possible that the route in question could be used by an app in one of your other spaces. What you can do is run cf routes --orglevel. This will list all the routes in all the spaces under your organization. If you see the route hello listed under one of your spaces, simply run cf delete-route cfapps.io --hostname hello in the space where the route exists. That will delete it. Then deploy again.

  2. Someone else is using the route. This means it would be in another org & space where you can't see it being used. In this case, there's not much you can do. You just need to pick another route or use a custom, private domain (note that custom, private domains require you to register a domain name & configure DNS as described here).

    You can pick another route in a couple ways.

    • Use a random route. This works OK for testing, but not for anything where you want a consistent address. To use, just add random-route: true to your manifest.

    • Change your app name. By default, the route assigned to your app will be <app-name>.<default-domain>. Thus you get hello.cfapps.io because hello is your app name and cfapps.io is the default domain on PWS. If you change your app name to something unique, that'll result in a unique route that no one else is using.

    • Specifically define one or more routes. You can do this in your manifest.yml file. You need to add a routes: block and then add one or more routes.

      Example:

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

Upvotes: 7

Related Questions