📌⚠️ Possible retrocompatibility breaking changes announcements (SUBSCRIBE if you use Doodba) #67
Replies: 30 comments
-
New backup systemWe will soon start defaulting to use https://github.com/Tecnativa/docker-duplicity project to generate backups. https://github.com/Tecnativa/docker-server-backup will start being unmaintained. When will this happen?When #68 gets merged. Subscribe there for updates. Why will this happen?Duplicity is better docummented, supported, efficient, supports many backends (although default will be S3 as usual)... What does it break?New backup system is not compatible with old one. It uses different configuration, different storage, different everything. Last non-breaking image/scaffolding version
How to update?Configure your S3 backend to move objects prefixed with If you need to restore an old backup, you will have to roll back your project to the last commit before updating the scaffolding, and use the old restore process. |
Beta Was this translation helpful? Give feedback.
-
Removing support for
|
Beta Was this translation helpful? Give feedback.
-
No volume versions in base scaffoldingWhen will this happen?When #82 gets merged. Subscribe there for updates. Why will this happen?Motivation explained in #82 (comment). What does it break?Previous projects based on our scaffolding that get updated (by This means that Docker will create a new volume and leave the older one dangling, meaning you could get the surprise of having an empty Odoo database. More dangerous is that if you execute Last non-breaking image/scaffolding version
How to update?When you
It's recommended that the next time you migrate your Odoo instance (i.e. from |
Beta Was this translation helpful? Give feedback.
-
Changing
|
Beta Was this translation helpful? Give feedback.
-
Removing
|
Beta Was this translation helpful? Give feedback.
-
Including master openupgradelib by defaultWhen will this happen?It already happened: 9878a49 Why will this happen?Standard, pip-released, openupgradelib is included in the Docker image by default. Most times it's not enough and you need the master version from git directly. It's now included in What does it break?If you follow the standard scaffolding update system of If you rely on the pip-released version of openupgradelib, you could get unknown results. TBH, most times it should just work equally, or even better. Last non-breaking image/scaffolding version
How to update?Just make sure you review git diff before updating the scaffolding, and know what you're doing. |
Beta Was this translation helpful? Give feedback.
-
Moving default scaffolding to v11The default scaffolding image will be 11.0 When will this happen?Sadly this has happened before it was noticed, in 88a9334 Why will this happen?Just we're moving forward. What does it break?If you update any Odoo 10.0 scaffolding through the standard method of Last non-breaking image/scaffolding version
How to update?Just make sure to review the update diff before merging it into your If you were using another supported version, this will not affect you since you'll get a merge conflict and notice the change. |
Beta Was this translation helpful? Give feedback.
-
Upgrading wkhtmltox to 0.12.5When will this happen?When #147 gets merged. Subscribe there for updates. Why will this happen?This release fixes the infamous bug wkhtmltopdf/wkhtmltopdf#2711, and according to odoo/odoo#21255 (comment) it should be mostly safe to upgrade from current 0.12.4 version. That bug has hit many customers in production, so it seems safer to upgrade to this small bugfix release by default. What does it break?There's a chance that upgrading the PDF rendering engine breaks some specific reports on some corner cases. Last non-breaking image/scaffolding version
How to update?Just rebuild with If you find incompatibilities, you can uninstall the package and install the old version (you can use the script as it was before, check the aforementioned pull request) in a |
Beta Was this translation helpful? Give feedback.
-
Repository reorganizationWhen will this happen?When #157 gets fixed. Subscribe there for updates. Why will this happen?Many people is starting to build their own docker images for their own development/deployment workflows, and many discard using Doodba as a base because it enforces an opinionated workflow. This opinionated workflow is mostly due to the fact of having many ONBUILD triggers in the dockerfiles, such as these: https://github.com/Tecnativa/docker-odoo-base/blob/11bef1a4e6797d781fd051bc322cea1cef01464a/11.0.Dockerfile#L11-L61 Those do the magic of Doodba, but we can safely split them into 2: onbuild and not onbuild. We'll use this chance to enhace project branding by renaming it and the Docker Hub images. What does it break?Scaffolding will be found in a new place, images too. However, deprecated images will continue to be available in the same place (just not updated anymore), and current scaffolding-based deployments will continue to work, as their code is local and doesn't depend on public official scaffolding. Last non-breaking image/scaffolding version
How to update?Just update some URLs on your deployments and you're done. More details on #157. |
Beta Was this translation helpful? Give feedback.
-
Moving default scaffolding to Postgres 10The default scaffolding image will use Postgres 10. When will this happen?When Tecnativa/doodba-scaffolding#3 is merged. Subscribe there for updates. Why will this happen?Just we're moving forward. What does it break?If you update any scaffolding through the standard method of Last non-breaking image/scaffolding version
How to update?Just make sure to review the update diff before upating your local scaffolding. If you want to use this chance for actually upgrading to Postgres 10, then follow their update instructions. |
Beta Was this translation helpful? Give feedback.
-
Removing whitelist proxies from test environmentsThe default scaffolding will have no more whitelist proxies. When will this happen?When #165 and Tecnativa/doodba-scaffolding#5 get merged. Why will this happen?The testing environments already have the requirement to run in a server that declares an OTOH, this will reduce the amount of containers to be booted up by 5 for each testing deployment. Since that's the default recommended environment to use for running our QA suite, this can mean quicly hundreds of containers. Besides adding some CPU consumption (not much, honestly), these containers also exhaust easily the available IPv4 address pool since they require creating one extra network per project to perform the isolation correctly. What does it break?When you update the scaffolding, you won't be able to deploy test environments if your servers are not ready for the change. Last non-breaking image/scaffolding version
How to update?Follow the new instructions from #165 before your next scaffolding update. |
Beta Was this translation helpful? Give feedback.
-
Drop support for
|
Beta Was this translation helpful? Give feedback.
-
Change base image of Doodba 11.0When will this happen?When #178 gets fixed. Subscribe there for updates. Why will this happen?Current Debian 9 release ships with python 3.5.3. This version contains some bugs that are fixed in 3.5.6, which is the latest python 3.5 bugfix release. We need a newer version. What does it break?The base image is also a Debian 9 base, but it includes many build dependencies, since it is based on Well, that's not actually breaking anything. The thing is that, before this patch, it was almost always required to add the In case you were installing python packages through Another side effect is that the resulting image is significantly bigger, although that is not exactly bad nor backwards-incompatible. Last non-breaking image/scaffolding versionScaffolding: Not affected. Images:
How to update?On your scaffoldings, if you have |
Beta Was this translation helpful? Give feedback.
-
Switch to Liberation fonts by defaultWhen will this happen?When #181 gets merged. Subscribe there for updates. Why will this happen?Current fonts shipped by Debian do not render fine in Adobe PDF on Windows and Mac OS. What does it break?Your report fonts will change. Last non-breaking image/scaffolding versionScaffolding: Not affected. Images:
How to update?Usually nobody will notice about the change, but if you still need the old font, just remove this package from a build.d script, or make your font decision more explicit via css in your reports. |
Beta Was this translation helpful? Give feedback.
-
Database name for
|
Beta Was this translation helpful? Give feedback.
-
Switch to Python 3.5 runtime in Doodba 12.0When will this happen?When #199 gets merged. Subscribe there for updates. Why will this happen?Python 3.5 is the version that Odoo SA uses in their deployments, so the project leader, @pedrobaeza, considers this version is more safe to use in Doodba than the currently latest stable version of Python: 3.7. What does it break?Since all the code you write for Odoo 12.0 should be Python 3.5+ compatible, as Odoo itself, nothing should break. However, if you wrote using some Python 3.6/3.7-only features, your code might break on the next deployment. Last non-breaking image/scaffolding versionScaffolding: Not affected. Images:
How to update?Generally you have to do nothing special, or, in the case this affects your code, you'll have to either pin the base image version or fix your code to make it backwards-compatible to python 3.5. |
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
Secrets and built-in proxy protection removal from official scaffoldingWhen will this happen?When Tecnativa/doodba-scaffolding#24 is merged. Subscribe there for updates. Why will this happen?SecretsGit was never a good place to store secrets in plain text. With the aim of having a simple project setup and bootstrap, this has been the official way of doing so since the project beginning, but it's no longer needed. Today, automated deployment solutions are everywhere and docker compose files format have evolved enough to let us drop support for this. So this will improve good practices when deploying staging and production environments. The situation is still not perfect, but much better than before. Built-in Traefik proxy protectionUntil today, However, due to the secret removal decision, it became much harder to have this protection atomized by project and still easy to plug & play. Also, since #203 was merged, we have a way to specify that we don't want the database manager tools, and a simple shell/click-odoo deployment script like this can just disable the try:
views = env["ir.ui.view"].search([
('key', '=', 'website.show_website_info')
])
# TODO Remove this except handler when we say farewell to Odoo 8
except ValueError:
views = env.ref("website.show_website_info", False)
if views and True in views.mapped("active"):
print("Hiding /website/info")
views.write({"active": False})
env.cr.commit() The combination of both things would leave us in the same situation regarding security and sensation of security, while removing the need for the proxy protection, so it's being disabled by default from now on. What does it break?
Last non-breaking image/scaffolding versionScaffolding: https://github.com/Tecnativa/doodba-scaffolding/tree/ef59a34d90242fe93f47ef8946cc900309b6ce6c Images: Not affected. How to update?
|
Beta Was this translation helpful? Give feedback.
-
Remove
|
Tag | Hash |
---|---|
8.0 | docker.io/tecnativa/doodba@sha256:506094a255d3d18b75aa8ddf69a47b591168735512996eeb9533530cb84a5553 |
8.0-onbuild | docker.io/tecnativa/doodba@sha256:9f5ed2b0811654a8b2152d92d9ba82e4a75cadfc598eebd8ee8ee06ee8650d3b |
9.0 | docker.io/tecnativa/doodba@sha256:a6e8a23099e8c907c52917f33597ddbebc199c13638083e63eca877c8fa21441 |
9.0-onbuild | docker.io/tecnativa/doodba@sha256:c34e3cdce1f464cab0f7598d65dd876ca9d03f40e971c706aa5899e364e436bb |
10.0 | docker.io/tecnativa/doodba@sha256:0d0c62aad20a6b4eb98ab90d97879169e2569cfe8b622c98bcc43b739ca77a7c |
10.0-onbuild | docker.io/tecnativa/doodba@sha256:9d09fb95921da8ddbab93b9486944bcfe0b0ec39ba6eb4abcb5a720dcd6ce5f1 |
11.0 | docker.io/tecnativa/doodba@sha256:ca4b4548d4c2a538f343f7a94dc5ce129f1ad16c13b38d3d458de0addb2bf0ec |
11.0-onbuild | docker.io/tecnativa/doodba@sha256:def237fd3646707c8519c31cd403b8ca9476c7705489c449a0151023d86dc0f0 |
12.0 | docker.io/tecnativa/doodba@sha256:f6917a29f43adf63e456e96905ba6001ed52e51c30e49880228fb5f690059f95 |
12.0-onbuild | docker.io/tecnativa/doodba@sha256:b797f56ac65bd95882717929c362c2d9e99628e3d0bd610ea4fea9bf85213888 |
latest | docker.io/tecnativa/doodba@sha256:7c6c8d1ea4d4cf398d4ac8fd08242c755191734af41254e87c00eeda1aba858c |
latest-onbuild | docker.io/tecnativa/doodba@sha256:a5a5c5b9c4c0b5869feec98cff81b859645607b7839d598398d31546cf09e2ba |
How to update?
Make sure openupgradelib
is included in some form in your scaffolding as a pip dependency, if you needed it.
Beta Was this translation helpful? Give feedback.
-
Require
|
Tag | Hash |
---|---|
8.0 | Unknown |
8.0-onbuild | docker.io/tecnativa/doodba@sha256:be5b1f9c931c068259146d532b05843c69eeef808443db5159b48a1e6f1746d5 |
9.0 | Unknown |
9.0-onbuild | docker.io/tecnativa/doodba@sha256:99b723fc1559b5cd2df59b49572ea84cdef5839983ba818ff4f19625192dbb63 |
10.0 | Unknown |
10.0-onbuild | docker.io/tecnativa/doodba@sha256:744cd18e3a342d97ebb11b761c8def30fc568152defc3acf5ef02cede721f8b5 |
11.0 | Unknown |
11.0-onbuild | docker.io/tecnativa/doodba@sha256:aa3d45aad3868f3a9848a3c4ff19bd93abd0a57e9e1ef2da56a01542adeba5b4 |
12.0 | Unknown |
12.0-onbuild | docker.io/tecnativa/doodba@sha256:58811244e59a77ac99edb54a4d36182daf45509661b6e31d7f56aead1c89ecf1 |
latest | Unknown |
latest-onbuild | docker.io/tecnativa/doodba@sha256:a287e2037344acdc7800b3b7e725b7ec0c29006feea2246c22c77c9cb349e5cb |
How to update?
All your files into odoo/custom/conf.d
in your scaffoldings must start with [options]
(or the corresponding section). No option should be left without section.
Beta Was this translation helpful? Give feedback.
-
Some helper scripts deprecated in old versions, and removed in v13+When will this happen?The deprecation already happened in #237, and the removal in v13 already happened in #238. Why will this happen?All the deprecated scripts have newer and better alternatives:
What does it break?Actually nothing. In v12- they are still there but emit a deprecation warning. In v13+ they no longer exist, but that's a new version so we're not really breaking anything. Last non-breaking image/scaffolding versionScaffolding: Not affected. Images: Not really broken. Just v13, which is new and has no old unaffected version. How to update?Just get used to the new alternatives, before you update to v13 and find them missing. |
Beta Was this translation helpful? Give feedback.
-
Replacing SMTP relay container to use
|
Beta Was this translation helpful? Give feedback.
-
Switch to Python 3.7 runtime in Doodba 11.0 and 12.0When will this happen?When #290 gets merged. Subscribe there for updates. Why will this happen?Python 3.5 is flawed with https://bugs.python.org/issue24291, which affects Odoo as explained in odoo/odoo#20158. Odoo included odoo/odoo@d9b721c as a workaround, but it doesn't actually work. We still see the bug. The only way to fix the bug is to update to Python 3.6+, where it's fixed. We decide to use version 3.7 to have a bigger support window from upstream. Doodba 11.0 and 12.0 need to be updated. What does it break?The base debian distro remains the same, so most apt dependencies will keep working. Previously it was already unsupported to install python3 packages from debian repos, and your dependencies in However, some cases could happen:
So if your build fails, fix it wherever needed to make it compatible with python 3.7. Last non-breaking image/scaffolding versionScaffolding: Not affected. Images:
How to update?Generally you have to do nothing special, or, in the case this affects your code, you'll have to either pin the base image version or fix your code to make it forwards-compatible to python 3.7. |
Beta Was this translation helpful? Give feedback.
-
Deprecation of Doodba ScaffoldingWhen will this happen?When Tecnativa/doodba-scaffolding#69 is merged. Subscribe there for updates. Why will this happen?Because of many reasons. What does it break?Your workflow to update your child projects will change. Now, you will have to replace More details in the transition docs. Last non-breaking image/scaffolding versionScaffolding: Tecnativa/doodba-scaffolding@d23bf43 Images: Not affected. How to update?Read the transition docs. And head to our new project in the doodba family: https://github.com/Tecnativa/doodba-copier-template. |
Beta Was this translation helpful? Give feedback.
-
Switch to Python 3.5 runtime in Doodba 11.0 and 12.0, and 3.6 in 13.0When will this happen?When #310 gets merged. Subscribe there for updates. Why will this happen?#67 (comment) was false. Actually the problem was quite different, and python 3.5 has a workaround in Odoo code for that bug. The real fix to the problem explained there is odoo/odoo#51824. The version of gevent that is pinned in Odoo requirements files don't seem to work fine with python 3.7, which was too new when they got released. Thus, we will do our best to stick to the oldest python version supported by each Odoo release, as this one is the one actually used by upstream in production. As such, we're going back to those versions. What does it break?The base debian distro remains the same, so most apt dependencies will keep working. Previously it was already unsupported to install python3 packages from debian repos, and your dependencies in However, some cases could happen:
So if your build fails, fix it wherever needed to make it compatible with python 3.5/3.6. Last non-breaking image/template versionTemplate: Not affected. Images: Obtain SHA of images from CI logs in 4401ddd How to update?Generally you have to do nothing special, or, in the case this affects your code, you'll have to either pin the base image version or fix your code to make it backwards-compatible to python 3.5/3.6. |
Beta Was this translation helpful? Give feedback.
-
Forbidding incompatible pip dependenciesWhen will this happen?When #313 gets merged. Subscribe there for updates. Why will this happen?Pip doesn't ensure yet your dependencies are not broken, so you could be having false positive buillds with broken dependencies. It seems like it will do so soon, but in the mean time there's a simple workaround for us that is being applied everywhere in doodba. What does it break?Your builds, if they were broken but accidentally susccessful. Last non-breaking image/template versionTemplate: Not affected. Images: Obtain SHA of images from CI logs in https://github.com/Tecnativa/doodba/actions/runs/122313069 How to update?Generally you have to do nothing special, or, in the case some of your builds is broken, you will see in the logs which dependencies conflict. Then, fix them properly and rebuild. |
Beta Was this translation helpful? Give feedback.
-
Switch to Python 3.8 runtime in Doodba 14.0When will this happen?When #332 is merged. Subscribe there for updates. Why will this happen?Seems like Odoo is using Python 3.8 for Runbots and Odoo.sh in v14: odoo/runbot#414 (comment) We want to coincide with their environment. What does it break?The base debian distro remains the same, so most apt dependencies will keep working. Previously it was already unsupported to install python3 packages from debian repos, and your dependencies in pip.txt file will be now installed in python 3.8 automatically, so it shouldn't be a problem also. However, some cases could happen:
So if your build fails, fix it wherever needed to make it compatible with python 3.8. Last non-breaking image/template versionTemplate: Not affected. Images: Obtain SHA of images from CI logs in https://github.com/Tecnativa/doodba/actions/runs/303904322 How to update?Generally you have to do nothing special, or, in the case some of your builds is broken, you will see in the logs which dependencies conflict. Then, fix them properly and rebuild. |
Beta Was this translation helpful? Give feedback.
-
Always regenerating
|
Beta Was this translation helpful? Give feedback.
-
Deprecation of Doodba images before v11When will this happen?Once #408 is merged, we will only be supporting Doodba from versions >= 11. Furthermore, from now on, we will only actively maintain the latest 4 official Odoo versions, although all the resources will remain available in our repositories for the older versions (in Git history), and the latest successfully built image will remain in the Docker Hub and GHCR registries. Since the latest automated builds were being unsuccessful, the image available for up to version 10 is from 2 weeks ago. The image hasn't received updates ever since, including the ones that arrived in the most recent ones in the meantime. Why will this happen?The base image and some important resources associated with those older version's images are reaching their EOL and not receiving support, so maintaining the images will tend to be impossible. What does it break?As the images will remain built in the registries, it should not break anything. It is even possible to keep using those as a base for other images, installing other packages on top. However, those will not receive patches and security updates neither from us nor from the maintainers of any package present in the latest build. Last non-breaking image/template versionTemplate: Not affected. Images: |
Beta Was this translation helpful? Give feedback.
-
Change of UMASK integer format to use common octal integersWhen will this happen?Once #413 is merged, UMASK needs to be given as an octal integer. Why will this happen?Umasks in linux usually are given as an octal integer when in integer form. Also all documentation mentioned a UMASK that pointed to octal integer form. But during autoaggregate the string given as UMASK was read a decimal integer which would give unexpected results. What does it break?Users specifying a UMASK as decimal integer may get the wrong permissions after this change. Users following the documentation and specifying the umask as octal integer (e.g. Previously linux umask 0027 (permit nothing for others, do not permit write for group) needed to be given as Last non-breaking image/template versionTemplate: not affected. Images
|
Beta Was this translation helpful? Give feedback.
-
This project is currently in a production-ready but evolving status, so some not-retrocompatible changes might come in.
This issue will be a retrocompatibility breakage tracker. Please subscribe here if you use this project in production, because you will care of these changes.
Any announcement will include instructions on how to pin the image versions that supported old behaviour, and upgrade instructions.
Beta Was this translation helpful? Give feedback.
All reactions