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:
Features
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:
- start a Dev session without executing any commands, with
odo dev --no-commands
- 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 runningodo 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 https://odo.dev/docs/user-guides/advanced/experimental-mode
============================================================================
__
/ \__ 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 127.0.0.1:20001 -> 3000
↪ Dev mode
Status:
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.
Features/Enhancements:
- Implement API endpoints #6915 (feloy)
- Add podman version to odo version output #6913 (valaparthvi)
- Add --sync-git-dir flag to odo dev #6910 (feloy)
- Display outputs when executing
odo run
#6865 (feloy) - Add an
odo run
command to manually execute command duringodo dev
#6857 (feloy) - Implement
odo dev --no-commands
#6855 (rm3l) - Implement HTTP Server based on OpenAPI spec #6835 (valaparthvi)
Bugs:
- List namespace right after namespace has been created #6922 (valaparthvi)
- Do not necessarily error out if
odo dev
is stopped viaCtrl+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)
Documentation:
- Website: Bump webpack from 5.85.0 to 5.88.0 in /docs/website #6930 (dependabot[bot])
- Website: Bump browserslist from 4.21.5 to 4.21.9 in /docs/website #6909 (dependabot[bot])
- Website: Bump
@docusaurus/*
from 2.4.0 to 2.4.1 in /docs/website #6877 (dependabot[bot])
Testing/CI:
- 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 github.com/segmentio/backo-go 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.