Skip to content

Generate artifacts.yaml manifest for downloaded packages#4558

Open
AthreyVinay wants to merge 1 commit intoavinay-refactor-nvr-abstractionfrom
avinay-report-installable-artifacts
Open

Generate artifacts.yaml manifest for downloaded packages#4558
AthreyVinay wants to merge 1 commit intoavinay-refactor-nvr-abstractionfrom
avinay-report-installable-artifacts

Conversation

@AthreyVinay
Copy link
Contributor

@AthreyVinay AthreyVinay commented Feb 6, 2026

An effort towards resolving: #4055 (part-2)

Pull Request Checklist

  • implement the feature
  • extend the test coverage

@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @AthreyVinay, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request significantly refactors the internal handling and persistence of artifact information. It introduces a standardized object model for artifact details, ensuring a consistent approach across various artifact providers. A key enhancement is the ability to persist these detailed artifact metadata to a YAML file, which will greatly improve the ability to track and debug artifact-related issues. These changes streamline artifact management and lay a robust foundation for future development.

Highlights

  • Artifact Information Refactoring: Introduced new Version and ArtifactInfo classes to standardize the representation of artifact details such as name, version, release, architecture, and epoch. The ArtifactInfo class now directly holds this version information, its location, and a reference to its provider.
  • Standardized Artifact Collection: Replaced the artifacts property with an abstract method get_installable_artifacts() across all artifact providers. This ensures a consistent and explicit way for providers to expose artifacts that are ready for installation, improving clarity and maintainability.
  • Persistence of Artifact Metadata: Added functionality to persist the metadata of all installable artifacts to an artifacts.yaml file within the plan's work directory. This file groups artifacts by their respective providers, enhancing traceability and debugging capabilities.
  • Removal of list_packages from Package Manager: The list_packages method has been removed from the PackageManager interface and its Dnf implementation. This change reflects that repository providers no longer enumerate individual packages, aligning with the new artifact handling strategy.
Changelog
  • tests/unit/artifact/init.py
    • Updated mock getBuild to include package_name for more realistic test scenarios.
    • Modified mock listTaskOutput to return RPM filenames with full NVR.A format.
  • tests/unit/artifact/conftest.py
    • Removed the import of CoprRepositoryProvider as it's no longer directly used in this context.
    • Refactored the _initialize_session mocks for KojiArtifactProvider and BrewArtifactProvider to improve test setup.
  • tests/unit/artifact/test_base.py
    • Removed the MockArtifactInfo class, aligning with the new ArtifactInfo structure.
    • Updated MockProvider to utilize the new ArtifactInfo and Version classes.
    • Adjusted the expected filename in test_download_artifacts to match the new artifact naming convention.
  • tests/unit/artifact/test_brew.py
    • Migrated calls from provider.artifacts to provider.get_installable_artifacts() to reflect the API change.
    • Added package_name to mock getBuild responses for more comprehensive testing.
    • Removed _top_url assignment in test_brew_valid_task_id_scratch_build for cleaner test code.
  • tests/unit/artifact/test_copr_build.py
    • Updated calls from provider.artifacts to provider.get_installable_artifacts().
    • Modified artifact property access from _raw_artifact["url"] to location and _raw_artifact["name"] to name.
  • tests/unit/artifact/test_copr_repository.py
    • Added import for CoprRepositoryProvider to ensure the test file correctly references the class under test.
  • tests/unit/artifact/test_file.py
    • Removed the PackageAsFileArtifactInfo import.
    • Updated test_file_artifact_provider_patterns to use more realistic RPM filenames and the new get_installable_artifacts() method.
    • Modified test_file_artifact_provider_deduplicates_globs and test_download_artifact to use updated filenames and the new artifact retrieval method.
  • tests/unit/artifact/test_koji.py
    • Updated calls from provider.artifacts to provider.get_installable_artifacts().
    • Added test_koji_preserves_epoch_from_metadata to verify correct epoch handling during artifact processing.
  • tests/unit/artifact/test_repository.py
    • Removed the import and associated tests for parse_rpm_string.
    • Updated calls from provider.artifacts to provider.get_installable_artifacts().
    • Removed assertions related to mock_package_manager.list_packages.assert_not_called().
  • tmt/package_managers/init.py
    • Removed GeneralError import as it's no longer directly used in this module.
    • Removed the abstract method list_packages from PackageManagerEngine.
    • Removed the list_packages method from the PackageManager interface.
  • tmt/package_managers/dnf.py
    • Removed the list_packages method from the DNF package manager implementation.
  • tmt/steps/prepare/artifact/init.py
    • Removed Optional import as it's no longer explicitly needed.
    • Removed the RpmArtifactInfo class, replaced by the new ArtifactInfo.
    • Introduced _persist_artifact_metadata method to write artifact details to artifacts.yaml.
    • Integrated the call to _persist_artifact_metadata within the go method to save artifact data.
  • tmt/steps/prepare/artifact/providers/init.py
    • Introduced a new Version class to encapsulate artifact versioning details (name, version, release, arch, epoch).
    • Refactored ArtifactInfo from an abstract base class to a concrete class, now holding Version, location, and provider.
    • Replaced the abstract artifacts property with an abstract get_installable_artifacts method.
    • Added raw_provider_id attribute to the ArtifactProvider class for better identification.
  • tmt/steps/prepare/artifact/providers/brew.py
    • Removed type: ignore[arg-type] comments from provides_artifact_provider decorators for improved type checking.
  • tmt/steps/prepare/artifact/providers/copr_build.py
    • Removed RpmArtifactInfo import, replaced by the new ArtifactInfo.
    • Imported Version and VersionFromRpmMeta to support the new versioning scheme.
    • Updated CoprBuildArtifactProvider to use the new ArtifactInfo and Version classes.
    • Modified make_rpm_artifact to return ArtifactInfo instances using VersionFromRpmMeta.
    • Replaced the artifacts property with the get_installable_artifacts method.
  • tmt/steps/prepare/artifact/providers/copr_repository.py
    • Removed RpmArtifactInfo import.
    • Updated CoprRepositoryProvider to use ArtifactInfo.
    • Replaced the artifacts property with get_installable_artifacts, which now returns an empty list.
    • Updated _download_artifact to accept the new ArtifactInfo type.
  • tmt/steps/prepare/artifact/providers/file.py
    • Removed PackageAsFileArtifactInfo import and its class definition.
    • Imported Version and VersionFromFilename for parsing version information from filenames.
    • Updated PackageAsFileArtifactProvider to use the new ArtifactInfo.
    • Added a make_rpm_artifact method to create ArtifactInfo instances from file paths.
    • Replaced the artifacts property with get_installable_artifacts, which now uses make_rpm_artifact.
    • Updated _download_artifact to accept the new ArtifactInfo type.
  • tmt/steps/prepare/artifact/providers/koji.py
    • Imported Self from _compat.typing for type hinting.
    • Removed RpmArtifactInfo and ScratchRpmArtifactInfo classes.
    • Introduced VersionFromRpmMeta and VersionFromFilename classes for robust version parsing.
    • Updated KojiArtifactProvider and its subclasses (KojiTask, KojiBuild, KojiNvr) to leverage the new ArtifactInfo and Version classes.
    • Replaced the artifacts property with the get_installable_artifacts method across Koji providers.
    • Modified make_rpm_artifact methods to return ArtifactInfo instances using the new Version classes.
    • Updated _download_artifact to accept the new ArtifactInfo type.
  • tmt/steps/prepare/artifact/providers/repository.py
    • Removed RpmArtifactInfo import.
    • Updated RepositoryFileProvider to use ArtifactInfo.
    • Removed the parse_rpm_string function.
    • Replaced the artifacts property with get_installable_artifacts, which now returns an empty list.
    • Updated _download_artifact to accept the new ArtifactInfo type.
  • tmt/steps/prepare/artifact/providers/repository_url.py
    • Removed RpmArtifactInfo import.
    • Updated RepositoryUrlProvider to use ArtifactInfo.
    • Replaced the artifacts property with get_installable_artifacts, which now returns an empty list.
    • Updated _download_artifact to accept the new ArtifactInfo type.
Activity
  • The pull request addresses and resolves issue Prepare artifacts list with version details #4055, indicating a specific problem or feature request it aims to fix.
  • The author has marked the feature implementation as complete, signifying that the core functionality is in place.
  • The author has indicated that extending test coverage is still pending, suggesting further testing efforts might be required.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces a significant and valuable refactoring of artifact handling by introducing structured Version and ArtifactInfo classes. This greatly improves the clarity and maintainability of the code. The new feature to persist artifact metadata to disk is also a great addition.

My review includes a few suggestions to further improve the design:

  • A potential performance regression due to the removal of @cached_property on methods that perform API calls.
  • Opportunities to improve code organization by moving shared helper classes to a more central location.
  • A suggestion to resolve a Liskov Substitution Principle violation in one of the provider classes.
  • A minor suggestion for more concise code in the new metadata persistence logic.

Overall, this is a solid piece of work. Thank you for the contribution!

@AthreyVinay
Copy link
Contributor Author

This pr currently generates the following v1.0 of the artifacts.yaml for a koji.build:2909847, suggestions/improvements welcome :)

providers:
  - id: koji.build:2909847
    artifacts:
      - name: python-click
        version: 8.1.7
        release: 12.fc44
        arch: src
        epoch: 1
        nvra: python-click-8.1.7-12.fc44.src
        location: 
            https://kojipkgs.fedoraproject.org/packages/python-click/8.1.7/12.fc44/src/python-click-8.1.7-12.fc44.src.rpm
      - name: python3-click
        version: 8.1.7
        release: 12.fc44
        arch: noarch
        epoch: 1
        nvra: python3-click-8.1.7-12.fc44.noarch
        location: 
            https://kojipkgs.fedoraproject.org/packages/python-click/8.1.7/12.fc44/noarch/python3-click-8.1.7-12.fc44.noarch.rpm

@AthreyVinay AthreyVinay added step | prepare Stuff related to the prepare step plugin | artifact Related to the `prepare/artifact` plugin. labels Feb 6, 2026
@github-project-automation github-project-automation bot moved this to backlog in planning Feb 6, 2026
@AthreyVinay AthreyVinay moved this from backlog to review in planning Feb 6, 2026
@AthreyVinay AthreyVinay added this to the 1.67 milestone Feb 6, 2026
@AthreyVinay AthreyVinay changed the title Persist artifact details / info to disk Generate artifacts.yaml manifest for downloaded packages Feb 6, 2026
@AthreyVinay AthreyVinay changed the title Generate artifacts.yaml manifest for downloaded packages Generate artifacts.yaml manifest for downloaded packages Feb 6, 2026
@AthreyVinay AthreyVinay added the ci | full test Pull request is ready for the full test execution label Feb 6, 2026
@AthreyVinay AthreyVinay changed the base branch from main to avinay-refactor-nvr-abstraction February 6, 2026 12:14
@AthreyVinay
Copy link
Contributor Author

AthreyVinay commented Feb 9, 2026

v1.1 - updated with sha256header key & multiple providers:

