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

Investigate better ways for storing the resources of regression tests #1550

Open
vkarak opened this issue Oct 23, 2020 · 9 comments
Open

Investigate better ways for storing the resources of regression tests #1550

vkarak opened this issue Oct 23, 2020 · 9 comments

Comments

@vkarak
Copy link
Contributor

vkarak commented Oct 23, 2020

The current way of storing resources in an external directory is not good, because the files are untracked. Sharing them is not easy either. We should find a different and more efficient way to do it.

@vkarak
Copy link
Contributor Author

vkarak commented Nov 4, 2020

@teojgo Any ideas on this one?

@teojgo
Copy link
Contributor

teojgo commented Nov 4, 2020

Yes I am looking in artifact management in general

@vkarak
Copy link
Contributor Author

vkarak commented Nov 4, 2020

Whenever you have something more concrete, feel free to share here.

@vkarak vkarak removed this from the ReFrame sprint 20.16 milestone Nov 6, 2020
@vkarak vkarak added this to the ReFrame sprint 21.01 milestone Dec 18, 2020
@vkarak vkarak removed this from the ReFrame sprint 21.01 milestone Jan 21, 2021
@vkarak
Copy link
Contributor Author

vkarak commented Feb 5, 2021

This should also cover storing of test artifacts, which now go to the output directory.

@vkarak vkarak modified the milestone: ReFrame 3.4.2 Feb 8, 2021
@teojgo
Copy link
Contributor

teojgo commented Feb 11, 2021

So my idea from a user point of view would be to be able to specify artifacts at the test level as follows:

self.artifacts = [
  ('artifact1', 'upload', ['my_jfrog', 'my_nexus']),
  ('artifact2', 'download', ['my_jfrog'])
]

In the above case, artifact1 would be uploaded to my_jfrog and my_nexus while artifact2 would be donwloaded from my_jfrog. Each of the my_jfrog and my_nexus would have to be set inside the ReFrame configuration, where they type of the repository/instance should be specified (e.g JFrog Artifactory, Sonatype Nexus etc). From there, ReFrame would know which underlying artifact repository type to use which should be implemented (it would look similar to the various module systems) so the corresponding commands to download/upload the artifacts would be generated.

@vkarak
Copy link
Contributor Author

vkarak commented Feb 12, 2021

What about having functions instead?

self.push_artifact(self.stdout, ['repo1', 'repo2'])
self.pull_artifact('repo', 'foo.txt')
  • The pull_artifact() will always pull the artifacts in the stage directory.
  • These functions would allow repo-specific options to be passed as kwargs.

@vkarak
Copy link
Contributor Author

vkarak commented Feb 12, 2021

Also what about the configuration? How should it look like?

'artifact_repositories': [
    {
        'name': 'my-project-repo',
        'type': 'git',
        'repo': 'https://gitlab.com/group/projectA',
        'options': ['...']
    },
    {
        'name': 'my-other-repo',
        'type': 'jfrog',
        'repo': 'url',
        'options': ['...']
    }
]

@teojgo
Copy link
Contributor

teojgo commented Feb 12, 2021

Yeah, typically gou give the name of the repo to the corresponding cli. So assuming that you have configured first with the corresponding url, you refer to it using a chosen name.

@vkarak vkarak added this to the ReFrame 3.5.0 milestone Feb 18, 2021
@vkarak vkarak modified the milestones: ReFrame 3.5.0, ReFrame 3.5.1 Mar 6, 2021
@jjotero
Copy link
Contributor

jjotero commented Aug 11, 2021

Perhaps solved with #1577

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

No branches or pull requests

3 participants