-
Notifications
You must be signed in to change notification settings - Fork 184
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Update for automated multi-tagging and reducing the number of stack files #214
Conversation
and update 4.0.5 stack files
With this improvement, we can give the tag |
Yeah, this is definitely an issue. Long term I think this will be better when we can consolidate the stack files rather than duplicate them for each tag, yes?
🎉 🎉 |
Yes, I think we can make a single stack file for each R version like One of the problems preventing this at the moment is that |
You mean this, right?
Yeah, we should probably change the image name there anyway, saying this is just |
I'm sorry my explanation is not clear. First of all, {
"target": {
"r-ver": {
},
"rstudio": {
}
}
} And rocker-versioned2/build/make-bakejson.R Line 21 in 7a06d1c
So, there should not be two r-ver in one stack file. (Actually, it does work because the R process suffixes it and makes it an alias.) When merging them into one stack file, we can name one of them something other than r-ver (e.g. r-ver-cuda), but this will affect the image name defined in the compose files generated by Therefore, I think it is better to integrate stack files after
Given the comparison with |
Right, in other docker projects it's common to use tags for content as well as versions and many major projects have far more tag permutations than we do. I was just comparing to use in other places within rocker. I do think things would be cleaner if |
You're right. |
nice, sounds like a plan |
If you can create a To be honest, it's hard to target multiple files when extracting the tag list using |
Yeah, I think that's the way to go. Simplifying the build chain whenever possible definitely helps maintenance, even with automation. Ok, I've pushed a fresh local build of what we called |
core, geospatial, shiny, binder, ml-cuda10.1
and integrate stackfiles since version 4.0.5 by the script
and fix typo in ml:4.0.1
Oh, very nice! Great work. So, thoughts on the images that are not part of I think I understand why you're organizing stack files by version; it makes sense from a workflow perspective to say "build everything in |
The reason why I didn't include them in
I used to think about that approach too. (https://github.com/eitsupi/r-ver/blob/cb6dde632287e04e8d36c82a6e153038b468d147/buildargs/versions.json) |
@eitsupi that makes sense, thanks for explaining. Re the images outside Right, isolating versions in separate files does have the advantage of making it easier to modify the builds going forward without altering frozen images, which will no doubt become only more important as time passes. I'm on board |
Currently, the stack files (and files generated from stack files) do not contain so-called "shared tags" information such as
rocker/r-ver:latest
.This makes it difficult to track the tags of currently published images.
So, update
make-stacks.R
so that all shared tags are automatically included on the stack file.This makes it easy to build tasks such as downloading all tags from DockerHub and recording the contents of the image in reports.
Using
jq
(installed in GitHub Actions runners), we can extract values from a json file easily and loop through them usingforeach
in Makefiles.For example:
This PR contains shared tags such as
rocker/r-ver:4.0
that are not currently used, but these tags will also be published on DockerHub when we change to build with thedocker buildx bake
command.Since it is desirable to have a single stack file when extracting tags, etc., as I have done above, I will merge the stack files that are currently being built with GitHub Actions into a single file for each R version.
ToDo
Fix workflow for building devel images.Generatecore-devel.yml
fromdevel.json
.core.yml
.sync-template-vars.R
. (Includes build core latest daily images every day #194 unfinished feature, sync withcore-latest-daily.json
)