devspace

DevSpace - The Fastest Developer Tool for Kubernetes ⚡ Automate your deployment workflow with DevSpace and develop software directly inside Kubernetes.

APACHE-2.0 License

Downloads
5.8K
Stars
4.1K
Committers
101

Bot releases are hidden (Show)

devspace - v5.17.0-beta.1

Published by FabianKramm about 3 years ago

Conditional Sync Commands

  • New option dev.sync[*].onUpload.exec that allows you to define commands that are executed on certain file changes. DevSpace makes sure that these commands are only executed after initial sync has finished and before the container might be restarted. For example:
deployments:
- name: app-backend
  helm:
    componentChart: true
    values:
      containers:
      - image: john/devbackend
dev:
  sync:
  - imageSelector: john/devbackend
    onUpload:
      # These post-sync commands will be executed after DevSpace synced changes to the container in the given order
      exec: 
      - onChange: ["./package.json"]
        command: |-
          npm install

Persistent Paths

  • New option dev.replacePods[*].persistPaths that allows you to persist certain paths with PVCs within the replaced pod for quicker syncing. For example:
dev:
  replacePods:
  - imageSelector: my-app/dev
    persistPaths:
    - path: /app
      # Optional path on the persistent volume to mount
      # volumePath: /my-volume/app
      # Optional name of the container to persist this path
      # containerName: my-container

Changes

  • New option dev.replacePods[*].name to define a name for the replace pods configuration
  • New option dev.replacePods[*].persistenceOptions that allows you to define PVC options for the dev.replacePods[*].persistPaths feature
  • New flag --name for devspace restart to select a sync config
  • DevSpace will now download and install kubectl or helm if those commands are used in a hook and not found locally
  • dev.replacePods are now replaced in parallel
  • dev.ports are now started in parallel
  • Removed Applied additional flags from environment in devspace run commands
  • Improved error message if no kube context was found
  • Improved config validation
  • Improved logging behaviour for dev.replacePods and dev.ports
  • Updated default kaniko version to v1.6.0
devspace - v5.16.2

Published by FabianKramm about 3 years ago

