Skip to content

Conversation

daler
Copy link
Member

@daler daler commented Feb 27, 2024

This takes the ideas from the code review on #953 and simplifies by refactoring how everything is configured. See #953 (comment) for the specific proposed items, which are addressed here.

The only major difference from those proposed items is storing the conda/mamba versions, which are not clearly defined in requirements. For example, I think mamba comes in from the base image (quay.io/condaforge/linux-anvil-cos7-x86_64). So I kept the same strategy as before, where the create-env depends on the build-env and inspects the conda/mamba versions used there.

Edits 2024-08-10

Here's an overview of the changes...

This is strictly for the base images. They are used for creating images for packages, and once this is merged they will will be pushed to the same quay.io tags as existing base images. But this PR does not deal with creating package images.

(if the nomenclature of images is confusing, see dockerfile inventory for a guide)

The package building has been unified to use a single build.sh script which takes an image directory as its only argument. That image directory should have prepare.sh, Dockerfile, and Dockerfile.test. Each <IMAGE DIR>/prepare.sh sources versions.sh which is the common place to set versions and tags. It also provides some helper functions. You can read about all of this in images/README.md.

The new build-images.yml GitHub workflow handles the interdependencies of the image building and testing. It uses GitHub Container Registry as a temporary storage space for images. After testing, tagged images are pushed to quay.io.

The main advantage of this overhaul is to factor out all the commonalities across building images, which otherwise have grown in different directions over the years. This provides just one unified system that maintainers need to understand. The reason it is in this repo rather than bioconda-containers is that we have strong dependencies on the version of bioconda-utils, so ideally changes to bioconda-utils should also test that corresponding base images work correctly.

NOTE: this does NOT yet replace the bioconda bot image so bioconda-containers is still needed for that.

@daler
Copy link
Member Author

daler commented May 12, 2025

Current status: the version failure is highlighting the fact that we're not testing the very same image that was just built. This is because 1) the upstream quay.io image is hard-coded, and 2) bioconda-utils uses docker but the images were built with podman.

Trying to get docker to work with the local podman registry has been tricky, at least on a local test instance. Next attempt was to try not using docker at all and switch completely to podman, messing around with this in #1045.

@daler
Copy link
Member Author

daler commented Jun 9, 2025

Closing in favor of #1049, which avoids using ghcr.io as a temporary cache and which also does include the bot image.

@daler daler closed this Jun 9, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants