crystal-lang / crystal

The Crystal Programming Language
https://crystal-lang.org
Apache License 2.0
19.34k stars 1.61k forks source link

Latest docker image is broken #10678

Closed straight-shoota closed 3 years ago

straight-shoota commented 3 years ago

The docker image crystallang/crystal:latest uses the deb repository from bintray and thus is broken since bintray shut down. The repository is no longer accessible and thus apt update will fail if you run it. I don't know why it uses that repository instead of directly embedding the deb package like the nightly builds. IMO it would be easier to just do that.

Anyways, first step we're gonna have to push new, working Dockerimages to dockerhub for nightly and nightly-build tags. I don't know if others are affected, too but I don't think so.

straight-shoota commented 3 years ago

Oh and latest-i386, latest-i386-build are also affected.

jwoertink commented 3 years ago

I'm using crystallang/crystal:0.36.1 in one of my projects which also looks to be broken.

straight-shoota commented 3 years ago

Yeah, all older releases are affected, too. But since 1.0 is released, they're not actively supported anymore. I suppose we could update at least the most recent pre-1.0 releases as well and delete older ones. Main focus is on 1.0 though.

jwoertink commented 3 years ago

Yeah, that makes sense. I don't think it's a huge issue to focus on pre 1.0, though, it looks like 1.0 container is also affected. Bintray is the new leftpad 😂

bcardiff commented 3 years ago

I think the rationale for tagged docker images was to use the deb packages as they would been used by end users. As a reminder, docker images of tagged versions are built by https://github.com/crystal-lang/crystal-dist/blob/master/docker/crystal/Dockerfile .

straight-shoota commented 3 years ago

I don't see the significance of "as they would been used by end users." Why does it matter? I use the docker image to have crystal installed (and do not care about packaging). For verifying the package it's not really comprehensive. It justs installs it on a single distro in a single version. The package tests are a better tool for that.

The alpine dockerfile (which seems to be used for release images, too) really just extracts the tarball, it doesn't even manually install an actual package.

I'd really prefer to use just a single set of docker files (https://github.com/crystal-lang/distribution-scripts/tree/master/docker) to build all the docker images, release and non-release. They already exist and don't need any extra setup. We can just easily integrate them into the release process and dump the extras from crystal-dist, reducing duplication.

bcardiff commented 3 years ago

It was a way to avoid duplicating the dependency information from the deb package. Package test came later.

I find it a bit odd that the installation would be different from what an end user would do. But that's all. It can be changed as long as the release checklist document is updated to reflect how to do things.

straight-shoota commented 3 years ago

For clarification, this is not a complete breakage (thankfully; we'd probably have more reports by now 😅 ): The images still work if you use them as is. But running apt update before installing additional packages will error because the bintray repository is no longer accessible. This can be mitigated by adding rm /etc/apt/sources.list.d/crystal.list before that.

We'll be publishing updated images shortly.

bcardiff commented 3 years ago

I pushed new docker images with the rm /etc/apt/sources.list.d/crystal.list for the following tags

bcardiff commented 3 years ago

Closing. If there is a need to update older images drop a comment.