providers:
  - id: koji.build:2909847
    artifacts:
      - name: python-click
        version: 8.1.7
        release: 12.fc44
        arch: src
        epoch: 1
        nvra: python-click-8.1.7-12.fc44.src
        location: 
            https://kojipkgs.fedoraproject.org/packages/python-click/8.1.7/12.fc44/src/python-click-8.1.7-12.fc44.src.rpm
        sha256header: 
            20ec605df07f9caa186deb48622089f5f38df0b7dfb6e095f3fde401d23bdb23
      - name: python3-click
        version: 8.1.7
        release: 12.fc44
        arch: noarch
        epoch: 1
        nvra: python3-click-8.1.7-12.fc44.noarch
        location: 
            https://kojipkgs.fedoraproject.org/packages/python-click/8.1.7/12.fc44/noarch/python3-click-8.1.7-12.fc44.noarch.rpm
        sha256header: 
            873b3db9067e278a4cc1b13798deeea595c175cb6c37f7b267e06240ec8cb5db
  - id: copr.build:10074834:fedora-43-x86_64
    artifacts:
      - name: tmt+prepare-artifact
        version: 1.66.0
        release: 1.fc43
        arch: noarch
        epoch:
        nvra: tmt+prepare-artifact-1.66.0-1.fc43.noarch
        location: 
            https://download.copr.fedorainfracloud.org/results/@teemtee/stable/fedora-43-x86_64/10074834-tmt/tmt+prepare-artifact-1.66.0-1.fc43.noarch.rpm
        sha256header: 
            635f16efb8f5dceca89e8e24d1b06c2aaad733c159bc6607c02ab0e119565907
      - name: tmt+test-convert
        version: 1.66.0
        release: 1.fc43
        arch: noarch
        epoch:
        nvra: tmt+test-convert-1.66.0-1.fc43.noarch
        location: 
            https://download.copr.fedorainfracloud.org/results/@teemtee/stable/fedora-43-x86_64/10074834-tmt/tmt+test-convert-1.66.0-1.fc43.noarch.rpm
        sha256header: 
            f29a5f3a746bd513eba0821c194cfcc80791dfbb28c722259090b0da57926884
      - name: tmt
        version: 1.66.0
        release: 1.fc43
        arch: noarch
        epoch:
        nvra: tmt-1.66.0-1.fc43.noarch
        location: 
            https://download.copr.fedorainfracloud.org/results/@teemtee/stable/fedora-43-x86_64/10074834-tmt/tmt-1.66.0-1.fc43.noarch.rpm
        sha256header: 
            59420254e537097b56570e2521a389d3cb0754935c189049b05ba7e89b2aa1df
      - name: tmt+provision-bootc
        version: 1.66.0
        release: 1.fc43
        arch: noarch
        epoch:
        nvra: tmt+provision-bootc-1.66.0-1.fc43.noarch
        location: 
            https://download.copr.fedorainfracloud.org/results/@teemtee/stable/fedora-43-x86_64/10074834-tmt/tmt+provision-bootc-1.66.0-1.fc43.noarch.rpm
        sha256header: 
            87b53a9a5e86f9c1b71b6e7660f87168db0fb7820f38b1752e3af38f4d4486ca
      - name: tmt+report-polarion
        version: 1.66.0
        release: 1.fc43
        arch: noarch
        epoch:
        nvra: tmt+report-polarion-1.66.0-1.fc43.noarch
        location: 
            https://download.copr.fedorainfracloud.org/results/@teemtee/stable/fedora-43-x86_64/10074834-tmt/tmt+report-polarion-1.66.0-1.fc43.noarch.rpm
        sha256header: 
            f2c2b5ca31696451cd11119fb05e8994362360ed6842fa0cf1daefde49c3d633
      - name: tmt+provision-virtual
        version: 1.66.0
        release: 1.fc43
        arch: noarch
        epoch:
        nvra: tmt+provision-virtual-1.66.0-1.fc43.noarch
        location: 
            https://download.copr.fedorainfracloud.org/results/@teemtee/stable/fedora-43-x86_64/10074834-tmt/tmt+provision-virtual-1.66.0-1.fc43.noarch.rpm
        sha256header: 
            01b632a605d844893bd7cd900456118846233dc73fcaf4f5161d504cd633e3ce
      - name: tmt+all
        version: 1.66.0
        release: 1.fc43
        arch: noarch
        epoch:
        nvra: tmt+all-1.66.0-1.fc43.noarch
        location: 
            https://download.copr.fedorainfracloud.org/results/@teemtee/stable/fedora-43-x86_64/10074834-tmt/tmt+all-1.66.0-1.fc43.noarch.rpm
        sha256header: 
            3b9d7dbd522c4e2167a95a07bbb7bf6b00b8607adaae64e08fdd3b65cdce4e24
      - name: tmt+export-polarion
        version: 1.66.0
        release: 1.fc43
        arch: noarch
        epoch:
        nvra: tmt+export-polarion-1.66.0-1.fc43.noarch
        location: 
            https://download.copr.fedorainfracloud.org/results/@teemtee/stable/fedora-43-x86_64/10074834-tmt/tmt+export-polarion-1.66.0-1.fc43.noarch.rpm
        sha256header: 
            8eb5fc4d50548f087ef6d620cb985e6c068a60af7168407aaee4be1b22c507f0
      - name: tmt+provision-beaker
        version: 1.66.0
        release: 1.fc43
        arch: noarch
        epoch:
        nvra: tmt+provision-beaker-1.66.0-1.fc43.noarch
        location: 
            https://download.copr.fedorainfracloud.org/results/@teemtee/stable/fedora-43-x86_64/10074834-tmt/tmt+provision-beaker-1.66.0-1.fc43.noarch.rpm
        sha256header: 
            30d8def6494004bbb1b4afb0718ca53a3154c4797d90b6d9a7ca36089095926d
      - name: tmt+link-jira
        version: 1.66.0
        release: 1.fc43
        arch: noarch
        epoch:
        nvra: tmt+link-jira-1.66.0-1.fc43.noarch
        location: 
            https://download.copr.fedorainfracloud.org/results/@teemtee/stable/fedora-43-x86_64/10074834-tmt/tmt+link-jira-1.66.0-1.fc43.noarch.rpm
        sha256header: 
            fdd4a2083c247e7164dae8524fe51b3a78c0a9f83815131983ab61fddb954d75
      - name: tmt+report-junit
        version: 1.66.0
        release: 1.fc43
        arch: noarch
        epoch:
        nvra: tmt+report-junit-1.66.0-1.fc43.noarch
        location: 
            https://download.copr.fedorainfracloud.org/results/@teemtee/stable/fedora-43-x86_64/10074834-tmt/tmt+report-junit-1.66.0-1.fc43.noarch.rpm
        sha256header: 
            0575a191a6e6c2410109ba2343dffba5281c274e68872a8f98f7e5d1b40d77fc
      - name: tmt+provision-mock
        version: 1.66.0
        release: 1.fc43
        arch: noarch
        epoch:
        nvra: tmt+provision-mock-1.66.0-1.fc43.noarch
        location: 
            https://download.copr.fedorainfracloud.org/results/@teemtee/stable/fedora-43-x86_64/10074834-tmt/tmt+provision-mock-1.66.0-1.fc43.noarch.rpm
        sha256header: 
            5f1d00eb8a2a136fd8c6b466509e6bb5fbbab0931abd25ea62f515fd5d96be5a
      - name: tmt+provision-container
        version: 1.66.0
        release: 1.fc43
        arch: noarch
        epoch:
        nvra: tmt+provision-container-1.66.0-1.fc43.noarch
        location: 
            https://download.copr.fedorainfracloud.org/results/@teemtee/stable/fedora-43-x86_64/10074834-tmt/tmt+provision-container-1.66.0-1.fc43.noarch.rpm
        sha256header: 
            6f4b2b2832d17d47ac4b5c86c4a23aeed68d62b200d95cfbbb98360279616a40
      - name: tmt
        version: 1.66.0
        release: 1.fc43
        arch: src
        epoch:
        nvra: tmt-1.66.0-1.fc43.src
        location: 
            https://download.copr.fedorainfracloud.org/results/@teemtee/stable/fedora-43-x86_64/10074834-tmt/tmt-1.66.0-1.fc43.src.rpm
        sha256header: 
            9cf9a314212881a7e8e243877fee73ae04be81fce221fb50845671ed47b683d0

