crystal-lang / distribution-scripts

40 stars 24 forks source link

Push docker images directly from CI #120

Closed beta-ziliani closed 2 years ago

beta-ziliani commented 3 years ago

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.

bcardiff commented 3 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.

straight-shoota commented 2 years ago

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).

Sija commented 2 years ago

latest applies to version, not chronological ordering.

straight-shoota commented 2 years ago

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.