Skip to main content

odo v3.12.0 Released

· 8 min read

odo v3.12.0 is now out!

To install odo, follow the installation guide.

Notable Changes

Check these playlists for an overview of the most notable changes in this release:


Nightly binaries

To make it easier to try out new features of odo, you no longer need to wait until a new version is released. We now publish nightly builds of odo with any changes that have been merged into the main branch at that time.


Bear in mind that such builds are provided as is and might be highly unstable.

Find out more on the installation page for instructions on how to download and install nightly builds.

Full control over the application lifecycle with odo dev --no-commands and odo run

Prior to v3.12.0, odo dev would implicitly run the build and run/debug commands automatically, and users had no control over the commands execution. To give users more control over the lifecycle of their applications, we wanted to make it possible to not only start a Dev Session without any assumptions on the commands, but also to run any command manually at any time.

The new --no-commands option allows to start a Dev Session without implicitly running the build and run/debug commands, and the new odo run command allows to run any command from the Devfile against an already-running Dev session.

To make the most out of this workflow, users can:

  1. start a Dev session without executing any commands, with odo dev --no-commands
  2. at any time, and in a separate terminal, run any commands defined in the Devfile, with odo run

To make it easier to discover all the commands that are defined in the Devfile, we will be changing the output of odo describe component, to display the list of commands from the Devfile. This will be available in the upcoming v3.13.0, but you can already give it a try by downloading a nightly build.

Syncing .git directory is now possible when running odo dev

odo dev now has a new --sync-git-dir option, allowing to synchronize the .git folder (which might be huge) into the Dev container. By default, the .git folder is not synchronized, but this option can be helpful for applications that rely on the Git history.

JSON output for odo version and Podman version if available

odo version now displays the version of Podman if available, which should allow users to determine if they can use odo against Podman or not. Note that we have a timeout of 1s for Podman to return a response, otherwise it will be considered unavailable. But this value is configurable via the PODMAN_CMD_INIT_TIMEOUT environment variable.

We are also adding JSON support for the output of odo version. Find out more on the JSON Output documentation.

[Experimental] API Server to control a running odo dev session

To make it easier to interact with Dev Sessions, we are introducing an experimental feature of starting an API Server based off of this OpenAPI specification. The rationale behind this is to simplify interactions with running Dev Sessions, while paving the way to building awesome things on top of this API server.

At the moment, we have endpoints for:

  • controlling the odo dev instance (getting details about it, or even stop it)
  • getting details about the running component and its Devfile
  • sending requests for re-pushing, exactly as if the p key was pressed in the terminal running odo dev

See the demo below for more details:

Note that this is currently an opt-in feature. To try it out, please enable the experimental mode and run odo dev with the --api-server flag, e.g.:

ODO_EXPERIMENTAL_MODE=t odo dev --api-server
Example output
$ ODO_EXPERIMENTAL_MODE=t odo dev --api-server

⚠ Experimental mode enabled. Use at your own risk.
More details on

/ \__ Developing using the "odo-dev" Devfile
\__/ \ Namespace: demo-api-server
/ \__/ odo version: v3.12.0

↪ Running on the cluster in Dev mode
I0703 17:46:42.977459 609287 starterserver.go:58] API Server started at localhost:20000/api/v1
• Waiting for Kubernetes resources ...
⚠ Pod is Pending
✓ Pod is Running
✓ Syncing files into the container [2s]
✓ Executing post-start command in container (command: 0-install-yarn) [2s]
✓ Building your application in container (command: doc-install-deps) [22s]
• Executing the application (command: doc-start) ...
✓ Waiting for the application to be ready [1s]
- Forwarding from -> 3000

↪ Dev mode
Watching for changes in the current directory /home/asoro/work/projects/odo/docs/website

Keyboard Commands:
[Ctrl+c] - Exit and delete resources from the cluster
[p] - Manually apply local changes to the application on the cluster

From there, you can see from the output of odo dev where the API Server is exposed (hint: API Server started at localhost:20000/api/v1).

Detailed Changelog

As with every release, you can find the full list of changes and bug fixes on the GitHub release page.

Full Changelog



  • List namespace right after namespace has been created #6922 (valaparthvi)
  • Do not necessarily error out if odo dev is stopped via Ctrl+C #6917 (rm3l)
  • Do not return an error in odo analyze if current directory contains an invalid Devfile #6905 (rm3l)
  • Make sure the "Syncing files into the container" spinner is displayed on Podman #6863 (rm3l)
  • Bump Alizer to fix potential panic when analyzing large projects #6926 (rm3l)



  • Fix potential issue in odo version nightly tests if user does not have permission to get the OpenShift version #6933 (rm3l)
  • Send tests results to Sheet #6873 (feloy)
  • Skip tests if all changes in docs #6870 (feloy)
  • Temporarily downgrade Podman on GitHub to fix CI failures for Podman tests #6928 (rm3l)
  • Skip IBM Cloud tests for changes that do not affect odo behavior #6924 (valaparthvi)
  • Stop test as soon as expectation is verified #6891 (feloy)
  • Set FsGroup for spring boot test #6931 (feloy)
  • Fix service binding skip on Windows #6929 (feloy)
  • Disable service binding related integration tests #6920 (feloy)
  • Improve website PR preview workflow #6907 (rm3l)
  • Replace odo delete component integration with unit tests #6904 (feloy)
  • Refactor StartDevMode to return a single object instead of multiple args #6886 (valaparthvi)
  • Unit tests/inject test clientset #6874 (feloy)
  • [Dogfooding] Create website deploy previews for PRs using odo deploy #6871 (rm3l)

Merged pull requests:

  • Bump version to 3.12.0 #6935 (rm3l)
  • Build nightly binaries of odo and make them available (via IBM Cloud Object Storage) #6875 (rm3l)
  • Mark issues and pull requests as stale #6872 (ritudes)
  • Website: Bump webpack from 5.81.0 to 5.85.0 in /docs/website #6868 (dependabot[bot])
  • Go: Bump from 1.0.1-0.20200129164019-23eae7c10bd3 to 1.0.1 #6851 (dependabot[bot])
  • Fix GitHub labels in release changelog generator script and PR template #6916 (rm3l)

Contributing to odo

If odo interests you, and you would like to contribute to it, we welcome you!

You can contribute to odo in a lot of different ways!

Take it for a spin 🚘 and report back bugs🐞 that you encountered, or features🌟 that you would like to see.

Help us with the documentation📜, or tell us how you used odo 🖍.

Review the PRs👀, or help us fix a failing test 🚩.

Work on the TODOs📝, or help us cleanup the code🚮.

Or, simply tune in📻 to our contributor calls and learn more about odo.

odo is your playground!

Read the developer reference guide on contributing to odo to know more.