Changes

  • Fixed an issue where the port-forwarder would restart too often
  • Fixed an issue where the reverse port forwarder would sometimes not restart correctly
  • New option images.build.kaniko.tolerations to define tolerations for the kaniko pod
  • Added support for config expressions that include a cat command for windows users, e.g. $(cat deployment.yaml)
  • Fixed an issue where hooks[*].when.onError hooks in config version v1beta10 would get not converted correctly (#1681)
  • Improved config validation
devspace - v5.16.1-beta.1

Published by FabianKramm about 3 years ago

Changes

  • Fixed an issue where the port-forwarder would restart too often
  • Fixed an issue where the reverse port forwarder would sometimes not restart correctly
  • New option images.build.kaniko.tolerations to define tolerations for the kaniko pod
  • Added support for config expressions that include a cat command for windows users, e.g. $(cat deployment.yaml)
  • Fixed an issue where hooks[*].when.onError hooks in config version v1beta10 would get not converted correctly (#1681)
  • Improved config validation
devspace - v5.16.1-beta.0

Published by FabianKramm about 3 years ago

Changes

  • Fixed an issue where the port-forwarder would restart too often
  • Fixed an issue where the reverse port forwarder would sometimes not restart correctly
  • New option images.build.kaniko.tolerations to define tolerations for the kaniko pod
  • Added support for config expressions that include a cat command for windows users, e.g. $(cat deployment.yaml)
  • Fixed an issue where hooks[*].when.onError hooks in config version v1beta10 would get not converted correctly (#1681)
devspace - v5.16.0

Published by FabianKramm about 3 years ago

Config Expressions

Config expressions are a powerful feature to load the devspace.yaml in a more dynamic way. A config expression works by specifying $( my bash expression ) instead of a field and the stdout of the bash expression is taken as value instead.

Load a deployment specification from file:

deployments:
  - $(cat deployment.yaml)

Change config based on devspace variables:

deployments:
# Inline if-else
- $( [ ${DEVSPACE_NAMESPACE} == "test" ] && cat deployment.yaml || echo "" )
# Multiline if-else
- |-
  $(
    if [ ${DEVSPACE_CONTEXT} == "minikube" ]; then
      cat minikube.yaml
    else
      echo ""
    fi
  )

Generate a complete section

dev: $(./my-script.sh ${DEVSPACE_NAMESPACE} ${DEVSPACE_CONTEXT} ${DEVSPACE_PROFILE})

Return JSON

images:
  test:
    image: my-image/image
    build: '$( echo {"disabled": true} )'

New config version v1beta11:

  • Removed imageName as selector, please use imageSelector: image(name):tag(name) instead
  • Removed dev.logs.images, please use dev.logs.selectors instead
  • Renamed hooks.where.container to hooks.container
  • commands.appendArgs now defaults to false
  • dependencies[*].overrideVars now defaults to false
  • Renamed hooks.when to hooks.events, which is a string array now that supports the following events:
    • before:deploy, after:deploy, before:deploy:[name], after:deploy:[name], error:deploy:[name], skip:deploy:[name]: executed while DevSpace deploys deployments. [name] can be replaced with the config name of a deployment or * to match all.
    • before:render, after:render, before:render:[name], after:render:[name], error:render:[name]: executed while DevSpace renders deployments during devspace render. [name] can be replaced with the config name of a deployment or * to match all.
    • before:purge, after:purge, before:purge:[name], after:purge:[name], error:purge:[name]: executed while DevSpace purges deployments during devspace purge. [name] can be replaced with the config name of a deployment or * to match all.
    • before:build, after:build, before:build:[name], after:build:[name], error:build:[name], skip:build:[name]: executed while DevSpace builds images. [name] can be replaced with the config name of an image or * to match all.
    • start:sync:[name], stop:sync:[name], error:sync:[name], restart:sync:[name], before:initialSync:[name], after:initialSync:[name], error:initialSync:[name]: executed while DevSpace syncs files with dev.sync. [name] can be replaced with the config name of a sync configuration or * to match all.
    • start:portForwarding:[name], restart:portForwarding:[name], error:portForwarding:[name], stop:portForwarding:[name]: executed while DevSpace port forwards with dev.ports. [name] can be replaced with the config name of a port forwarding configuration or * to match all.
    • start:reversePortForwarding:[name], restart:reversePortForwarding:[name], error:reversePortForwarding:[name], stop:reversePortForwarding:[name]: executed while DevSpace reverse port forwards with dev.ports. [name] can be replaced with the config name of a port forwarding configuration or * to match all.
    • before:createPullSecrets, after:createPullSecrets, error:createPullSecrets: executed while DevSpace creates pullSecrets
    • devCommand:before:execute, devCommand:after:execute, devCommand:error, devCommand:interrupt, devCommand:before:sync, devCommand:after:sync, devCommand:before:portForwarding, devCommand:after:portForwarding, devCommand:before:replacePods, devCommand:after:replacePods, devCommand:before:runPipeline, devCommand:after:runPipeline, devCommand:before:deployDependencies, devCommand:after:deployDependencies, devCommand:before:build, devCommand:after:build, devCommand:before:deploy, devCommand:after:deploy, devCommand:before:openTerminal, devCommand:before:streamLogs: executed at certain lifecycle events during the devspace dev command
    • deployCommand:before:execute, deployCommand:after:execute, deployCommand:error, deployCommand:interrupt executed at different checkpoints when devspace deploy is executed
    • purgeCommand:before:execute, purgeCommand:after:execute, purgeCommand:error, purgeCommand:interrupt executed at different checkpoints when devspace purge is executed
    • buildCommand:before:execute, buildCommand:after:execute, buildCommand:error, buildCommand:interrupt executed at different checkpoints when devspace build is executed

Wildcard and filter paths for patches

It is now possible to use filter paths and wildcards in profile & pod patches. For example:

images:
  backend:
    image: john/devbackend
  backend-debugger:
    image: john/debugger
deployments:
- name: backend
  helm:
    componentChart: true
    values:
      containers:
      - image: john/devbackend
      - image: john/debugger
profiles:
- name: staging
  patches:
  - op: replace
    path: ..[?(@.image=='john/devbackend')].image
    value: john/stagingbackend
  - op: remove
    path: deployments..[?(@.image=='john/debugger')]

For more informations take a look at the docs.

Other Changes

  • You can now use image(default) and tag(default) in hook commands and args:
images:
  test:
    image: test/test
hooks:
  - command: |-
      ./custom-script image(test):tag(test) # -> Transformed to ./custom-script test/test:##### 
    when:
      after:
        images: all
  • Added new option hooks[*].container.once that will execute remote container command hooks only once during the lifetime of a container
  • DevSpace will now use a replica set instead of single pod as pod replacement
  • DevSpace will now set the statefulsets pod name as hostname in the replaced pods
  • DevSpace will now also write sync logs to .devspace/logs/sync.log even if shown in terminal
  • DevSpace will now try to restart the terminal if an unexpected exit code occurred during devspace dev. Can be disabled via the flag --terminal-reconnect=false
  • New flag --reconnect for command devspace enter to restart the terminal if an unexpected exit code was encountered
  • New flag --image-selector for commands devspace enter, devspace logs & devspace attach
  • Fixed an issue where pathType was not automatically set for newer ingress versions
  • Fixed an issue where namespace and context were wrong in UI commands
  • Fixed an issue where replacing pods with the same image selector across different devspace.yaml would target the same pods (#1633)
  • Renamed plugin hook names to match config hook names
  • Improved port forwarding & reverse port forwarding logging
  • Fixed an issue where paths that include a symlink would not sync correctly
devspace - v5.16.0-beta.3

Published by FabianKramm about 3 years ago

Config Expressions

Config expressions are a powerful feature to load the devspace.yaml in a more dynamic way. A config expression works by specifying $( my bash expression ) instead of a field and the stdout of the bash expression is taken as value instead.

Load a deployment specification from file:

deployments:
  - $(cat deployment.yaml)

Change config based on devspace variables:

deployments:
# Inline if-else
- $( [ ${DEVSPACE_NAMESPACE} == "test" ] && cat deployment.yaml || echo "" )
# Multiline if-else
- |-
  $(
    if [ ${DEVSPACE_CONTEXT} == "minikube" ]; then
      cat minikube.yaml
    else
      echo ""
    fi
  )

Generate a complete section

dev: $(./my-script.sh ${DEVSPACE_NAMESPACE} ${DEVSPACE_CONTEXT} ${DEVSPACE_PROFILE})

Return JSON

images:
  test:
    image: my-image/image
    build: '$( echo {"disabled": true} )'

New config version v1beta11:

  • Removed imageName as selector, please use imageSelector: image(name):tag(name) instead
  • Removed dev.logs.images, please use dev.logs.selectors instead
  • Renamed hooks.where.container to hooks.container
  • commands.appendArgs now defaults to false
  • dependencies[*].overrideVars now defaults to false
  • Renamed hooks.when to hooks.events, which is a string array now that supports the following events:
    • before:deploy, after:deploy, before:deploy:[name], after:deploy:[name], error:deploy:[name], skip:deploy:[name]: executed while DevSpace deploys deployments. [name] can be replaced with the config name of a deployment or * to match all.
    • before:render, after:render, before:render:[name], after:render:[name], error:render:[name]: executed while DevSpace renders deployments during devspace render. [name] can be replaced with the config name of a deployment or * to match all.
    • before:purge, after:purge, before:purge:[name], after:purge:[name], error:purge:[name]: executed while DevSpace purges deployments during devspace purge. [name] can be replaced with the config name of a deployment or * to match all.
    • before:build, after:build, before:build:[name], after:build:[name], error:build:[name], skip:build:[name]: executed while DevSpace builds images. [name] can be replaced with the config name of an image or * to match all.
    • start:sync:[name], stop:sync:[name], error:sync:[name], restart:sync:[name], before:initialSync:[name], after:initialSync:[name], error:initialSync:[name]: executed while DevSpace syncs files with dev.sync. [name] can be replaced with the config name of a sync configuration or * to match all.
    • start:portForwarding:[name], restart:portForwarding:[name], error:portForwarding:[name], stop:portForwarding:[name]: executed while DevSpace port forwards with dev.ports. [name] can be replaced with the config name of a port forwarding configuration or * to match all.
    • start:reversePortForwarding:[name], restart:reversePortForwarding:[name], error:reversePortForwarding:[name], stop:reversePortForwarding:[name]: executed while DevSpace reverse port forwards with dev.ports. [name] can be replaced with the config name of a port forwarding configuration or * to match all.
    • before:createPullSecrets, after:createPullSecrets, error:createPullSecrets: executed while DevSpace creates pullSecrets
    • devCommand:before:execute, devCommand:after:execute, devCommand:error, devCommand:interrupt, devCommand:before:sync, devCommand:after:sync, devCommand:before:portForwarding, devCommand:after:portForwarding, devCommand:before:replacePods, devCommand:after:replacePods, devCommand:before:runPipeline, devCommand:after:runPipeline, devCommand:before:deployDependencies, devCommand:after:deployDependencies, devCommand:before:build, devCommand:after:build, devCommand:before:deploy, devCommand:after:deploy, devCommand:before:openTerminal, devCommand:before:streamLogs: executed at certain lifecycle events during the devspace dev command
    • deployCommand:before:execute, deployCommand:after:execute, deployCommand:error, deployCommand:interrupt executed at different checkpoints when devspace deploy is executed
    • purgeCommand:before:execute, purgeCommand:after:execute, purgeCommand:error, purgeCommand:interrupt executed at different checkpoints when devspace purge is executed
    • buildCommand:before:execute, buildCommand:after:execute, buildCommand:error, buildCommand:interrupt executed at different checkpoints when devspace build is executed

Wildcard and filter paths for patches

It is now possible to use filter paths and wildcards in profile & pod patches. For example:

images:
  backend:
    image: john/devbackend
  backend-debugger:
    image: john/debugger
deployments:
- name: backend
  helm:
    componentChart: true
    values:
      containers:
      - image: john/devbackend
      - image: john/debugger
profiles:
- name: staging
  patches:
  - op: replace
    path: ..[?(@.image=='john/devbackend')].image
    value: john/stagingbackend
  - op: remove
    path: deployments..[?(@.image=='john/debugger')]

For more informations take a look at the docs.

Other Changes

  • You can now use image(default) and tag(default) in hook commands and args:
images:
  test:
    image: test/test
hooks:
  - command: |-
      ./custom-script image(test):tag(test) # -> Transformed to ./custom-script test/test:##### 
    when:
      after:
        images: all
  • Added new option hooks[*].container.once that will execute remote container command hooks only once during the lifetime of a container
  • DevSpace will now use a replica set instead of single pod as pod replacement
  • DevSpace will now set the statefulsets pod name as hostname in the replaced pods
  • DevSpace will now also write sync logs to .devspace/logs/sync.log even if shown in terminal
  • DevSpace will now try to restart the terminal if an unexpected exit code occurred during devspace dev. Can be disabled via the flag --terminal-reconnect=false
  • New flag --reconnect for command devspace enter to restart the terminal if an unexpected exit code was encountered
  • New flag --image-selector for commands devspace enter, devspace logs & devspace attach
  • Fixed an issue where pathType was not automatically set for newer ingress versions
  • Fixed an issue where namespace and context were wrong in UI commands
  • Fixed an issue where replacing pods with the same image selector across different devspace.yaml would target the same pods (#1633)
  • Renamed plugin hook names to match config hook names
  • Improved port forwarding & reverse port forwarding logging
  • Fixed an issue where paths that include a symlink would not sync correctly
devspace - v5.16.0-beta.2

Published by FabianKramm about 3 years ago

Config Expressions

Config expressions are a powerful feature to load the devspace.yaml in a more dynamic way. A config expression works by specifying $( my bash expression ) instead of a field and the stdout of the bash expression is taken as value instead.

Load a deployment specification from file:

deployments:
  - $(cat deployment.yaml)

Change config based on devspace variables:

deployments:
# Inline if-else
- $( [ ${DEVSPACE_NAMESPACE} == "test" ] && cat deployment.yaml || echo "" )
# Multiline if-else
- |-
  $(
    if [ ${DEVSPACE_CONTEXT} == "minikube" ]; then
      cat minikube.yaml
    else
      echo ""
    fi
  )

Generate a complete section

dev: $(./my-script.sh ${DEVSPACE_NAMESPACE} ${DEVSPACE_CONTEXT} ${DEVSPACE_PROFILE})

Return JSON

images:
  test:
    image: my-image/image
    build: '$( echo {"disabled": true} )'

New config version v1beta11:

  • Removed imageName as selector, please use imageSelector: image(name):tag(name) instead
  • Removed dev.logs.images, please use dev.logs.selectors instead
  • Renamed hooks.where.container to hooks.container
  • commands.appendArgs now defaults to false
  • dependencies[*].overrideVars now defaults to false
  • Renamed hooks.when to hooks.events, which is a string array now that supports the following events:
    • before:deploy, after:deploy, before:deploy:[name], after:deploy:[name], error:deploy:[name], skip:deploy:[name]: executed while DevSpace deploys deployments. [name] can be replaced with the config name of a deployment or * to match all.
    • before:render, after:render, before:render:[name], after:render:[name], error:render:[name]: executed while DevSpace renders deployments during devspace render. [name] can be replaced with the config name of a deployment or * to match all.
    • before:purge, after:purge, before:purge:[name], after:purge:[name], error:purge:[name]: executed while DevSpace purges deployments during devspace purge. [name] can be replaced with the config name of a deployment or * to match all.
    • before:build, after:build, before:build:[name], after:build:[name], error:build:[name], skip:build:[name]: executed while DevSpace builds images. [name] can be replaced with the config name of an image or * to match all.
    • start:sync:[name], stop:sync:[name], error:sync:[name], restart:sync:[name], before:initialSync:[name], after:initialSync:[name], error:initialSync:[name]: executed while DevSpace syncs files with dev.sync. [name] can be replaced with the config name of a sync configuration or * to match all.
    • start:portForwarding:[name], restart:portForwarding:[name], error:portForwarding:[name], stop:portForwarding:[name]: executed while DevSpace port forwards with dev.ports. [name] can be replaced with the config name of a port forwarding configuration or * to match all.
    • start:reversePortForwarding:[name], restart:reversePortForwarding:[name], error:reversePortForwarding:[name], stop:reversePortForwarding:[name]: executed while DevSpace reverse port forwards with dev.ports. [name] can be replaced with the config name of a port forwarding configuration or * to match all.
    • before:createPullSecrets, after:createPullSecrets, error:createPullSecrets: executed while DevSpace creates pullSecrets
    • devCommand:before:execute, devCommand:after:execute, devCommand:error, devCommand:interrupt, devCommand:before:sync, devCommand:after:sync, devCommand:before:portForwarding, devCommand:after:portForwarding, devCommand:before:replacePods, devCommand:after:replacePods, devCommand:before:runPipeline, devCommand:after:runPipeline, devCommand:before:deployDependencies, devCommand:after:deployDependencies, devCommand:before:build, devCommand:after:build, devCommand:before:deploy, devCommand:after:deploy, devCommand:before:openTerminal, devCommand:before:streamLogs: executed at certain lifecycle events during the devspace dev command
    • deployCommand:before:execute, deployCommand:after:execute, deployCommand:error, deployCommand:interrupt executed at different checkpoints when devspace deploy is executed
    • purgeCommand:before:execute, purgeCommand:after:execute, purgeCommand:error, purgeCommand:interrupt executed at different checkpoints when devspace purge is executed
    • buildCommand:before:execute, buildCommand:after:execute, buildCommand:error, buildCommand:interrupt executed at different checkpoints when devspace build is executed

Wildcard and filter paths for patches

It is now possible to use filter paths and wildcards in profile & pod patches. For example:

images:
  backend:
    image: john/devbackend
  backend-debugger:
    image: john/debugger
deployments:
- name: backend
  helm:
    componentChart: true
    values:
      containers:
      - image: john/devbackend
      - image: john/debugger
profiles:
- name: staging
  patches:
  - op: replace
    path: ..[?(@.image=='john/devbackend')].image
    value: john/stagingbackend
  - op: remove
    path: deployments..[?(@.image=='john/debugger')]

For more informations take a look at the docs.

Other Changes

  • You can now use image(default) and tag(default) in hook commands and args:
images:
  test:
    image: test/test
hooks:
  - command: |-
      ./custom-script image(test):tag(test) # -> Transformed to ./custom-script test/test:##### 
    when:
      after:
        images: all
  • DevSpace will now use a replica set instead of single pod as pod replacement
  • DevSpace will now try to restart the terminal if a non-zero exit code occurred during devspace dev. Can be disabled via the flag --terminal-restart=false
  • New flag --restart for command devspace enter to restart the terminal if a non-zero exit code was encountered
  • New flag --image-selector for commands devspace enter, devspace logs & devspace attach
  • Fixed an issue where pathType was not automatically set for newer ingress versions
  • Fixed an issue where namespace and context were wrong in UI commands
  • Fixed an issue where replacing pods with the same image selector across different devspace.yaml would target the same pods (#1633)
  • Renamed plugin hook names to match config hook names
  • Fixed an issue where paths that include a symlink would not sync correctly
devspace - v5.16.0-beta.1

Published by FabianKramm about 3 years ago

Config Expressions

Config expressions are a powerful feature to load the devspace.yaml in a more dynamic way. A config expression works by specifying $( my bash expression ) instead of a field and the stdout of the bash expression is taken as value instead.

Load a deployment specification from file:

deployments:
  - $(cat deployment.yaml)

Change config based on devspace variables:

deployments:
# Inline if-else
- $( [ ${DEVSPACE_NAMESPACE} == "test" ] && cat deployment.yaml || echo "" )
# Multiline if-else
- |-
  $(
    if [ ${DEVSPACE_CONTEXT} == "minikube" ]; then
      cat minikube.yaml
    else
      echo ""
    fi
  )

Generate a complete section

dev: $(./my-script.sh ${DEVSPACE_NAMESPACE} ${DEVSPACE_CONTEXT} ${DEVSPACE_PROFILE})

Return JSON

images:
  test:
    image: my-image/image
    build: '$( echo {"disabled": true} )'

New config version v1beta11:

  • Removed imageName as selector, please use imageSelector: image(name):tag(name) instead
  • Removed dev.logs.images, please use dev.logs.selectors instead
  • Renamed hooks.where.container to hooks.container
  • commands.appendArgs now defaults to false
  • dependencies[*].overrideVars now defaults to false
  • Renamed hooks.when to hooks.events, which is a string array now that supports the following events:
    • before:deploy, after:deploy, before:deploy:[name], after:deploy:[name], error:deploy:[name], skip:deploy:[name]: executed while DevSpace deploys deployments. [name] can be replaced with the config name of a deployment or * to match all.
    • before:render, after:render, before:render:[name], after:render:[name], error:render:[name]: executed while DevSpace renders deployments during devspace render. [name] can be replaced with the config name of a deployment or * to match all.
    • before:purge, after:purge, before:purge:[name], after:purge:[name], error:purge:[name]: executed while DevSpace purges deployments during devspace purge. [name] can be replaced with the config name of a deployment or * to match all.
    • before:build, after:build, before:build:[name], after:build:[name], error:build:[name], skip:build:[name]: executed while DevSpace builds images. [name] can be replaced with the config name of an image or * to match all.
    • start:sync:[name], stop:sync:[name], error:sync:[name], restart:sync:[name], before:initialSync:[name], after:initialSync:[name], error:initialSync:[name]: executed while DevSpace syncs files with dev.sync. [name] can be replaced with the config name of a sync configuration or * to match all.
    • start:portForwarding:[name], restart:portForwarding:[name], error:portForwarding:[name], stop:portForwarding:[name]: executed while DevSpace port forwards with dev.ports. [name] can be replaced with the config name of a port forwarding configuration or * to match all.
    • start:reversePortForwarding:[name], restart:reversePortForwarding:[name], error:reversePortForwarding:[name], stop:reversePortForwarding:[name]: executed while DevSpace reverse port forwards with dev.ports. [name] can be replaced with the config name of a port forwarding configuration or * to match all.
    • before:createPullSecrets, after:createPullSecrets, error:createPullSecrets: executed while DevSpace creates pullSecrets
    • devCommand:before:execute, devCommand:after:execute, devCommand:error, devCommand:interrupt, devCommand:before:sync, devCommand:after:sync, devCommand:before:portForwarding, devCommand:after:portForwarding, devCommand:before:replacePods, devCommand:after:replacePods, devCommand:before:runPipeline, devCommand:after:runPipeline, devCommand:before:deployDependencies, devCommand:after:deployDependencies, devCommand:before:build, devCommand:after:build, devCommand:before:deploy, devCommand:after:deploy, devCommand:before:openTerminal, devCommand:before:streamLogs: executed at certain lifecycle events during the devspace dev command
    • deployCommand:before:execute, deployCommand:after:execute, deployCommand:error, deployCommand:interrupt executed at different checkpoints when devspace deploy is executed
    • purgeCommand:before:execute, purgeCommand:after:execute, purgeCommand:error, purgeCommand:interrupt executed at different checkpoints when devspace purge is executed
    • buildCommand:before:execute, buildCommand:after:execute, buildCommand:error, buildCommand:interrupt executed at different checkpoints when devspace build is executed

Wildcard and filter paths for patches

It is now possible to use filter paths and wildcards in profile & pod patches. For example:

images:
  backend:
    image: john/devbackend
  backend-debugger:
    image: john/debugger
deployments:
- name: backend
  helm:
    componentChart: true
    values:
      containers:
      - image: john/devbackend
      - image: john/debugger
profiles:
- name: staging
  patches:
  - op: replace
    path: ..[?(@.image=='john/devbackend')].image
    value: john/stagingbackend
  - op: remove
    path: deployments..[?(@.image=='john/debugger')]

For more informations take a look at the docs.

Other Changes

  • You can now use image(default) and tag(default) in hook commands and args:
images:
  test:
    image: test/test
hooks:
  - command: |-
      ./custom-script image(test):tag(test) # -> Transformed to ./custom-script test/test:##### 
    when:
      after:
        images: all
  • DevSpace will now use a replica set instead of single pod as pod replacement
  • DevSpace will now try to restart the terminal if a non-zero exit code occurred during devspace dev. Can be disabled via the flag --terminal-restart=false
  • New flag --restart for command devspace enter to restart the terminal if a non-zero exit code was encountered
  • New flag --image-selector for commands devspace enter, devspace logs & devspace attach
  • Fixed an issue where pathType was not automatically set for newer ingress versions
  • Fixed an issue where namespace and context were wrong in UI commands
  • Fixed an issue where replacing pods with the same image selector across different devspace.yaml would target the same pods (#1633)
  • Renamed plugin hook names to match config hook names
  • Fixed an issue where paths that include a symlink would not sync correctly
devspace - v5.16.0-alpha.0

Published by FabianKramm about 3 years ago

Config Expressions

Config expressions are a powerful feature to load the devspace.yaml in a more dynamic way. A config expression works by specifying $( my bash expression ) instead of a field and the stdout of the bash expression is taken as value instead.

Load a deployment specification from file:

deployments:
  - $(cat deployment.yaml)

Change config based on devspace variables:

deployments:
# Inline if-else
- $( [ ${DEVSPACE_NAMESPACE} == "test" ] && cat deployment.yaml || echo "" )
# Multiline if-else
- |-
  $(
    if [ ${DEVSPACE_CONTEXT} == "minikube" ]; then
      cat minikube.yaml
    else
      echo ""
    fi
  )

Generate a complete section

dev: $(./my-script.sh ${DEVSPACE_NAMESPACE} ${DEVSPACE_CONTEXT} ${DEVSPACE_PROFILE})

Return JSON

images:
  test:
    image: my-image/image
    build: '$( echo {"disabled": true} )'

Other Changes

  • You can now use image(default) and tag(default) in hook commands and args:
images:
  test:
    image: test/test
hooks:
  - command: |-
      ./custom-script image(test):tag(test) # -> Transformed to ./custom-script test/test:##### 
    when:
      after:
        images: all
  • New flag --image-selector for commands devspace enter, devspace logs & devspace attach
  • Fixed an issue where pathType was not automatically set for newer ingress versions
  • Fixed an issue where namespace and context were wrong in UI commands
  • Fixed an issue where replacing pods with the same image selector across different devspace.yaml would target the same pods (#1633)
devspace - v5.15.0

Published by FabianKramm about 3 years ago

New Features

  • Flag --profile can now be used multiple times to apply several profiles, flag --profile-parent is now deprecated
  • New option profiles[*].activate to automatically activate profiles based on environment variables
  • Added a lot of new plugin hooks (see devspace docs for more information)
  • New global flag --disable-profile-activation to disable automatic activation of profiles
  • New option dependencies[*].disableProfileActivation for dependencies to disable automatic activation of profiles in dependencies
  • New dev.logs.selectors[*].imageSelector option to select images that should be logged by image name
  • New excludeFile, downloadExcludeFile, and uploadExclude options for loading exclude paths from files using .gitignore syntax (#1562)
  • DevSpace will now run remote hook commands in a remote shell if no args are specified. For example this is now possible:
hooks:
- command|
    echo 123
    echo 456
    echo 789
  where:
    container:
      imageSelector: my-image
  when:
    after:
      deployments: all
  • New hooks[*].when.before.initialSync and hooks[*].when.after.initialSync that executes a hook after or before a certain sync configuration's initial sync has started
  • New option name for dev.sync and dev.ports. This can be used as a steady identifier when using profile patches or initial sync hooks. (#1577)
  • New option noCache for variables that disables caching of variable input
  • New option dependencies[*].dev.replacePods to enable replace pods from dependencies
  • New flag --skip-dependency for devspace build, devspace dev, devspace purge, devspace deploy & devspace render
  • New option commands[*].appendArgs to prevent DevSpace from automatically appending arguments to a command (#1598)

Fixes

  • Fixed an issue where devspace sync would exit immediately after initial sync and hooks
  • Fixed an issue where updating the local init language repository could fail during devspace init
  • Fixed an issue where devspace sync --config ... would use the current directory as base path instead of the config directory
  • Fixed an issue where using relative paths for plugin installation would fail
  • Fixed an issue where the sync would skip to upload files initially that were newer on the remote side
  • Fixed a problem where DevSpace's helper would show devspace-restart-helper in log messages
  • Fixed an issue where the image selector would sometimes look wrong
  • Fixed an issue where the sync watcher would exclude paths if the initial stat of them has failed
  • Fixed an issue where DevSpace would get stuck uploading or downloading files that would change frequently (#1576)
  • Fixed an issue where http was hardcoded as target domain in DevSpace UI (#1574)
  • Fixed an issue where multiple devspace.yaml in the same folder would lead to unwanted shared caches
  • Fixed an issue where excluding files on linux operating systems would also exclude files for other sync paths (#1595)
  • Fixed an issue where log streaming would terminate unexpectedly (#1596)
  • Fixed an issue where using $@, $# or $0 etc. in commands would not work correctly (#1598)

Other

  • Updated the ktunnel reverse port forwarding code
  • Improved waiting output of DevSpace running in a pipeline
  • Removed the color red from the log streaming color palette to avoid confusion with errors (#1583)
  • Sync will now compare crc32 hashes initially for files that might not be needed to get synced
  • Updated component chart to v0.8.1
devspace - v5.15.0-beta.4

Published by FabianKramm about 3 years ago

New Features

  • New option profiles[*].activate to automatically activate profiles based on environment variables
  • Added a lot of new plugin hooks (see devspace docs for more information)
  • New global flag --disable-profile-activation to disable automatic activation of profiles
  • New option dependencies[*].disableProfileActivation for dependencies to disable automatic activation of profiles in dependencies
  • New dev.logs.selectors[*].imageSelector option to select images that should be logged by image name
  • New excludeFile, downloadExcludeFile, and uploadExclude options for loading exclude paths from files using .gitignore syntax (#1562)
  • DevSpace will now run remote hook commands in a remote shell if no args are specified. For example this is now possible:
hooks:
- command|
    echo 123
    echo 456
    echo 789
  where:
    container:
      imageSelector: my-image
  when:
    after:
      deployments: all
  • New hooks[*].when.before.initialSync and hooks[*].when.after.initialSync that executes a hook after or before a certain sync configuration's initial sync has started
  • New option name for dev.sync and dev.ports. This can be used as a steady identifier when using profile patches or initial sync hooks. (#1577)
  • New option noCache for variables that disables caching of variable input
  • New option dependencies[*].dev.replacePods to enable replace pods from dependencies
  • New flag --skip-dependency for devspace build, devspace dev, devspace purge, devspace deploy & devspace render
  • New option commands[*].appendArgs to prevent DevSpace from automatically appending arguments to a command (#1598)

Fixes

  • Fixed an issue where devspace sync would exit immediately after initial sync and hooks
  • Fixed an issue where updating the local init language repository could fail during devspace init
  • Fixed an issue where devspace sync --config ... would use the current directory as base path instead of the config directory
  • Fixed an issue where using relative paths for plugin installation would fail
  • Fixed an issue where the sync would skip to upload files initially that were newer on the remote side
  • Fixed a problem where DevSpace's helper would show devspace-restart-helper in log messages
  • Fixed an issue where the image selector would sometimes look wrong
  • Fixed an issue where the sync watcher would exclude paths if the initial stat of them has failed
  • Fixed an issue where DevSpace would get stuck uploading or downloading files that would change frequently (#1576)
  • Fixed an issue where http was hardcoded as target domain in DevSpace UI (#1574)
  • Fixed an issue where multiple devspace.yaml in the same folder would lead to unwanted shared caches
  • Fixed an issue where excluding files on linux operating systems would also exclude files for other sync paths (#1595)
  • Fixed an issue where log streaming would terminate unexpectedly (#1596)
  • Fixed an issue where using $@, $# or $0 etc. in commands would not work correctly (#1598)

Other

  • Updated the ktunnel reverse port forwarding code
  • Improved waiting output of DevSpace running in a pipeline
  • Removed the color red from the log streaming color palette to avoid confusion with errors (#1583)
  • Sync will now compare crc32 hashes initially for files that might not be needed to get synced
  • Updated component chart to v0.8.1
devspace - v5.15.0-beta.3

Published by FabianKramm about 3 years ago

New Features

  • New option profiles[*].activate to automatically activate profiles based on environment variables
  • New global flag --disable-profile-activation to disable automatic activation of profiles
  • New option dependencies[*].disableProfileActivation for dependencies to disable automatic activation of profiles in dependencies
  • New dev.logs.selectors[*].imageSelector option to select images that should be logged by image name
  • DevSpace will now run remote hook commands in a remote shell if no args are specified. For example this is now possible:
hooks:
- command|
    echo 123
    echo 456
    echo 789
  where:
    container:
      imageSelector: my-image
  when:
    after:
      deployments: all
  • New hooks[*].when.before.initialSync and hooks[*].when.after.initialSync that executes a hook after or before a certain sync configuration's initial sync has started
  • New option name for dev.sync and dev.ports. This can be used as a steady identifier when using profile patches or initial sync hooks. (#1577)
  • New option noCache for variables that disables caching of variable input
  • New option dependencies[*].dev.replacePods to enable replace pods from dependencies
  • New flag --skip-dependency for devspace build, devspace dev, devspace purge, devspace deploy & devspace render
  • New option commands[*].appendArgs to prevent DevSpace from automatically appending arguments to a command (#1598)

Fixes

  • Fixed an issue where devspace sync --config ... would use the current directory as base path instead of the config directory
  • Fixed an issue where using relative paths for plugin installation would fail
  • Fixed an issue where the sync would skip to upload files initially that were newer on the remote side
  • Fixed a problem where DevSpace's helper would show devspace-restart-helper in log messages
  • Fixed an issue where the image selector would sometimes look wrong
  • Fixed an issue where the sync watcher would exclude paths if the initial stat of them has failed
  • Fixed an issue where DevSpace would get stuck uploading or downloading files that would change frequently (#1576)
  • Fixed an issue where http was hardcoded as target domain in DevSpace UI (#1574)
  • Fixed an issue where multiple devspace.yaml in the same folder would lead to unwanted shared caches
  • Fixed an issue where excluding files on linux operating systems would also exclude files for other sync paths (#1595)
  • Fixed an issue where log streaming would terminate unexpectedly (#1596)
  • Fixed an issue where using $@, $# or $0 etc. in commands would not work correctly (#1598)

Other

  • Improved waiting output of DevSpace running in a pipeline
  • Removed the color red from the log streaming color palette to avoid confusion with errors (#1583)
  • Sync will now compare crc32 hashes initially for files that might not be needed to get synced
  • Updated component chart to v0.8.1
devspace - v5.15.0-beta.2

Published by FabianKramm about 3 years ago

New Features

  • New dev.logs.selectors[*].imageSelector option to select images that should be logged by image name
  • DevSpace will now run remote hook commands in a remote shell if no args are specified. For example this is now possible:
hooks:
- command|
    echo 123
    echo 456
    echo 789
  where:
    container:
      imageSelector: my-image
  when:
    after:
      deployments: all
  • New hooks[*].when.before.initialSync and hooks[*].when.after.initialSync that executes a hook after or before a certain sync configuration's initial sync has started
  • New option name for dev.sync and dev.ports. This can be used as a steady identifier when using profile patches or initial sync hooks. (#1577)
  • New option noCache for variables that disables caching of variable input

Fixes

  • Fixed an issue where the sync would skip to upload files initially that were newer on the remote side
  • Fixed a problem where DevSpace's helper would show devspace-restart-helper in log messages
  • Fixed an issue where the image selector would sometimes look wrong
  • Fixed an issue where the sync watcher would exclude paths if the initial stat of them has failed
  • Fixed an issue where DevSpace would get stuck uploading or downloading files that would change frequently (#1576)
  • Fixed an issue where http was hardcoded as target domain in DevSpace UI (#1574)
  • Fixed an issue where multiple devspace.yaml in the same folder would lead to unwanted shared caches

Other

  • Removed the color red from the log streaming color palette to avoid confusion with errors (#1583)
  • Sync will now compare crc32 hashes initially for files that might not be needed to get synced
  • Updated component chart to v0.8.1
devspace - v5.15.0-beta.1

Published by FabianKramm about 3 years ago

New Features

  • New dev.logs.selectors[*].imageSelector option to select images that should be logged by image name
  • DevSpace will now run remote hook commands in a remote shell if no args are specified. For example this is now possible:
hooks:
- command|
    echo 123
    echo 456
    echo 789
  where:
    container:
      imageSelector: my-image
  when:
    after:
      deployments: all
  • New hooks[*].when.before.initialSync and hooks[*].when.after.initialSync that executes a hook after or before a certain sync configuration's initial sync has started
  • New option name for dev.sync and dev.ports. This can be used as a steady identifier when using profile patches or initial sync hooks. (#1577)
  • New option noCache for variables that disables caching of variable input

Fixes

  • Fixed an issue where the sync would skip to upload files initially that were newer on the remote side
  • Fixed a problem where DevSpace's helper would show devspace-restart-helper in log messages
  • Fixed an issue where the image selector would sometimes look wrong
  • Fixed an issue where the sync watcher would exclude paths if the initial stat of them has failed
  • Fixed an issue where DevSpace would get stuck uploading or downloading files that would change frequently (#1576)
  • Fixed an issue where http was hardcoded as target domain in DevSpace UI (#1574)

Other

  • Removed the color red from the log streaming color palette to avoid confusion with errors (#1583)
  • Updated component chart to v0.8.1
devspace - v5.14.4

Published by FabianKramm over 3 years ago

Changes

  • Fixed an issue where using dev.replacePods with multiple label selectors would throw an error (#1499)
  • DevSpace will now also wait for selected containers by hooks[*].wait to become ready instead of just running (#1489)
  • Download correct arch for helm & kubectl if not present (#1494)
  • Fixed an issue where nested sync paths would sometimes not restart correctly
  • Fixed an issue where inotify watches were created for excluded folders (#1491)
  • DevSpace will now print sync helper log messages into the file log or on the console
devspace - v5.14.4-beta.3

Published by FabianKramm over 3 years ago

Changes

  • Fixed an issue where using dev.replacePods with multiple label selectors would throw an error (#1499)
  • DevSpace will now also wait for selected containers by hooks[*].wait to become ready instead of just running (#1489)
  • Download correct arch for helm & kubectl if not present (#1494)
  • Fixed an issue where nested sync paths would sometimes not restart correctly
  • Skip inotify watches for excluded folders
  • Print DevSpace helper log messages in file log or console
devspace - v5.14.4-beta.2

Published by FabianKramm over 3 years ago

Changes

  • Fixed an issue where using dev.replacePods with multiple label selectors would throw an error (#1499)
  • DevSpace will now also wait for selected containers by hooks[*].wait to become ready instead of just running (#1489)
  • Download correct arch for helm & kubectl if not present (#1494)
  • Fixed an issue where nested sync paths would sometimes not restart correctly
devspace - v5.14.4-beta.1

Published by FabianKramm over 3 years ago

Changes

  • Fixed an issue where using dev.replacePods with multiple label selectors would throw an error (#1499)
  • DevSpace will now also wait for selected containers by hooks[*].wait to become ready instead of just running (#1489)
  • Download correct arch for helm & kubectl if not present (#1494)
devspace - v5.14.4-beta.0

Published by FabianKramm over 3 years ago

Changes

  • DevSpace will now also wait for selected containers by hooks[*].wait to become ready instead of just running (#1489)
  • Download correct arch for helm & kubectl if not present (#1494)
devspace - v5.14.3

Published by FabianKramm over 3 years ago

Changes

  • Sync will now be started concurrently (up to 5 sync configurations at a time)
  • Sync log file messages will now indicate from which sync configuration the message originated
  • Sync will now override file permissions remotely on linux and darwin operating systems
  • Updated integrated moby term to newest version
  • Fixed an issue where a sync error could stop the whole devspace process
  • Fixed an issue where using multiple entries inside of dev.replacePods would fail config validation
Package Rankings
Top 4.02% on Npmjs.org
Top 4.52% on Proxy.golang.org
Badges
Extracted from project README
Join us on Slack! Join us on Slack!
Related Projects