Skip to content

Variable resolution cannot exceed 10 seconds #3213

@Fenkiou

Description

@Fenkiou

What happened?

We encountered an issue at work because we use 1password cli to inject secrets as variables in the vars block. Recently, we added a few more and devspace started to crash randomly with an unrelated error:

devspace dev --debug
fatal unknown flag: --apps

Same result with devspace dev --apps blah --debug.

It's actually the blah=$(get_flag apps) line in my devspace.yaml that causes the issue.

If I remove this line, devspace dev --debug works. devspace dev --apps blah --debug still does not but I'm not sure if it's expected or not.

After digging, it seems there is an hardcoded 10s timeout here that prevents the flags to be passed.

So depending how much time variable resolution will take, either it works, or it fail with unrelated error.

What did you expect to happen instead?

  • Having a dedicated error telling that variable resolution cannot exceed 10s of execution and make the doc clear about that too.
  • Allow customizing the timeout?

How can we reproduce the bug? (as minimally and precisely as possible)
Follow quickstart here (I did it for python)

And run devspace dev --apps blah --debug with my devspace.yaml below.

My devspace.yaml:

version: v2beta1
name: devspace-quickstart-python

vars:
  BLAH: "$(sleep 10 && echo 'blah')"

# This is a list of `pipelines` that DevSpace can execute (you can define your own)
pipelines:
  # This is the pipeline for the main command: `devspace dev` (or `devspace run-pipeline dev`)
  dev:
    flags:
      - name: apps
        type: string
    run: |-
      blah=$(get_flag apps)
      echo "Starting dev for apps: ${blah}"
      # run_dependencies --all       # 1. Deploy any projects this project needs (see "dependencies")
      # ensure_pull_secrets --all    # 2. Ensure pull secrets
      # create_deployments --all     # 3. Deploy Helm charts and manifests specfied as "deployments"
      # start_dev app                # 4. Start dev mode "app" (see "dev" section)
  # You can run this pipeline via `devspace deploy` (or `devspace run-pipeline deploy`)
  deploy:
    run: |-
      echo "Starting deploy"
      # run_dependencies --all                            # 1. Deploy any projects this project needs (see "dependencies")
      # ensure_pull_secrets --all                         # 2. Ensure pull secrets
      # build_images --all -t $(git describe --always)    # 3. Build, tag (git commit hash) and push all images (see "images")
      # create_deployments --all                          # 4. Deploy Helm charts and manifests specfied as "deployments"

# This is a list of `images` that DevSpace can build for this project
# We recommend to skip image building during development (devspace dev) as much as possible
images:
  app:
    image: my-image-registry.tld/username/app
    dockerfile: ./Dockerfile

# This is a list of `deployments` that DevSpace can create for this project
deployments:
  app:
    # This deployment uses `helm` but you can also define `kubectl` deployments or kustomizations
    helm:
      # We are deploying this project with the Helm chart you provided
      chart:
        name: component-chart
        repo: https://charts.devspace.sh
      # Under `values` we can define the values for this Helm chart used during `helm install/upgrade`
      # You may also use `valuesFiles` to load values from files, e.g. valuesFiles: ["values.yaml"]
      values:
        containers:
          - image: my-image-registry.tld/username/app
        service:
          ports:
            - port: 8080

# This is a list of `dev` containers that are based on the containers created by your deployments
dev:
  app:
    # Search for the container that runs this image
    imageSelector: my-image-registry.tld/username/app
    # Replace the container image with this dev-optimized image (allows to skip image building during development)
    devImage: ghcr.io/loft-sh/devspace-containers/python:3-alpine
    # Sync files between the local filesystem and the development container
    sync:
      - path: ./
        uploadExcludeFile: .dockerignore
    # Open a terminal and use the following command to start it
    terminal:
      command: ./devspace_start.sh
    # Inject a lightweight SSH server into the container (so your IDE can connect to the remote dev env)
    ssh:
      enabled: true
    # Make the following commands from my local machine available inside the dev container
    proxyCommands:
      - command: devspace
      - command: kubectl
      - command: helm
      - gitCredentials: true
    # Forward the following ports to be able access your application via localhost
    ports:
      - port: "8080"
    # Open the following URLs once they return an HTTP status code other than 502 or 503
    open:
      - url: http://localhost:8080

# Use the `commands` section to define repeatable dev workflows for this project
commands:
  migrate-db:
    command: |-
      echo 'This is a cross-platform, shared command that can be used to codify any kind of dev task.'
      echo 'Anyone using this project can invoke it via "devspace run migrate-db"'

# Define dependencies to other projects with a devspace.yaml
# dependencies:
#   api:
#     git: https://...  # Git-based dependencies
#     tag: v1.0.0
#   ui:
#     path: ./ui        # Path-based dependencies (for monorepos)

Local Environment:

  • DevSpace Version: 6.3.0
  • Operating System:mac
  • ARCH of the OS: ARM64
    Kubernetes Cluster:
  • Cloud Provider: google | aws | azure | other
  • Kubernetes Version: v1.35.0

Anything else we need to know?

Metadata

Metadata

Assignees

No one assigned

    Labels

    kind/bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions