-
Notifications
You must be signed in to change notification settings - Fork 25.7k
[RELAND] .circleci: Improve docker image build workflow #38484
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
[RELAND] .circleci: Improve docker image build workflow #38484
Conversation
💊 CI failures summary and remediationsAs of commit 7e32363 (more details on the Dr. CI page): 💚 💚 Looks good so far! There are no failures yet. 💚 💚 This comment was automatically generated by Dr. CI (expand for details).Follow this link to opt-out of these comments for your Pull Requests.Please report bugs/suggestions on the GitHub issue tracker. This comment has been revised 17 times. |
4d9dc3c to
5b62f34
Compare
Summary: Previous attempts to get this right: * #38335 * #38279 * #37976 This tag kept getting deleted before the docker image ci workflow could be merged causing it to have upstream breakages. It'd be best to make sure the garbage collector just doesnt garbage collect it. This is a pre-step to merge #38484 Signed-off-by: Eli Uriegas <eliuriegas@fb.com> Pull Request resolved: #38483 Differential Revision: D21577359 Pulled By: seemethere fbshipit-source-id: c4e0709bd8fff8f24a988b60eaa9f8c01576ef2f
cd2909f to
24a5236
Compare
413950c to
15e9833
Compare
This reverts commit 8063960. Improves the docker image build workflow from many steps to basically transparent from a user's perspective. To update docker images now all one has to do is edit the .circleci/docker folder and it will update automatically and also dynamically add the tags to the list of tags to keep from the garbage collector. Adding a new image will currently stay the same but we can explore doing that dynamically as well. How the build workflow works: - Docker tags are determined by the hash defined from git for the .circleci/docker sub-directory (extracted using git rev-parse) - Images are only built if the computed hash is not found in ecr and the hash is different than the previously computed hash. The previously computed hash is found using the same process as before but subbing out HEAD for the merge base between HEAD and the base git revision - That tag is then passed through the jobs using a shared workspace which is added to downstream jobs using the circleci ${BASH_ENV} How the new garbage collection works: - Tags to keep are generated by stepping through all of the commits in in the .circleci/docker subdirectory Signed-off-by: Eli Uriegas <eliuriegas@fb.com>
15e9833 to
7e32363
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's hope it will be green this time
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@seemethere is landing this pull request. If you are a Facebook employee, you can view this diff on Phabricator.
|
Sorry I had to revert this PR since it broke pytorch/xla CI. (not the xla job in our CI, but the CI in pytorch/xla repo). |
closes #37855
Relies on #38483
Previous attempts to get this right:
This reverts commit 8063960.
Improves the docker image build workflow from many steps to basically
transparent from a user's perspective.
To update docker images now all one has to do is edit the
.circleci/docker folder and it will update automatically and also
dynamically add the tags to the list of tags to keep from the garbage
collector.
Adding a new image will currently stay the same but we can explore doing
that dynamically as well.
How the build workflow works:
.circleci/docker sub-directory (extracted using git rev-parse)
the hash is different than the previously computed hash. The
previously computed hash is found using the same process as before
but subbing out HEAD for the merge base between HEAD and the base
git revision
which is added to downstream jobs using the circleci ${BASH_ENV}
How the new garbage collection works:
in the .circleci/docker subdirectory
Signed-off-by: Eli Uriegas eliuriegas@fb.com