#1327 Automated pull request builds to send status information to Pagure
Closed: MIGRATED a year ago by nikromen. Opened 4 years ago by churchyard.

When a PR is opened that triggers an automated build, could Copr send a status back to Pagure, so it is shown in the FLAGS section on the right?

png


I don't think this is huge problem, but the projects need to allow concrete copr
projects to set the flags.

Metadata Update from @praiskup:
- Issue tagged with: RFE

4 years ago

Copr already supports Pagure badges, e.g. in pagure.io. The thing is that currently there's a 1:1 mapping between the Copr project and the Pagure project where we can automatically setup badges.

Previously we expected project-specific Pagure tokens. But I tested now that I can use my own personal token to submit badges to pull requests (probably not to pushed commits, this is a src.f.o limitation, but that's not what is this RFE about):
https://src.fedoraproject.org/rpms/argparse-manpage/pull-request/1

Now, the thing is the 1:1 mapping. Upon build change - we decide for the build.copr.scm_repo_url where to submit the badge.

But in the build object we already have unused info scm_object_url. Thus from the build itself, we can deduce where to send Pagure badges (or we can add yet another field, if it is really needed). Therefore, the scm_repo_url in copr object is basically only used to "limit" where Copr can send badges ...

Practically, I think we don't have to "limit" the projects where we attempt to send badges, or? Simply, if you fill in (== give to Copr) your personal token with "flag" permissions, Copr will be able to flag (in your name) all the pull-requests that you also could flag manually.

All the other CIs can flag all Fedora PRs. So I assume any Fedora user can do that. Hence, maybe passing and saving personal secrets is not required, as long as this is done by a general "copr" user.

The thing is that we most likely don't want to flood the badge UI in Pagure with
all the configured Copr builds?

Configuring automatic rebuilds from Pagure is really trivial for any user, there's no need to be in the list of package-specific maintainers (Copr just listens on fedora-messaging events). OTOH, package maintainers (e.g. you, in Python packages) are most probably only interested in badges that you personally configured (e.g. PR in python package triggers several Copr builds nowadays).

Having a requirement for user-specific token or a project-specific token sounds like a good security measure to me. WDYT?

I don't know. Maybe an opt-in would work and we should only care about flooding the Ui when it actually happens?

Interesting idea. Pros is that this would give a lot attention to the
automatic Copr builds. The Cons is that it might be disturbing, and the
badge updates will be done by some "Copr bot" user. I'll discuss this
the next Monday on the team meeting, thanks.

Just take a look at this:

[INFO coprs] Considering pkg package: thrnciar/setuptools-impact-check/argparse-manpage(id=759767), source_json: {'clone_url': 'https://src.fedoraproject.org/rpms/argparse-manpage.git', 'distgit': 'fedora', 'committish': 'rawhide'}
[INFO coprs]     -> accepted.
[INFO coprs]     -> {'isolation': 'default', 'resubmitted_from_id': None, 'scm_object_type': 'pull-request', 'source_json': '{"clone_url": "https://src.fedoraproject.org/forks/praiskup/rpms/argparse-manpage", "distgit": "fedora", "committish": "bc190da3be49e1a1710496bfb708d224ac23c6ac"}', 'bootstrap': None, 'batch_id': None, 'source_status': 4, 'update_callback': '', 'timeout': 18000, 'copr_dir_id': 45563, 'enable_net': False, 'source_type': 'distgit', 'id': 4566379, 'package_id': 759767, 'scm_object_id': 1, 'submitted_on': 1656336766, 'memory_reqs': 2048, 'repos': '', 'scm_object_url': 'https://src.fedoraproject.org/fork/praiskup/rpms/argparse-manpage/c/bc190da3be49e1a1710496bfb708d224ac23c6ac', 'canceled': False, 'fail_type': 0, 'result_dir': '', 'submitted_by': 'https://src.fedoraproject.org/user/praiskup', 'module_id': None, 'user_id': None, 'is_background': True, 'built_packages': None, 'pkg_version': None, 'srpm_url': None, 'src_pkg': None, 'state': 'pending'}
[INFO coprs] Considering pkg package: torsava/automatic-obsoletes/argparse-manpage(id=827210), source_json: {'clone_url': 'https://src.fedoraproject.org/rpms/argparse-manpage.git', 'distgit': 'fedora', 'committish': 'rawhide'}
[INFO coprs]     -> accepted.
[INFO coprs]     -> {'isolation': 'default', 'resubmitted_from_id': None, 'scm_object_type': 'pull-request', 'source_json': '{"clone_url": "https://src.fedoraproject.org/forks/praiskup/rpms/argparse-manpage", "distgit": "fedora", "committish": "bc190da3be49e1a1710496bfb708d224ac23c6ac"}', 'bootstrap': None, 'batch_id': None, 'source_status': 4, 'update_callback': '', 'timeout': 18000, 'copr_dir_id': 49927, 'enable_net': False, 'source_type': 'distgit', 'id': 4566380, 'package_id': 827210, 'scm_object_id': 1, 'submitted_on': 1656336766, 'memory_reqs': 2048, 'repos': '', 'scm_object_url': 'https://src.fedoraproject.org/fork/praiskup/rpms/argparse-manpage/c/bc190da3be49e1a1710496bfb708d224ac23c6ac', 'canceled': False, 'fail_type': 0, 'result_dir': '', 'submitted_by': 'https://src.fedoraproject.org/user/praiskup', 'module_id': None, 'user_id': None, 'is_background': True, 'built_packages': None, 'pkg_version': None, 'srpm_url': None, 'src_pkg': None, 'state': 'pending'}
[INFO coprs] Considering pkg package: thrnciar/python-setuptools-test/argparse-manpage(id=749215), source_json: {'clone_url': 'https://src.fedoraproject.org/rpms/argparse-manpage.git', 'distgit': 'fedora', 'committish': 'rawhide'}
[INFO coprs]     -> accepted.
[INFO coprs]     -> {'isolation': 'default', 'resubmitted_from_id': None, 'scm_object_type': 'pull-request', 'source_json': '{"clone_url": "https://src.fedoraproject.org/forks/praiskup/rpms/argparse-manpage", "distgit": "fedora", "committish": "bc190da3be49e1a1710496bfb708d224ac23c6ac"}', 'bootstrap': None, 'batch_id': None, 'source_status': 4, 'update_callback': '', 'timeout': 18000, 'copr_dir_id': 45564, 'enable_net': False, 'source_type': 'distgit', 'id': 4566381, 'package_id': 749215, 'scm_object_id': 1, 'submitted_on': 1656336766, 'memory_reqs': 2048, 'repos': '', 'scm_object_url': 'https://src.fedoraproject.org/fork/praiskup/rpms/argparse-manpage/c/bc190da3be49e1a1710496bfb708d224ac23c6ac', 'canceled': False, 'fail_type': 0, 'result_dir': '', 'submitted_by': 'https://src.fedoraproject.org/user/praiskup', 'module_id': None, 'user_id': None, 'is_background': True, 'built_packages': None, 'pkg_version': None, 'srpm_url': None, 'src_pkg': None, 'state': 'pending'}
[INFO coprs] Considering pkg package: @python/python3.11/argparse-manpage(id=783842), source_json: {'clone_url': 'https://src.fedoraproject.org/rpms/argparse-manpage.git', 'distgit': 'fedora', 'committish': 'rawhide'}
[INFO coprs]     -> accepted.
[INFO coprs]     -> {'isolation': 'default', 'resubmitted_from_id': None, 'scm_object_type': 'pull-request', 'source_json': '{"clone_url": "https://src.fedoraproject.org/forks/praiskup/rpms/argparse-manpage", "distgit": "fedora", "committish": "bc190da3be49e1a1710496bfb708d224ac23c6ac"}', 'bootstrap': None, 'batch_id': None, 'source_status': 4, 'update_callback': '', 'timeout': 18000, 'copr_dir_id': 47550, 'enable_net': False, 'source_type': 'distgit', 'id': 4566382, 'package_id': 783842, 'scm_object_id': 1, 'submitted_on': 1656336766, 'memory_reqs': 2048, 'repos': 'http://kojipkgs.fedoraproject.org/repos/rawhide/latest/$basearch/', 'scm_object_url': 'https://src.fedoraproject.org/fork/praiskup/rpms/argparse-manpage/c/bc190da3be49e1a1710496bfb708d224ac23c6ac', 'canceled': False, 'fail_type': 0, 'result_dir': '', 'submitted_by': 'https://src.fedoraproject.org/user/praiskup', 'module_id': None, 'user_id': None, 'is_background': True, 'built_packages': None, 'pkg_version': None, 'srpm_url': None, 'src_pkg': None, 'state': 'pending'}
[INFO coprs] Considering pkg package: churchyard/pytest-7/argparse-manpage(id=853131), source_json: {'clone_url': 'https://src.fedoraproject.org/rpms/argparse-manpage.git', 'distgit': 'fedora', 'committish': 'rawhide'}
[INFO coprs]     -> accepted.
[INFO coprs]     -> {'isolation': 'default', 'resubmitted_from_id': None, 'scm_object_type': 'pull-request', 'source_json': '{"clone_url": "https://src.fedoraproject.org/forks/praiskup/rpms/argparse-manpage", "distgit": "fedora", "committish": "bc190da3be49e1a1710496bfb708d224ac23c6ac"}', 'bootstrap': None, 'batch_id': None, 'source_status': 4, 'update_callback': '', 'timeout': 18000, 'copr_dir_id': 50895, 'enable_net': False, 'source_type': 'distgit', 'id': 4566383, 'package_id': 853131, 'scm_object_id': 1, 'submitted_on': 1656336766, 'memory_reqs': 2048, 'repos': 'http://kojipkgs.fedoraproject.org/repos/rawhide/latest/$basearch/', 'scm_object_url': 'https://src.fedoraproject.org/fork/praiskup/rpms/argparse-manpage/c/bc190da3be49e1a1710496bfb708d224ac23c6ac', 'canceled': False, 'fail_type': 0, 'result_dir': '', 'submitted_by': 'https://src.fedoraproject.org/user/praiskup', 'module_id': None, 'user_id': None, 'is_background': True, 'built_packages': None, 'pkg_version': None, 'srpm_url': None, 'src_pkg': None, 'state': 'pending'}
[INFO coprs] Considering pkg package: churchyard/pytest-6/argparse-manpage(id=903539), source_json: {'clone_url': 'https://src.fedoraproject.org/rpms/argparse-manpage.git', 'distgit': 'fedora', 'committish': 'rawhide'}
[INFO coprs]     -> accepted.
[INFO coprs]     -> {'isolation': 'default', 'resubmitted_from_id': None, 'scm_object_type': 'pull-request', 'source_json': '{"clone_url": "https://src.fedoraproject.org/forks/praiskup/rpms/argparse-manpage", "distgit": "fedora", "committish": "bc190da3be49e1a1710496bfb708d224ac23c6ac"}', 'bootstrap': None, 'batch_id': None, 'source_status': 4, 'update_callback': '', 'timeout': 18000, 'copr_dir_id': 50896, 'enable_net': False, 'source_type': 'distgit', 'id': 4566384, 'package_id': 903539, 'scm_object_id': 1, 'submitted_on': 1656336766, 'memory_reqs': 2048, 'repos': 'http://kojipkgs.fedoraproject.org/repos/rawhide/latest/$basearch/', 'scm_object_url': 'https://src.fedoraproject.org/fork/praiskup/rpms/argparse-manpage/c/bc190da3be49e1a1710496bfb708d224ac23c6ac', 'canceled': False, 'fail_type': 0, 'result_dir': '', 'submitted_by': 'https://src.fedoraproject.org/user/praiskup', 'module_id': None, 'user_id': None, 'is_background': True, 'built_packages': None, 'pkg_version': None, 'srpm_url': None, 'src_pkg': None, 'state': 'pending'}
[INFO coprs] Considering pkg package: @python/python3.11-control/argparse-manpage(id=1531228), source_json: {'clone_url': 'https://src.fedoraproject.org/rpms/argparse-manpage.git', 'distgit': 'fedora', 'committish': 'rawhide'}
[INFO coprs]     -> accepted.
[INFO coprs]     -> {'isolation': 'default', 'resubmitted_from_id': None, 'scm_object_type': 'pull-request', 'source_json': '{"clone_url": "https://src.fedoraproject.org/forks/praiskup/rpms/argparse-manpage", "distgit": "fedora", "committish": "bc190da3be49e1a1710496bfb708d224ac23c6ac"}', 'bootstrap': None, 'batch_id': None, 'source_status': 4, 'update_callback': '', 'timeout': 18000, 'copr_dir_id': 61286, 'enable_net': False, 'source_type': 'distgit', 'id': 4566385, 'package_id': 1531228, 'scm_object_id': 1, 'submitted_on': 1656336766, 'memory_reqs': 2048, 'repos': 'http://kojipkgs.fedoraproject.org/repos/rawhide/latest/$basearch/', 'scm_object_url': 'https://src.fedoraproject.org/fork/praiskup/rpms/argparse-manpage/c/bc190da3be49e1a1710496bfb708d224ac23c6ac', 'canceled': False, 'fail_type': 0, 'result_dir': '', 'submitted_by': 'https://src.fedoraproject.org/user/praiskup', 'module_id': None, 'user_id': None, 'is_background': True, 'built_packages': None, 'pkg_version': None, 'srpm_url': None, 'src_pkg': None, 'state': 'pending'}
[INFO coprs] Considering pkg package: cstratak/setuptools-62.3.2/argparse-manpage(id=1547872), source_json: {'clone_url': 'https://src.fedoraproject.org/rpms/argparse-manpage.git', 'distgit': 'fedora', 'committish': 'rawhide'}
[INFO coprs]     -> accepted.
[INFO coprs]     -> {'isolation': 'default', 'resubmitted_from_id': None, 'scm_object_type': 'pull-request', 'source_json': '{"clone_url": "https://src.fedoraproject.org/forks/praiskup/rpms/argparse-manpage", "distgit": "fedora", "committish": "bc190da3be49e1a1710496bfb708d224ac23c6ac"}', 'bootstrap': None, 'batch_id': None, 'source_status': 4, 'update_callback': '', 'timeout': 18000, 'copr_dir_id': 62049, 'enable_net': False, 'source_type': 'distgit', 'id': 4566386, 'pac

Eevery single PR update triggers 8 builds (including one that I just
configured. If this is indeed OK from your perspective, we should at
least put the "project name" into the badge string. Currently all the
badges would look like duplicates to each other.

8 builds are quite fine. I was afraid you are talking about hundreds.

we should at least put the "project name" into the badge string. Currently all the badges would look like duplicates to each other.

Totally we should do that, without that, the badges would be confusing indeed.

Metadata Update from @nikromen:
- Issue close_status updated to: MIGRATED
- Issue status updated to: Closed (was: Open)

a year ago

Login to comment on this ticket.

Metadata
Attachments 1
png
Attached 4 years ago View Comment