sample-plan.fmf

discover:
    how: fmf
provision:
    how: container
    image: fedora:43
prepare:
    how: artifact
    provide:
      - koji.build:2909847
      - copr.build:10074834:fedora-43-x86_64
execute:
    how: tmt

@AthreyVinay AthreyVinay force-pushed the avinay-refactor-nvr-abstraction branch from 652fa41 to 2eee10e Compare February 10, 2026 11:12
@AthreyVinay AthreyVinay force-pushed the avinay-report-installable-artifacts branch from 77f1de3 to 43bb94d Compare February 10, 2026 11:48
@AthreyVinay AthreyVinay force-pushed the avinay-report-installable-artifacts branch from caebeef to 21bc23b Compare February 10, 2026 16:43
providers_data = []

for provider in providers:
artifacts_list = []
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

artifacts would be enough, it's a plural, it's storing artifacts, _list is superfluous.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Addressed: 495bdd5

'nvra': str(artifact.version),
'location': artifact.location,
}
artifacts_list.append(artifact_dict)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

artifacts = [
    {
        **vars(artifact.version),
        'nvra': str(artifact.version),
        'location': artifact.location,
    }
    for artifact in provider.artifacts
]

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Addressed: 495bdd5

for artifact in provider.artifacts:
artifact_dict = {
**vars(artifact.version),
'nvra': str(artifact.version),
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why not artifact.version.nvra?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Addressed: 495bdd5


for artifact in provider.artifacts:
artifact_dict = {
**vars(artifact.version),
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We would be flattening the Version container into artifact fields, that may end up with a conflict. Can we keep version in its own container?

{
    'version': vars(artifact.version),
    ...
}

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Okay to see version under version?

providers:
  - id: koji.build:2926458
    artifacts:
      - version:
            name: tmt
            version: 1.66.0
            release: 1.fc44
            arch: src
            epoch:
        nvra: tmt-1.66.0-1.fc44.src
        location: 
            https://kojipkgs.fedoraproject.org/packages/tmt/1.66.0/1.fc44/src/tmt-1.66.0-1.fc44.src.rpm

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yep, one is artifact version, the other is the "version" component of RPM NVRA.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Addressed: 495bdd5

@AthreyVinay AthreyVinay force-pushed the avinay-refactor-nvr-abstraction branch 2 times, most recently from a5b4976 to 8b98406 Compare February 12, 2026 09:22
@AthreyVinay AthreyVinay requested a review from happz February 12, 2026 11:26
@AthreyVinay AthreyVinay force-pushed the avinay-report-installable-artifacts branch from 495bdd5 to 2d0e577 Compare February 12, 2026 11:48
@AthreyVinay AthreyVinay force-pushed the avinay-refactor-nvr-abstraction branch from cb25be9 to 9024859 Compare February 12, 2026 12:06
@AthreyVinay AthreyVinay force-pushed the avinay-report-installable-artifacts branch from 1011d6f to 119fbab Compare February 12, 2026 20:14
@AthreyVinay AthreyVinay force-pushed the avinay-refactor-nvr-abstraction branch 2 times, most recently from 646c154 to 4a9f51a Compare February 13, 2026 10:03
@AthreyVinay AthreyVinay force-pushed the avinay-report-installable-artifacts branch from 119fbab to b2cc461 Compare February 13, 2026 12:45
@psss psss modified the milestones: 1.67, 1.68 Feb 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci | full test Pull request is ready for the full test execution plugin | artifact Related to the `prepare/artifact` plugin. step | prepare Stuff related to the prepare step

Projects

Status: review

Development

Successfully merging this pull request may close these issues.

Prepare artifacts list with version details

3 participants