Report this

What is the reason for this report?

Updating App Spec via doctl vs. Control Panel - ERROR PARSING

Posted on June 25, 2021

I am trying to provide the app-spec for each deployment via the doctl apps update <app-id> --spec app-production.yml command.

This way I was trying to solve following behaviour:

  • We manually set the cors settings in the app.yml and upload it in the control panel
  • We change the Environment variables via the control panels directly
  • The cors settings are lost and the app.yml seems to be “resetted”

By providing the app.yml during the CI pipeline I was trying to avoid inconsistencies or unexpected behaviour.

However, when I download the spec from the control panel (the exact same spec that is working and deployed) and try to provide it via the doctl apps update command it fails with:

Error: parsing app spec: json: unknown field "allow_headers"

The spec looks roughly like this:

databases:
- engine: PG
  name: db
  num_nodes: 1
  size: db-s-dev-database
  version: "12"
domains:
- domain: XXX
  type: PRIMARY
  zone: XXX 
name: core
region: fra
services:
- cors:
    allow_headers:
    - '*'
    allow_methods:
    - GET
    - OPTIONS
    - POST
    - PUT
    - PATCH
    - DELETE
    allow_origins:
    - exact: YXZ
  envs:
  - key: DATABASE_URL
    scope: RUN_TIME
    value: ${db.DATABASE_URL}
  - key: DB_HOST
    scope: RUN_AND_BUILD_TIME
    value: XXX
  - key: DB_PORT
    scope: RUN_AND_BUILD_TIME
    value: "25060"
  - key: DB_USER
    scope: RUN_AND_BUILD_TIME
    value: db
  - key: DB_PASSWORD
    scope: RUN_AND_BUILD_TIME
    value: XXX
  - key: DB_DATABASE
    scope: RUN_AND_BUILD_TIME
    value: db
  - key: DB_SSL
    scope: RUN_AND_BUILD_TIME
    value: "yes"
  - key: SENDING_MAIL
    scope: RUN_AND_BUILD_TIME
    value: XXX
  - key: RECEIVING_MAIL
    scope: RUN_AND_BUILD_TIME
    value: XXX
  - key: SECRET
    scope: RUN_AND_BUILD_TIME
    value: XXX
  http_port: 80
  image:
    registry_type: DOCR
    repository: core
    tag: latest
  instance_count: 1
  instance_size_slug: basic-xs
  name: core
  routes:
  - path: /
  run_command: bash -c "uvicorn api:app --host 0.0.0.0 --port 80"

The developer cloud

Scale up as you grow — whether you're running one virtual machine or ten thousand.

Start building today

From GPU-powered inference and Kubernetes to managed databases and storage, get everything you need to build, scale, and deploy intelligent applications.