Comments (5)
Thanks so much for reaching out here @darrenmedwards !! Do you mind my asking exactly what type of tagged versions you imagine?
Unfortunately just tagging the first build of the product at a particular version may not match the "last" way that we build that image, and updating the tag would not help at all for reproducibility of the source 😞
(i.e. when RSC first updates to 1.8.8.2, we will build it here. However, we may improve the Dockerfile or make changes to the code here before the next release of RSC lands. How would you expect tagging to work in that case?)
For instance, one way we could tag is just at the start of every month, create a 202101 tag, 202102 tag, etc. But that is also not super helpful since it will not necessarily correlate to the images. Does it work for you to pin to certain commits? Just whenever you pull / update the source, save the commit that you are referencing?
This is all partly a function of how we are using these images at present - which is not enormously reproducible. (i.e. our docker image tags are not immutable)
I'm not sure I am 100% understanding your use case, so am hopeful that discussing a bit more will help me understand 😄
from rstudio-docker-products.
For my purposes, I think it would be sufficient if the source code could be tagged with the same image tag and maybe some additional, immutable qualifier. I wouldn't need tags for non-release code
I think the image tags map to the RStudio product version and uses major.minor.patch-qualifier convention. Maybe the image build source code can be tagged with major.minor.patch-qualifier-unique_build_id (or maybe an incremental build #). So for example, the image tag 1.4.1106-5 could be built from git code tags 1.4.1106-5-1, 1.4.1106-5-2, and 1.4.1106-5-3
For my use case, this would allow me to create my own build pipeline that (1) pulls a tagged version of rstudio-docker-products, (2) performs a few regex find/replace on the Dockfile or other files, and (3) runs the docker build within my docker build environment. Also, with this methodology, I wouldn't have to fork the code that could potentially lead to drift. For better supportability purposes, this would allow me to stay tightly coupled with rstudio-docker-products... if that's ok 😄
Your idea to pin commits might work too, but I would just want to be sure the commit I'm using is stable and ideally tied to a released image tag.
Thanks for your engagement @colearendt!
from rstudio-docker-products.
Whew! Two weeks has passed already!? I thought I responded to this 🙈 Sorry about that!
Thanks for your patience! I like this idea / pattern a lot! Plus it could help us keep track of things in the repository a bit easier as well.
We are currently in the process of refactoring some of our repositories / CI processes. I suspect ultimately this type of incremental build # will probably be best implemented in CI so that it is consistent. Unfortunately it may take us a little while to get this rolling properly, but I am definitely hopeful that we can craft a good solution here!
from rstudio-docker-products.
We now publish docker images that have a SHA associated with them. The SHA is the git
SHA of the code that produced them. Hopefully that is sufficient to accomplish this task! We do not have tagged releases (yet), but builds can be tracked against source code in this way.
from rstudio-docker-products.
Also, it's worth noting that we are nearing a state where not every git commit will build every image. We are hoping to only build images that "changed" / need to be built. So the workflow you describe where you start from a released image is still probably the best strategy in this case 😄
from rstudio-docker-products.
Related Issues (20)
- unable to build workbench/Dockerfile.ubuntu2204 HOT 2
- Remove `PYTHON_VERSION_JUPYTER` and default Jupyter installs to the primary or alternate Python version HOT 1
- Extract common `RUN` blocks to shared scripts HOT 2
- Update default package install list for Workbench for Azure ML
- Fix JupyterLab in Workbench for Azure ML
- r-session-complete image crashes when selecting/changing the project HOT 10
- Upgrade floating license server to Ubuntu 22.04
- Support multiple regions for Google Cloud Workstations image HOT 1
- Automatically check for and PR new product and tool releases
- Quick question: Shouldn't we have a default /etc/rstudio/rsession.conf ?
- Move/rename things to say posit?
- Provide supported base image(s) for SageMaker HOT 3
- RStudio Connect unistalls in docker image when updating curl to v8.4.0 HOT 5
- Upgrade Workbench for GCW to Workbench 2023.09.1
- Investigate improved image support for ARM64 architecture
- RStudio Workbench CVEs
- Incorrect env ARG means URL construction fails in Docker HOT 1
- Install virtualenv and build in the Package Manager image for git-builders HOT 1
- ClamAV reporting virus with az cli HOT 5
- Unify the docker image build matrix to easy run locally and on CI
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from rstudio-docker-products.