riotdocker icon indicating copy to clipboard operation
riotdocker copied to clipboard

The container should have versioning and releases

Open jcarrano opened this issue 6 years ago • 14 comments

RIOT has versioning and regular releases. RIOT depends on this image as it is part of the build system.

Both RIOT and the image are thoroughly tested on each release (of RIOT) so that we know RIOT builds with the particular version of riotdocker that was active when the release was done.

The problem is: that image is not being saved anywhere. In other words, the Docker integration in RIOT always uses latest, and there is only latest because riotdocker does not have versions.

What this means is:

  • Past releases of RIOT may be broken as they use "latest" and latest keeps on being changed.
  • The latest release of RIOT may well be broken the day after it is relased, just by updating the image (or even by just rebuilding it, since it does a apt-get update && apt-get -y dist-upgrade) And because the release is already out, it is not being tested.

What I propose:

  • Have a version of riotdocker for each release of RIOT. These should not get changed except to fix bugs (though nobody is reporting bugs against a release.)
  • Change RIOT to use the release-specific image.
  • Have a master/latest image, than can build the master RIOT.
  • Have a CI release, that can also build the master riot. Merge master into CI anb deploy once in a while.

Steps:

  • [x] Create branch
  • [ ] Update build rules in Docker Hub.
  • [ ] Come up with a testing/deployment procedure
  • [ ] Update the docker integration in RIOT.

jcarrano avatar Jan 16 '19 13:01 jcarrano

I agree with your concerns, it is bad that we are only using the latest tag. Providing one tag per RIOT release sounds like a future-proof solution which should allow still building old releases for bug fix testing etc. A tag for the rolling development is also useful when working on development of the RIOT master branch.

jnohlgard avatar Jan 21 '19 11:01 jnohlgard

I created a new branch '2019.01-branch' at the point where we were at the last RIOT release (which is also the point at which we are now.)

What I need now is someone with access to our Docker Hub account configures the build so that the riot/riotbuild:2019.01-branch exists and builds from the new branch.

Next step is to update RIOT itself to use the image.

jcarrano avatar Feb 27 '19 15:02 jcarrano

Does anybody care? I insist: the way we are handling the docker image now means we can break the current release at any point, and previous releases are certainly broken. I do not think this is acceptable,

jcarrano avatar Mar 13 '19 14:03 jcarrano

Shall we start with this now, that 2019.04 is out?

miri64 avatar Apr 30 '19 10:04 miri64

Does anybody care? I insist: the way we are handling the docker image now means we can break the current release at any point, and previous releases are certainly broken. I do not think this is acceptable,

I care and agree, so please go ahead!

miri64 avatar Apr 30 '19 10:04 miri64

@gebart Could you give me access to the container at DockerHub?

jcarrano avatar Apr 30 '19 14:04 jcarrano

The lack of versioning has caused an issue with my workflow. I am trying to rereun a build from a year ago that includes some now deprecated code. The environment created last year compiled that code just fine, but todays environment throws an error. This would be a non-issue if I could just specify a tag to pull from last year.

I ask that this issue be given some more attention. I think it is integral to the problem that Docker images are trying to solve in the first place.

dberliner avatar Apr 06 '21 17:04 dberliner

@kaspar030 @fjmolinas AFAIK the deployment process is mostly automated. Is there a reason why we can't version the docker images?

miri64 avatar Apr 07 '21 08:04 miri64

@kaspar030 @fjmolinas AFAIK the deployment process is mostly automated. Is there a reason why we can't version the docker images?

Nothing, just add that in #136, see 0141a4548ecf973bc4ccf172589b290f1e0f5187, here is my test branch https://hub.docker.com/repository/docker/fjmolinas/riotbuild images tagged with a release version.

fjmolinas avatar Apr 12 '21 08:04 fjmolinas

@kaspar030 should we maybe then go ahead and create a 2021.04 branch?

miri64 avatar Apr 20 '21 09:04 miri64

@kaspar030 should we maybe then go ahead and create a 2021.04 branch?

sure! will do

kaspar030 avatar Apr 20 '21 09:04 kaspar030

(we could add it to the Release Manager script at a later date for feature-freeze, so this can be automated)

miri64 avatar Apr 20 '21 09:04 miri64

The version tag in the github workflow hasn't been updated for the last two releases as it seems, therefore the current "last" docker image is tagged as 2024.01 on dockerhub, too: https://hub.docker.com/r/riot/riotbuild/tags

Anyone knows the status of this? It's apparently not part of the release-manager script that I used for the last release, but it's also not mentioned on the "how to release" wiki.

mguetschow avatar Aug 28 '24 13:08 mguetschow

Btw, without being aware of this (stalled) work here, https://github.com/RIOT-OS/RIOT/pull/20472 has been merged in the meantime. @maribu FYI

mguetschow avatar Aug 28 '24 13:08 mguetschow