Skip to content
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

model: capture container build dates (PROJQUAY-6210) #2877

Open
wants to merge 5 commits into
base: master
Choose a base branch
from

Conversation

dmesser
Copy link
Contributor

@dmesser dmesser commented May 14, 2024

This adds the capability to for the data model to track the creation date of a manifest or manifest list. This is essentially the creation date found in the config manifest of a OCI image: https://github.com/opencontainers/image-spec/blob/main/config.md - the same concept exists for Docker images. It aims to implement the following functionality:

Non-manifest list images

  1. A Quay user pushes an image they built locally on their machine
  2. The image contains a single manifest only because the user did not build the image for multiple architectures or added metadata in the form of additional manifest to it.
  3. The user pushes the image to Quay
  4. Quay reads the metadata of the image and captures the creation date, typically in ISO 8601 format, and stores it in the database

Manifest list images:

  1. A Quay users leverages Quay's repository mirroring to mirror images from an external registry into Quay
  2. The images mirrored are usually manifests lists, containing manifests for the various supported CPU architectures of this software or additional metadata supplied as child manifests like in-toto attestations
  3. The mirroring processes pushes these images into Quay
  4. Quay reads the metadata of each individual child manifest and captures the creation dates, typically in ISO 8601 format, and stores them in the database like so::
  5. the child manifests creation date is represented with the information from the individual child manifest metadata
  6. the parent manifest-list creation date is computed from the newest creation date found among the child manifest

The required API and UI changes will follow in separate PRs to fully implement PROJQUAY-6210.

@dmesser dmesser requested review from syed and bcaton85 May 14, 2024 16:28
Copy link

codecov bot commented May 15, 2024

Codecov Report

Attention: Patch coverage is 62.68657% with 25 lines in your changes are missing coverage. Please review.

Project coverage is 70.88%. Comparing base (4bfad98) to head (f1f04f2).
Report is 15 commits behind head on master.

Files Patch % Lines
image/oci/index.py 7.69% 12 Missing ⚠️
image/oci/config.py 55.55% 3 Missing and 1 partial ⚠️
image/docker/schema2/config.py 77.77% 2 Missing ⚠️
image/docker/schema2/list.py 84.61% 2 Missing ⚠️
image/oci/manifest.py 60.00% 1 Missing and 1 partial ⚠️
image/shared/types.py 50.00% 2 Missing ⚠️
image/shared/interfaces.py 66.66% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master    #2877      +/-   ##
==========================================
- Coverage   70.93%   70.88%   -0.06%     
==========================================
  Files         436      436              
  Lines       40723    40842     +119     
  Branches     5323     5355      +32     
==========================================
+ Hits        28887    28950      +63     
- Misses      10152    10200      +48     
- Partials     1684     1692       +8     
Flag Coverage Δ
unit 70.88% <62.68%> (-0.06%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

1 participant