Are we supposed to build main or the latest stable release? #9675
-
For production images are we supposed to always build main, or to use the latest stable tag for a given OS major version? Up until now we used https://api.github.com/repos/actions/runner-images/releases with "prerelease==false" filter to get the latest stable version, and do our nightly builds based on that one. Our reasoning was, even if the latest stable is kinda short lived, but it's something that's been vetted and tested. But, based on #9672 (comment) maybe we're doing it completely wrong. Any thoughts or official guidance on this? |
Beta Was this translation helpful? Give feedback.
Replies: 2 comments 3 replies
-
Hey again @mhever! I'll try to remove some of the smoke and mirrors. From the users' point of view, the products of our repository are two products:
In fact, the releases reflect the second product. Each image released into production has its own release in our repository. This allows users to track the change history of images, for example. Separately, regarding the first product: releases for it are fundamentally impossible in the current implementation of the product. The code has a very short lifespan, as it depends on many uncontrollable external factors. We strongly discourage linking image releases with code that was current at the time of the release. Almost every run of our code will generate a unique image (if ended well), which will have some differences from the result of the previous run of the same code. Don't forget that our repository contains not just program code explicitly "translatable" and "compilable" into an executable file, but a set of scripts, many of which do such abstract things as, for example, “install the latest available version of package A” or “install the latest minor.patch version of the LTS branch of the package B". A little about the release cycle: delivering the image to all GitHub Actions agents is a task that takes a long time. Therefore, every time we start releasing a new version of an image, a pre-release and a pull request are created in this repository, which reflect all the changes from image to image. When all available agents receive this update, the pull request is merged and the pre-release becomes a release. However, the code contained in this release is nothing more than a mandatory standard artifact. |
Beta Was this translation helpful? Give feedback.
-
So, again, answering your question: |
Beta Was this translation helpful? Give feedback.
So, again, answering your question:
Yes, users should only use
main
branch if they want to build their own agents.