Closed beta-ziliani closed 2 years ago
For tagged release it would also make sense to publish in the official docker library at https://github.com/docker-library/official-images
We haven't done that so far because 0.x
Having a crystal in the official library will give us $ docker run crystal
😎 and a more standard naming for -musl images by mimicking other languages.
Eventually, keeping only the ci images for ourselves should be enough regarding crytallang/crystal docker images.
I think we just have to activate the publish_docker
step in circleCI on tagged release. We already do that on maintenance and nightlies and it should work exactly the sam on tagged. The DOCKER_TAG
variable is already set up for that.
It probably makes sense to roll that out after https://github.com/crystal-lang/crystal/pull/11273
The only dodgy part is overriding the *-latest
aliases. We certainly don't want that on maintenance and nightly builds. That's not hart do handle.
But we also might not want that on a tagged release, because latest
does not always have to be the be most recently pushed release. For example, we could publish 1.1.2
after 1.2.0
. So far, all our releases have been in strict chronological order. And I wouldn't expect that to change anytime soon. But you never know. Having such an automation might not be ideal in cases when it would be differnt.
That being said, it's not hard to fix if it goes wrong. With goes wrong I mean either forgetting to update latest
without the automation or getting an "older" release incorrectly labeled as latest
with the automation. The latter might be more sever, but overall less likely to have a chance at happening.
The same issue with latest
applies to API docs as well (#117).
latest
applies to version, not chronological ordering.
This has been resolved by https://github.com/crystal-lang/crystal/pull/11309 and #156
Versioned Docker images are now published automatically from the CI workflow. Tagging of the latest release happens manually via the shell script helper.
Right now nightlies images are being pushed already, the difference lies in that the images of releases (apparently) uses OBS packages instead of hard-coded binaries. The intention as we understand it is to be able to deliver updateable images. However, that doesn't seem to be super important: those willing to have such images should simply add the steps to install crystal from a base image.